New Article: ARM Goes 64-bit

Article: ARM Goes 64-bit
By: EBFE (x.delete@this.y.com), November 26, 2012 12:24 am
Room: Moderated Discussions
EduardoS (no.delete@this.spam.com) on November 23, 2012 10:09 am wrote:
> Wilco (Wilco.Dijkstra.delete@this.ntlworld.com) on November 21, 2012 7:44 am wrote:
> > Install-time compilation would be far better than using a JIT indeed. But you still may not have
> > enough memory/performance for link-time whole program optimization with profile feedback.
>
> On desktops the time consuming compilation is done at background,
> in phones it can be done during recharge time, no?
>
> Oh, and with the most up to date and relevant profile feedback.
>
Background != Free
App has to run slow interpreter/baseline compiler.
Background compilation has a large working set and seriouly competes for LLC.

>
> Every allocator use more memory than strictly necessary (later about C++), GC does
> the job of moving data toghether from time to time wich negates fragmentation.
>
> > Also the much higher memory allocation rate and resulting collections are bad for locality.
>
> Allocations are cheap, collecting short lived objects is cheap too.
>
No, collecting short lived objects is expensive.
Copying is expensive.
To make copying possible is also costy.

> > Concurrent GC has even larger overheads. It stops threads for shorter periods but stops them more often, so
> > takes far longer overall. And then we haven't considered the far higher overheads on the generated code.
>
> I don't know about what GC you are talking...
>
> The concurrent GC I have in mind originated from the non-concurrent GC, the most recent generation
> collections still blocking wich the full GC running in background until it needs blocking, so
> there is the same numbers of full stops but the most time consuming stop is shorter.
>
> Yes, it uses more resources, but on s single-threaded application
> such resources does exist, and wouldn't be used in another way.
>
However it does hurt throughput.

> > No, no space is wasted, unlike GC which requires descriptors for every object.
>
> Descriptors aren't strictly necessary and can be encoded in the vtable pointer, the
> reason many VMs doesn't omit the descriptor is because it is not that expensive.
>
> But C++ allocators waste space, for example, on Windows, before LFH deallocated objects left holes
> in the heap, some wich were left unused for lack of a suitable object, a problem called "fragmentation"
> and it is accumalative, the longer the app runs the worse it gets, see the wasted space? Locality
> isn't good either, objects go were there is space, not near related objects.
>
> LFH allocates 64k for every object size rounded to lowest higher power of 2, wich, by definition waste
> the space between that power of 2 and the actual object size, and, if there is not enough objects of
> a given size to fill the segment, it also waste the segment unused space. Locality suffers as well
> since objects are placed by it's size and related objects may end very far from each other.
>
Allocators waste space.
VM allocators have no magic over C++ allocators, except that you can't customize.

> > Since when is a memory access cheap? Every unnecesary instruction has a cost.
>
> Sure it have a cost, a non-blocking load will consume one decoder, one port
> for one cycle and one slot in a modern processor, wich will likely pass without
> being noticed, so it is a small cost, that's why I called it cheap.
>
Such small cost accumalates and it results in visible penalty.

> > The barriers and other checks for concurrent GC or multithreaded access
> > to fields are not exactly zero-cost and block many optimizations.
>
> Maybe that's why the "volatile" keyword exists?
>
> Anyway, MS doesn't implement the weak memory model that the C# or
> C++ specs allow, many applications wouldn't work if they did.
>
Totally irrelevant.

> > Wrong. Exceptions can only happen explicitly with throw in C++.
>
> Or when the program hits an undefined behaviour...
>
> And there are quite a few undefined behaviours in C++ spec.
>
> BTW, I am not limiting myself to C++ exceptions, any hardware exception is valid, VMs may handle
> exceptions by traping the hardware exceptions, if there is no try...catch block no need to
> care about order or barries, the program will crash anyway... Like it is done in C++.
>
So you elaborated that VM has overhead because it has to take more care than C++.

> > The problem is not just the ordering, but the fact that more operations can cause exceptions. That alone
> > creates a lot of overhead as you need to model flows from
> > every possible exception to all possible exception
> > handlers. Local variable values need to be preserved for example, severely limiting optimizations.
>
> If there is a registered handler...
>
How can you know if there is a registered handler?

> And the implementation can, for example, let the heavy lifting of restoring state for
> the exception handler, giving more freedom for optimizations in the normal flow.
>
> > The performance cost is high if you happen to use arrays a lot.
>
> And if the optimizer fails to remove the redundant checks.
>
C++ needs 0 check.
The optimizer usually has to leave some check uneliminated unhoisted.
And even redundant checks is diffcult to eliminate.
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
New Article: ARM Goes 64-bitDavid Kanter2012/08/13 11:04 PM
  New Article: ARM Goes 64-bitnone2012/08/13 11:44 PM
    New Article: ARM Goes 64-bitDavid Kanter2012/08/14 12:04 AM
    MIPS MT-ASEPaul A. Clayton2012/08/14 08:01 AM
      MONITOR/MWAITEduardoS2012/08/14 09:08 AM
        MWAIT not specifically MTPaul A. Clayton2012/08/14 09:36 AM
          MWAIT not specifically MTEduardoS2012/08/15 02:16 PM
        MONITOR/MWAITanonymou52012/08/14 10:07 AM
          MONITOR/MWAITEduardoS2012/08/15 02:20 PM
      MIPS MT-ASErwessel2012/08/14 09:14 AM
  New Article: ARM Goes 64-bitSHK2012/08/14 01:01 AM
  New Article: ARM Goes 64-bitanon2012/08/14 01:37 AM
    New Article: ARM Goes 64-bitRichard Cownie2012/08/14 02:57 AM
      New Article: ARM Goes 64-bitanon2012/08/14 03:29 AM
      New Article: ARM Goes 64-bitnone2012/08/14 03:44 AM
        New Article: ARM Goes 64-bitanon2012/08/14 04:28 AM
          New Article: ARM Goes 64-bitanon2012/08/14 04:32 AM
            New Article: ARM Goes 64-bitEduardoS2012/08/14 05:06 AM
          New Article: ARM Goes 64-bitnone2012/08/14 04:40 AM
            AArch64 select better than cmovPaul A. Clayton2012/08/14 05:08 AM
            New Article: ARM Goes 64-bitanon2012/08/14 05:12 AM
              New Article: ARM Goes 64-bitnone2012/08/14 05:25 AM
                Predicated ld/store are usefulPaul A. Clayton2012/08/14 05:48 AM
                  Predicated ld/store are usefulnone2012/08/14 05:56 AM
                    Predicated ld/store are usefulanon2012/08/14 06:07 AM
                    Predicated stores might not be that badPaul A. Clayton2012/08/14 06:27 AM
                      Predicated stores might not be that badDavid Kanter2012/08/15 12:14 AM
                        Predicated stores might not be that badMichael S2012/08/15 10:41 AM
                        Predicated stores might not be that badR Byron2012/08/17 03:09 AM
                New Article: ARM Goes 64-bitanon2012/08/14 05:54 AM
                  New Article: ARM Goes 64-bitnone2012/08/14 06:04 AM
                    New Article: ARM Goes 64-bitanon2012/08/14 06:43 AM
          New Article: ARM Goes 64-bitEduardoS2012/08/14 05:07 AM
            New Article: ARM Goes 64-bitanon2012/08/14 05:20 AM
              New Article: ARM Goes 64-bitnone2012/08/14 05:29 AM
                New Article: ARM Goes 64-bitanon2012/08/14 06:00 AM
            New Article: ARM Goes 64-bitMichael S2012/08/14 02:43 PM
        New Article: ARM Goes 64-bitRichard Cownie2012/08/14 05:53 AM
          OT: Conrad's "Youth"Richard Cownie2012/08/14 06:20 AM
      New Article: ARM Goes 64-bitEduardoS2012/08/14 05:04 AM
        New Article: ARM Goes 64-bitmpx2012/08/14 07:59 AM
          New Article: ARM Goes 64-bitAntti-Ville Tuunainen2012/08/14 08:16 AM
        New Article: ARM Goes 64-bitanonymou52012/08/14 10:03 AM
          New Article: ARM Goes 64-bitname992012/11/17 02:31 PM
            Microarchitecting a counter registerPaul A. Clayton2012/11/17 06:37 PM
    New Article: ARM Goes 64-bitbakaneko2012/08/14 03:21 AM
      New Article: ARM Goes 64-bitname992012/11/17 02:40 PM
        New Article: ARM Goes 64-bitEduardoS2012/11/17 03:52 PM
        New Article: ARM Goes 64-bitDoug S2012/11/17 04:48 PM
        New Article: ARM Goes 64-bitbakaneko2012/11/18 04:40 PM
          New Article: ARM Goes 64-bitWilco2012/11/19 06:59 AM
            New Article: ARM Goes 64-bitEduardoS2012/11/19 07:23 AM
              New Article: ARM Goes 64-bitWilco2012/11/19 08:31 AM
                Downloading µarch-specific binaries?Paul A. Clayton2012/11/19 10:21 AM
                New Article: ARM Goes 64-bitEduardoS2012/11/19 10:41 AM
                  New Article: ARM Goes 64-bitWilco2012/11/21 06:44 AM
                    JIT vs. static compilation (Was: New Article: ARM Goes 64-bit)VMguy2012/11/22 02:21 AM
                      JIT vs. static compilation (Was: New Article: ARM Goes 64-bit)David Kanter2012/11/22 11:12 AM
                        JIT vs. static compilation (Was: New Article: ARM Goes 64-bit)Gabriele Svelto2012/11/23 02:50 AM
                    New Article: ARM Goes 64-bitEduardoS2012/11/23 09:09 AM
                      New Article: ARM Goes 64-bitEBFE2012/11/26 12:24 AM
                        New Article: ARM Goes 64-bitGabriele Svelto2012/11/26 02:33 AM
                          New Article: ARM Goes 64-bitEBFE2012/11/27 10:17 PM
                            New Article: ARM Goes 64-bitGabriele Svelto2012/11/28 01:32 AM
                        New Article: ARM Goes 64-bitEduardoS2012/11/26 11:16 AM
                          New Article: ARM Goes 64-bitEBFE2012/11/27 11:33 PM
                            New Article: ARM Goes 64-bitEduardoS2012/11/28 04:53 AM
                              New Article: ARM Goes 64-bitMichael S2012/11/28 05:15 AM
                                New Article: ARM Goes 64-bitEduardoS2012/11/28 06:33 AM
                                  New Article: ARM Goes 64-bitMichael S2012/11/28 08:16 AM
                                    New Article: ARM Goes 64-bitEduardoS2012/11/28 08:53 AM
                                    New Article: ARM Goes 64-bitEugene Nalimov2012/11/28 04:58 PM
                                      Amazing!EduardoS2012/11/28 06:25 PM
                                        Amazing! (non-italic response)EduardoS2012/11/28 06:25 PM
                                        Amazing!EBFE2012/11/28 07:20 PM
                                          Undefined behaviour doubles downEduardoS2012/11/28 08:10 PM
                              New Article: ARM Goes 64-bitEBFE2012/11/28 06:54 PM
                                New Article: ARM Goes 64-bitEduardoS2012/11/28 08:21 PM
                Have you heard of Transmeta?David Kanter2012/11/19 02:47 PM
            New Article: ARM Goes 64-bitbakaneko2012/11/19 08:08 AM
            New Article: ARM Goes 64-bitDavid Kanter2012/11/19 02:40 PM
              Semantic Dictionary EncodingRay2012/11/19 09:37 PM
              New Article: ARM Goes 64-bitRohit2012/11/20 03:48 PM
                New Article: ARM Goes 64-bitDavid Kanter2012/11/20 10:07 PM
                  New Article: ARM Goes 64-bitWilco2012/11/21 05:41 AM
                    New Article: ARM Goes 64-bitDavid Kanter2012/11/21 09:12 AM
                    A JIT exampleMark Roulo2012/11/21 09:30 AM
                      A JIT exampleWilco2012/11/21 06:04 PM
                        A JIT examplerwessel2012/11/21 08:05 PM
                        A JIT exampleGabriele Svelto2012/11/23 02:53 AM
                        A JIT exampleEduardoS2012/11/23 09:13 AM
                          A JIT exampleWilco2012/11/23 12:41 PM
                            A JIT exampleEduardoS2012/11/23 01:06 PM
                            A JIT exampleGabriele Svelto2012/11/23 03:09 PM
                              A JIT exampleSymmetry2012/11/26 04:58 AM
            New Article: ARM Goes 64-bitRay2012/11/19 09:27 PM
    New Article: ARM Goes 64-bitDavid Kanter2012/08/14 08:11 AM
  v7-M is Thumb-onlyPaul A. Clayton2012/08/14 05:58 AM
  Minor suggested correctionPaul A. Clayton2012/08/14 07:33 AM
    Minor suggested correctionanon2012/08/14 07:57 AM
  New Article: ARM Goes 64-bitExophase2012/08/14 07:33 AM
    New Article: ARM Goes 64-bitDavid Kanter2012/08/14 08:16 AM
      New Article: ARM Goes 64-bitjigal2012/08/15 12:49 PM
  Correction re ARM and BBC MicroPaul2012/08/14 07:59 PM
    Correction re ARM and BBC MicroPer Hesselgren2012/08/15 02:27 AM
  Memory BW so lowPer Hesselgren2012/08/15 02:14 AM
    Memory BW so lownone2012/08/15 10:16 AM
  New Article: ARM Goes 64-bitdado2012/08/15 09:25 AM
  Number of GPRsKenneth Jonsson2012/08/16 01:35 PM
    Number of GPRsExophase2012/08/16 01:52 PM
      Number of GPRsKenneth Jonsson2012/08/17 01:41 AM
        Ooops, missing link...Kenneth Jonsson2012/08/17 01:44 AM
        64-bit pointers eat some performancePaul A. Clayton2012/08/17 05:19 AM
          64-bit pointers eat some performancebakaneko2012/08/17 07:37 AM
            Brute force seems to workPaul A. Clayton2012/08/17 09:08 AM
              Brute force seems to workbakaneko2012/08/17 10:15 AM
          64-bit pointers eat some performanceRichard Cownie2012/08/17 07:46 AM
            Pointer compression is atypicalPaul A. Clayton2012/08/17 09:43 AM
              Pointer compression is atypicalRichard Cownie2012/08/17 11:57 AM
                Pointer compression is atypicalHoward Chu2012/08/22 09:17 PM
                  Pointer compression is atypicalRichard Cownie2012/08/23 03:48 AM
                    Pointer compression is atypicalHoward Chu2012/08/23 05:51 AM
              Pointer compression is atypicalWilco2012/08/17 01:41 PM
                Pointer compression is atypicalRichard Cownie2012/08/17 03:13 PM
                  Pointer compression is atypicalRicardo B2012/08/19 09:44 AM
                  Pointer compression is atypicalHoward Chu2012/08/22 09:08 PM
                    Unified libraries?Paul A. Clayton2012/08/23 06:49 AM
                    Pointer compression is atypicalRichard Cownie2012/08/23 07:44 AM
                      Pointer compression is atypicalHoward Chu2012/08/23 04:17 PM
                        Pointer compression is atypicalanon2012/08/23 07:15 PM
                          Pointer compression is atypicalHoward Chu2012/08/23 08:33 PM
            64-bit pointers eat some performanceFoo_2012/08/18 11:09 AM
              64-bit pointers eat some performanceRichard Cownie2012/08/18 04:25 PM
                64-bit pointers eat some performanceRichard Cownie2012/08/18 04:32 PM
            Page-related benefit of small pointersPaul A. Clayton2012/08/23 07:36 AM
        Number of GPRsWilco2012/08/17 05:31 AM
          Number of GPRsKenneth Jonsson2012/08/17 10:54 AM
            Number of GPRsExophase2012/08/17 11:44 AM
              Number of GPRsKenneth Jonsson2012/08/17 12:22 PM
                Number of GPRsWilco2012/08/17 01:53 PM
        What about dynamic utilization?Exophase2012/08/17 08:30 AM
          Compiler vs. assembly aliasing knowledge?Paul A. Clayton2012/08/17 09:20 AM
            Compiler vs. assembly aliasing knowledge?Exophase2012/08/17 10:09 AM
            Compiler vs. assembly aliasing knowledge?anon2012/08/18 01:23 AM
              Compiler vs. assembly aliasing knowledge?Ricardo B2012/08/19 10:02 AM
                Compiler vs. assembly aliasing knowledge?anon2012/08/19 05:07 PM
                  Compiler vs. assembly aliasing knowledge?Ricardo B2012/08/19 06:26 PM
                    Compiler vs. assembly aliasing knowledge?anon2012/08/19 09:03 PM
                      Compiler vs. assembly aliasing knowledge?anon2012/08/20 12:59 AM
        Number of GPRsDavid Kanter2012/08/17 11:46 AM
          RAT issues as part of reason 1Paul A. Clayton2012/08/17 01:18 PM
        Number of GPRsname992012/11/17 05:37 PM
          Large ARFs increase renaming costPaul A. Clayton2012/11/17 08:23 PM
    Number of GPRsDavid Kanter2012/08/16 02:31 PM
    Number of GPRsRichard Cownie2012/08/16 04:17 PM
    32 GPRs ~2-3%Paul A. Clayton2012/08/16 05:27 PM
      Oops, Message-ID: aaed6e38-c7bd-467e-ba41-f40cf1020e5e@googlegroups.com (NT)Paul A. Clayton2012/08/16 05:29 PM
      32 GPRs ~2-3%Exophase2012/08/16 09:06 PM
        R31 as SP/zero is kind of neat (NT)Paul A. Clayton2012/08/17 05:23 AM
        32 GPRs ~2-3%rwessel2012/08/17 07:24 AM
          32 GPRs ~2-3%Exophase2012/08/17 08:16 AM
            32 GPRs ~2-3%Max2012/08/17 03:19 PM
      32 GPRs ~2-3%name992012/11/17 06:43 PM
    Number of GPRsmpx2012/08/17 12:11 AM
      Latency and powerPaul A. Clayton2012/08/17 05:54 AM
    Number of GPRsbakaneko2012/08/17 02:09 AM
  New Article: ARM Goes 64-bitSteve2012/08/17 01:12 PM
    New Article: ARM Goes 64-bitDavid Kanter2012/08/19 11:42 AM
      New Article: ARM Goes 64-bitDoug S2012/08/19 01:02 PM
      New Article: ARM Goes 64-bitAnon2012/08/19 06:16 PM
      New Article: ARM Goes 64-bitSteve2012/08/30 06:51 AM
  Scalar vs Vector registersRobert David Graham2012/08/19 04:19 PM
    Scalar vs Vector registersDavid Kanter2012/08/19 04:29 PM
  New Article: ARM Goes 64-bitBaserock ARM servers2012/08/21 03:13 PM
    Baserock ARM serversSysanon2012/08/21 03:14 PM
    A-15 virtualization and LPAE?Paul A. Clayton2012/08/21 05:13 PM
      A-15 virtualization and LPAE?Anon2012/08/21 06:13 PM
        Half-depth advantages?Paul A. Clayton2012/08/21 07:42 PM
          Half-depth advantages?Anon2012/08/22 02:33 PM
            Thanks for the information (NT)Paul A. Clayton2012/08/22 03:04 PM
      A-15 virtualization and LPAE?C. Ladisch2012/08/23 10:12 AM
        A-15 virtualization and LPAE?Paul2012/08/23 02:17 PM
        Excessive pessimismPaul A. Clayton2012/08/23 03:08 PM
          Excessive pessimismDavid Kanter2012/08/23 04:05 PM
    New Article: ARM Goes 64-bitMichael S2012/08/22 06:12 AM
      BTW, Baserock==product, Codethink==company (NT)Paul A. Clayton2012/08/22 07:56 AM
  New Article: ARM Goes 64-bitReinoud Zandijk2012/08/21 10:27 PM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell green?