Slashdot Mirror


iPhone 5 A6 SoC Teardown: ARM Cores Appear To Be Laid Out By Hand

MrSeb writes "Reverse engineering company Chipworks has completed its initial microscopic analysis of Apple's new A6 SoC (found in the iPhone 5), and there are some rather interesting findings. First, there's a tri-core GPU — and then there's a custom, hand-made dual-core ARM CPU. Hand-made chips are very rare nowadays, with Chipworks reporting that it hasn't seen a non-Intel hand-made chip for 'years.' The advantage of hand-drawn chips is that they can be more efficient and capable of higher clock speeds — but they take a lot longer (and cost a lot more) to design. Perhaps this is finally the answer to what PA Semi's engineers have been doing at Apple since the company was acquired back in 2008..." Pretty picture of the chip after using an Ion Beam to remove the casing. The question I have is how it's less expensive (in the long run) to lay a chip out by hand once instead of improving your VLSI layout software forever. NP classification notwithstanding.

178 comments

  1. Carpal tunnel by Anonymous Coward · · Score: 5, Funny

    That must be a very fine tipped resist pen...

    1. Re:Carpal tunnel by Anonymous Coward · · Score: 5, Funny

      Yeah I bet their ARMs are tired after making that.

    2. Re:Carpal tunnel by 93+Escort+Wagon · · Score: 1

      Wish I had mod points...

      Although I'm not sure which way I'd mod you - I laughed and groaned at the same time.

      --
      #DeleteChrome
    3. Re:Carpal tunnel by MarkRose · · Score: 1

      These stories always have an armful of puns.

      --
      Be relentless!
    4. Re:Carpal tunnel by grcumb · · Score: 5, Funny

      Wish I had mod points...

      Although I'm not sure which way I'd mod you - I laughed and groaned at the same time.

      Mod down. Clearly GP is doing more ARM than good.

      --
      Crumb's Corollary: Never bring a knife to a bun fight.
    5. Re:Carpal tunnel by mjwx · · Score: 4, Funny

      Wish I had mod points...

      Although I'm not sure which way I'd mod you - I laughed and groaned at the same time.

      Mod down. Clearly GP is doing more ARM than good.

      Dont you think that's a bit of a RISC

      --
      Calling someone a "hater" only means you can not rationally rebut their argument.
    6. Re:Carpal tunnel by UngodAus · · Score: 1

      At least it showed that they weren't all Thumbs.

    7. Re:Carpal tunnel by UnresolvedExternal · · Score: 5, Funny

      Nop

    8. Re:Carpal tunnel by Anonymous Coward · · Score: 0

      That's always the RISC you take.

    9. Re:Carpal tunnel by Anonymous Coward · · Score: 0

      They then moved on the the iMaps group - which explains a lot.

    10. Re:Carpal tunnel by amirulbahr · · Score: 1

      Think you're a bright SPARC do ya?

  2. Costs by girlintraining · · Score: 5, Informative

    The question I have is how it's less expensive (in the long run) to lay a chip out by hand once instead of improving your VLSI layout software forever. NP classification notwithstanding.

    Coding in assembly still remains a superior method of squeezing extra performance out of software. It's just that few people do it because compilers are "good enough" at guessing which optimizations to apply, and where, and usually development costs are the primary concern for software development. But when you're shipping hundreds of millions of units of hardware, and you're trying to pack as much processing power in a small and efficient form factor, you don't go with VLSI for the same reason you don't go with a compiler for realtime code: You need that extra few percent.

    --
    #fuckbeta #iamslashdot #dicemustdie
    1. Re:Costs by pclminion · · Score: 2

      Coding in assembly still remains a superior method of squeezing extra performance out of software.

      I'd say it's more important to be able to read assembly than to write it. I do a lot of performance optimization of C++ code, and mostly it involves looking at what the compiler generates and figuring out how to change the source code to produce better output from the compiler. Judicious use of const, restrict and inline keywords can make a huge difference, as can loop restructuring (although the compiler can do a fair amount of loop restructuring itself, sometimes it needs help).

      It's been a long time since I saw compiler output that made me go "WTF, is this compiler dumb or something?" In fact, it tends to figure things out that are pretty amazing (to me, at least). I once saw a compiler eliminate an entire lookup table which it determined wasn't necessary, an impressive feat of compile-time execution modeling.

    2. Re:Costs by Anonymous Coward · · Score: 1

      Coding in assembly doesn't always beat the compiler. I learned this in '90 or '91. I'd been doing both C and assembly for 10 years. We were on a Nat Semi 16032 (or 32016, they changed names). Had a tight loop that had to process a scanned line of text into FAX in a hard limit of a few ms, and succeeded about 80% of the time. I spent a month trying to both write my own assembly, and tweak the compiler's output. I never came close to what the compiler was spitting out.

      I don't remember how we fixed it, but coding that loop in assembler wasn't the answer.

    3. Re:Costs by SageMusings · · Score: 4, Funny

      You need that extra few percent.

      That's why our compilers go to 11.

      --
      -- Posted from my parent's basement
    4. Re:Costs by Anonymous Coward · · Score: 0

      I once saw a compiler drinking a Pina Colada at Trader Vic's.

      It's hair was perfect.

    5. Re:Costs by tlhIngan · · Score: 2

      But when you're shipping hundreds of millions of units of hardware, and you're trying to pack as much processing power in a small and efficient form factor, you don't go with VLSI for the same reason you don't go with a compiler for realtime code: You need that extra few percent.

      The problem with hand-tuned assembly is the same as hand laying out transistors - it gets complicated quickly and if you're not careful, you end up with a horrible mess.

      You can argue if you're shipping millions of copies of things, you should hand-tune the code in assembly so it runs the absolute fastest. But there are two costs - programmer timer (development costs) and time to market. There's always one more optimization that can be done. Perfection is the enemy of good.

      With VLSI, the same thing applies - you can always reroute/resize transistors and wiring around to squeeze out some more performance out of it. The problem though is the more hand routing you do, the greater the chance of making an error, and often you can miss some transistors or logic. Most of it can be caught during schematic checks, but there's a very good chance of missing out logic blocks in the schematics and ending up with bugs. Or you can miss an extra body contact and end up with very odd bugs.

      Then there's trying to fit it in the floorplan - and there's always a wire that won't fit in the space. You're dealing with probably close to a million transistors, after all.

    6. Re:Costs by AaronW · · Score: 1

      I agree. I often see output from the compiler and am amazed. It's rare now for me to find cases where I can do better than the compiler. It used to be the case where hand-tuned assembly made a lot of sense, but that's no longer the case, especially if you give hints to the compiler about things like likely/unlikely branch conditions in your code.

      I worked on a Linux 802.11n wireless driver and was able to reduce CPU usage by 10% by adding likely/unlikely wrappers in the data path comparisons and analyzed what the compiler did with that info.

      --
      This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
    7. Re:Costs by Anonymous Coward · · Score: 0

      > It's been a long time since I saw compiler output that made me go "WTF, is this compiler dumb or something?"

      Then you can't have looked at the compiler output from gcc of doing a 32*32 multiply on an 8 bit CPU for example.
      Hint: 80% of the code consists of multiplying with a constant 0 and then adding the result of that.
      Even 64*64 multiply on 32-bit x86 is just ridiculously horrible.

    8. Re:Costs by TheSkepticalOptimist · · Score: 1

      If I had a developer working on my team coding apps in assembly they would be fired on the spot. I don't need developers wasting time and money trying to shaving nano-seconds on code execution. Any developer that does not understand how moot it is to toil in machine code in light of significantly improved compiler logic and CPU execution optimizations is not worth their salt as a developer.

      Yes, fine, need some high performance math algorithmic to churn away on terabytes of data that could shave hours or days of execution, by all means code as efficiently as you possibly can. However general application development has long since not required a single line of assembly code.

      I tire of the argument of assembly > C > C++ > C#/VB/Java etc because with today's CPU performance its moot to toil in low level code to achieve nothing more then smug validation as a cave geek.

      --
      I haven't thought of anything clever to put here, but then again most of you haven't either.
  3. contrary to popular opinion... by Anonymous Coward · · Score: 0

    ...companies thinking in the long run prefer an intelligent or well-trained workforce to automation and minimum wage.

    And before you retort, no - Foxconn workers are far above "minimum wage" for China.

  4. Site is down by Anonymous Coward · · Score: 0

    Site is already down due to the Slashdot effect.

    1. Re:Site is down by busyqth · · Score: 0, Redundant

      Site is already down due to the Slashdot effect.

      Don't kid yourself. The Washington Post linked to it too.

    2. Re:Site is down by ThatsMyNick · · Score: 1

      It is still called the Slashdot effect though.

    3. Re:Site is down by sexconker · · Score: 5, Informative

      I've put the picture (which is what everyone wants) up here:
      http://i.imgur.com/vqCAu.jpg

    4. Re:Site is down by thammoud · · Score: 2

      Yup. That definitely is hand made.

    5. Re:Site is down by busyqth · · Score: 3, Funny

      Actually not only is that one hand made, each and every A6 is lovingly hand made. That's why they're top quality.

    6. Re:Site is down by lister+king+of+smeg · · Score: 3, Funny

      and their tech section is run by taco so it could be counted as a sort of pseudo-slashdot effect they have as well

      --
      ---Saying gnome 3 is better than windows 8 not so much a compliment as it is damning with light praise.
    7. Re:Site is down by busyqth · · Score: 1

      and their tech section is run by taco so it could be counted as a sort of pseudo-slashdot effect they have as well

      Thank you. *sigh*

    8. Re:Site is down by Lumpy · · Score: 2, Funny

      But they are not lovingly hand made on the thighs of Virgins... That is reserved for El Presidente' Processors.

      --
      Do not look at laser with remaining good eye.
    9. Re:Site is down by Anonymous Coward · · Score: 1

      Not really. This site used to have enough traffic to take down a web server, but not anymore.

    10. Re:Site is down by makapuf · · Score: 1

      Maybe web server software and hardware have improved also ...

  5. Hand-made? by Anonymous Coward · · Score: 1

    They must have tiny hands.

    1. Re:Hand-made? by MobileTatsu-NJG · · Score: 1

      Those poor Foxconn workers. I bet Apple hires kids to work at Foxconn! I hear they also burn the bodies of the ones that die to heat the factory.

      --

      "I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)

    2. Re:Hand-made? by Anonymous Coward · · Score: 0

      And they process the charred remains into a nutritious food slurry.

    3. Re:Hand-made? by Anubis+IV · · Score: 1

      Nonsense. They're made into nutritional supplements that you can pick up in a rectangular bar form, just as with the other nutritional supplements supplied by the government. The ones you're talking about are called Green.

    4. Re:Hand-made? by Type44Q · · Score: 3, Funny

      They're made into nutritional supplements that you can pick up in a rectangular bar form

      With rounded corners?

    5. Re:Hand-made? by Anubis+IV · · Score: 0

      /sigh

      You just had to go and take a perfectly good Soylent Green reference and make it into something about Apple.

    6. Re:Hand-made? by Type44Q · · Score: 0

      It was cheap, I admit it.

  6. Chip design not black-or-white by whoever57 · · Score: 5, Informative

    Today, chips are nearly always laid out using advanced, CAD-like software â" the designer says he wants X cache, Y FPUs, and Z cores, and the software automagically creates a chip. Hand-drawn processors, on the other hand, are painstakingly laid out by chip designers.

    There are a lot of layout methodologies that are between the (frankly mythical) "X cache, Y FPUs, and Z cores" and fully hand layout. The top level may have more or less amounts of hand assembly, some blocks can be hand optimized, etc.. Usually, there is lots of glue logic which must be designed in RTL, synthesized and only then laid-out. And, for most blocks the process to create the logic design (RTL or perhaps gates) is separate from the process of laying-out these blocks. So there is room for manual involvement in each of the steps.

    --
    The real "Libtards" are the Libertarians!
  7. Why assembly ... by perpenso · · Score: 4, Insightful

    The question I have is how it's less expensive (in the long run) to lay a chip out by hand once instead of improving your VLSI layout software forever. NP classification notwithstanding.

    Coding in assembly still remains a superior method of squeezing extra performance out of software. It's just that few people do it because compilers are "good enough" at guessing which optimizations to apply, and where, and usually development costs are the primary concern for software development. But when you're shipping hundreds of millions of units of hardware, and you're trying to pack as much processing power in a small and efficient form factor, you don't go with VLSI for the same reason you don't go with a compiler for realtime code: You need that extra few percent.

    I like to view things as a little more complicated than just applying optimizations. IMHO assembly gets some of its biggest wins when the human programmer has information that can't quite be expressed in the programming language. Specifically I recall such things in the bad old days when games and graphics code would use fixed point math. The programmer knew the goal was to multiply two 32-bit values, get a 64-bit result and right shift that result back down to 32 bits. The Intel assembly programmer knew this could be done in a single instruction. However there wasn't any real way to convey the bit twiddling details of this fixed point multiply to a C compiler so that it could do a comparable operation. C code could do the calculation but it needed to multiply two 64-bit operands to get the 64-bit result.

    1. Re:Why assembly ... by Anonymous Coward · · Score: 1

      You should be using C++; that way you can define a class for fixed-point numbers, and just overload the * operator with a function that uses inline assembly code.

    2. Re:Why assembly ... by Anonymous Coward · · Score: 0

      You just hurt my head...

    3. Re:Why assembly ... by loufoque · · Score: 1

      You don't need to use assembly for this, you can just use built-ins or intrinsics.

      Assembly is only useful if you want to control register usage.

    4. Re:Why assembly ... by Anonymous Coward · · Score: 1

      You should be using C++; that way you can define a class for fixed-point numbers, and just overload the * operator with a function that uses inline assembly code.

      That is just an implementation detail of how you write the assembly code. The need to use assembly in such a circumstance remains the same whether one use a separate .asm file, inline asm in C or classes with inline asm in C++.

    5. Re:Why assembly ... by busyqth · · Score: 1

      You just hurt my head...

      *sigh*

    6. Re:Why assembly ... by Anonymous Coward · · Score: 0

      I like to view things as a little more complicated than just applying optimizations. IMHO assembly gets some of its biggest wins when the human programmer has information that can't quite be expressed in the programming language.

      Then there's things like non-standard calling conventions. Or, whether your C/C++ compiler is passing one or more arguments to a function through registers instead of the stack, etc.

      Doing abs() with assembly and no conditional statements, versus C/C++
      MOV EAX,[LOCAL.1] ; put a signed value in the EAX register
      CDQ
      SUB EAX,EDX ; done, EAX contains the result

    7. Re:Why assembly ... by perpenso · · Score: 1

      You don't need to use assembly for this, you can just use built-ins or intrinsics. Assembly is only useful if you want to control register usage.

      Which are really just alternative ways to write a line or two of assembly code. They are just conveniences, you are still leaving the C/C++ language and dropping into architecture specific assembly.

    8. Re:Why assembly ... by loufoque · · Score: 1

      Which are really just alternative ways to write a line or two of assembly code.

      it is vastly different since you leave register allocation to the compiler, which means you can still use inlining and constant propagation.

    9. Re:Why assembly ... by perpenso · · Score: 1

      Which are really just alternative ways to write a line or two of assembly code.

      it is vastly different since you leave register allocation to the compiler, which means you can still use inlining and constant propagation.

      An alternative with an advantage but still fundamentally programming at the architecture specific assembly level rather than the C/C++ level.

    10. Re:Why assembly ... by Anonymous Coward · · Score: 0

      Code generated by intrinsics is usually pretty subpar and comes with limitations, though.

    11. Re:Why assembly ... by marcosdumay · · Score: 1

      Just remember to veryfi your assignment operators and copy constructors, otherwise they'll lose more time than your asm will gain.

    12. Re:Why assembly ... by MightyYar · · Score: 1

      ... and then you'd write the assembly - same as you'd do if it was called by C or Python.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    13. Re:Why assembly ... by loufoque · · Score: 1

      It's very different. Clearly you haven't done significant amount of work with the two to be able to tell.

    14. Re:Why assembly ... by perpenso · · Score: 1

      It's very different. Clearly you haven't done significant amount of work with the two to be able to tell.

      That is a very bad guess on your part. Intel x86 and PowerPC assembly were a specialty of mine for many years. Whether I was writing a larger function in a standalone .asm file, doing a smaller function or a moderate number of lines as inline assembly in C/C++ code, or only need a line or two of assembly that could be implemented via a compiler intrinsic hardly matters. I was thinking and programming as an assembly programmer not a C/C++ programmer. Standalone .asm, inline assembly or intrinsic are just implementation details; each having their appropriate time and place.

    15. Re:Why assembly ... by Anonymous Coward · · Score: 0

      Woosh...

    16. Re:Why assembly ... by Anonymous Coward · · Score: 0

      Why the "no conditional statements" constraint? How many times have you gone "well this basic language feature I'm not going to use" when writing real code?

    17. Re:Why assembly ... by Anonymous Coward · · Score: 0

      When the basic language feature makes your code go 200% slower for example?

    18. Re:Why assembly ... by TheRaven64 · · Score: 1

      Standalone .asm, inline assembly or intrinsic are just implementation details

      True, in the same way that using a quicksort or a bubblesort is just an implementation detail. Using stand-alone assembly means that the compiler has to create an entire call frame and ensure that all caller-safe registers are preserved, even if your asm code doesn't touch any of them. Using inline assembly is a bit better, but the compiler still often has to treat your asm as a full barrier and so can't reorder operations around it to make most efficient use of the pipeline. Using intrinsics means that the register allocator and instruction scheduler are entirely free to make any changes that they need to, as long as the end result is the same. More importantly, the entire middle part of the optimiser pipeline knows nothing about the assembly except that it is some opaque blob that uses some values and produces some others.

      Note: This doesn't apply to the MS compiler, which somehow manages to do a worse job with intrinsics than inline assembly.

      Note 2: Some of this doesn't apply with LLVM if you are using the integrated assembler, because the inline asm is parsed to machine code operations that then have the normal instruction selector and peephole optimisers run.

      --
      I am TheRaven on Soylent News
    19. Re:Why assembly ... by Anonymous Coward · · Score: 0

      overloaded operators are functions, so the function call will already lose more time

      pretty sure gp was joking

      woosh!

    20. Re:Why assembly ... by marcosdumay · · Score: 1

      overloaded operators are functions, so the function call will already lose more time

      That's just not true.

      You can overload the conventional arithmetics operators and make they run faster than the builtin ones for your specific needs. You'll just need to take a huge amount of things into account.

      But yeah, the GGP was probably joking.

    21. Re:Why assembly ... by swillden · · Score: 1

      overloaded operators are functions, so the function call will already lose more time

      Functions, including in-line assembler implementations, can be inlined, so there isn't necessarily any functional call overhead whatsoever.

      pretty sure gp was joking

      No, I don't think he was, although he perhaps somewhat missed the point. He just pointed out a convenient way to do the escape to assembler with minimal impact on the remainder of the code, but the core point was that you need assembler to code this operation efficiently -- the argument is that few, if any, C or C++ compilers would recognize that something like:

      uint32((uint64(a) * b) >> 32);

      can be reduced to a single instruction. I don't know what that single instruction would be (I am not an assembler expert), or how likely it is that a compiler would recognize it.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    22. Re:Why assembly ... by swillden · · Score: 4, Informative

      I don't know what that single instruction would be (I am not an assembler expert), or how likely it is that a compiler would recognize it.

      Followup: Just for fun I decided to test it. I compiled the code with -O1 on my handy compiler (g++ 4.6.3) and what it produced was:

      imulq %rdi, %rax
      shrq $32, %rax

      So, two instructions. However, it occurred to me that perhaps the code in question was to be run on a 32-bit processor, and my compiler is compiling for 64 bits. So I changed the problem a bit, to the analogous one on a 64-bit CPU:

      uint64_t((__uint128_t(a) * b) >> 64)

      and what the compiler produced was:

      mulq %rdi

      So, it looks like gcc 4.6.3 does, in fact, recognize how to optimize this particular code. No need for inline assembler here.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    23. Re:Why assembly ... by perpenso · · Score: 1
      What is the point of all this? Have you jumped to the erroneous conclusion that I don't think any of these three implementation details have their time and place?

      My original point has nothing to do with how one implement's the needed assembly code. My point is that there are situations where the programmer has knowledge that can not be communicated to the compiler, knowledge that allows the assembly language programmer to generated better code than the compiler could.

      Using stand-alone assembly means that the compiler has to create an entire call frame and ensure that all caller-safe registers are preserved, even if your asm code doesn't touch any of them.

      No. The responsibility to preserve registers is the assembly language programmer's and is done in the stand alone assembly. The compiler does not know a function is implemented in assembly. All the compiler ever sees is a prototype of a function in a header, it has no idea if that function is implemented in a separate C file or a separate assembly file.

      Using inline assembly is a bit better, but the compiler still often has to treat your asm as a full barrier and so can't reorder operations around it to make most efficient use of the pipeline.

      No inline is not necessarily better. The preamble/postamble code may be too aggressive.

      The compiler leaving instruction ordering alone is a *good* thing. That is one of the point's of assembly, the human programmer can sometimes do a better job at pipeline management.

      Using intrinsics means that the register allocator and instruction scheduler are entirely free to make any changes that they need to, as long as the end result is the same.

      And as I said before intrinsics are sometimes the best way to implement a line or two of assembly.

    24. Re:Why assembly ... by phlinn · · Score: 1

      Are you sure that works? I thought the x86 architecture used two's complement for signed values. It has a two's complement negation instruction at least.

      --
      "Pulling together is the aim of despotism and tyranny! Free men pull in all sorts of directions" -- Havelock Vetinari
  8. Looking closely by taniwha · · Score: 5, Informative

    Looking closely I see a bunch of ram - probably half laid out by hand (caches) - and a many may small standard cell blocks almost certainly not laid out by hand - what I don't see is an obviously hand laid out datapath (the first part of your CPU you spend layout engineers on) - look for that diagonal where the barrel shifter(s) would be. There are some very regular structures (8 vertically) that I suspect are register blocks.

    Still what I see is probably someone managing timing by synthesizing small std cell blocks (not by hand), laying those blocks out by hand then letting their router hook them up on a second pass - - it's probably a great way to spend a little extra time guiding your tools into doing a better job to squeeze that extra 20% out of your timing budget and give you a greater gate density (and lower resulting wire delays)

    So - a little bit of stuff being done by hand but almost all the gates being lait out by machine

  9. 'by hand' - not really. by queazocotal · · Score: 5, Informative

    This is not by hand.
    To take a programming analogy, it's looking at what the compiler generated, and then giving it hints so the resultant code/chip is laid out as you expect.

    Chips stopped being able to be laid out 'properly' by hand some time ago.

    Doing this has much the same benefits as doing it with code.
    You know stuff the compiler does not.
    You can spot silly stuff it's doing, that is not wrong, but suboptimal, and hold its hand.

    1. Re:'by hand' - not really. by Sulphur · · Score: 5, Funny

      This is not by hand.
      To take a programming analogy, it's looking at what the compiler generated, and then giving it hints so the resultant code/chip is laid out as you expect.

      Chips stopped being able to be laid out 'properly' by hand some time ago.

      Doing this has much the same benefits as doing it with code.
      You know stuff the compiler does not.
      You can spot silly stuff it's doing, that is not wrong, but suboptimal, and hold its hand.

      Or grab its ARM.

    2. Re:'by hand' - not really. by drhank1980 · · Score: 1

      I always considered the day people stopped using Rubylith to be when we stopped doing layouts "by hand".

    3. Re:'by hand' - not really. by adolf · · Score: 1

      This is not by hand.

      Indeed. I used to have a relatively high-end CD player whose analog section was obviously put together by hand: The PCB traces had the gentle arcs and occasional aberrations of a steady and practiced (but somewhat imperfect) human hand aided by simple drawing tools. (The digital section's traces resembled that of any computer part from a few years prior: Obviously done by machine.)

      My example is on a much, much larger physical scale than anything discussed in TFA, but having actually read TFA, I don't see a damned thing that was done "by hand."

      FFS. Drawing circuits (however small they might be) "by hand" is the realm of rulers, compasses, protractors, and maybe stencils. And this isn't it.

      (And before anyone says "Oh but you can't draw an IC by hand -- tt is impossible!@!!!@ They're too small!!!" I suggest you go look at the history of the IC, or perhaps for a somewhat-lesser but easier-to-see mechanical illustration: The modern process of minting US coins from a large original, which is not entirely dissimilar in concept despite being entirely mechanical.)

    4. Re:'by hand' - not really. by Alioth · · Score: 1

      In the context of circuits, "by hand" means not autorouted. I laid out my last PCB "by hand" - no, I didn't draw it with a pen, but I placed each trace "by hand" in the CAD program instead of just autorouting it.

  10. Re:And made by Samsung by jbolden · · Score: 1

    Display is LG. Flash is mostly Hynix and Toshiiba.

  11. What makes hand-made chips "faster"? by Anonymous Coward · · Score: 1

    IANAEE (I am not an electrical engineer).

    I'm a mathematician. As I understand it, chip layout is usually done by solving a large-scale optimization problem to obtain a layout where things are packed as tightly as possible.

    What I don't understand is the assertion in the summary that hand-drawn optimizations can be faster than a computed one. To me, hand-crafted optimizations can be passed to the optimizer, which will then output the tightest design based on the constraints given (with the hand-crafted optimizations incorporated). So it seems to me that hand-crafted optimizations can be as fast as computer-optimized circuit layouts... but not faster.

    What am I missing here?

    Note: I guess the compiler analogy would be writing something in assembly (with hand-crafted optimizations) vs. writing something in C and passing it through an optimizing compiler. But I don't know if circuit layout works like that. Or does it?

    1. Re:What makes hand-made chips "faster"? by Hatta · · Score: 5, Informative

      I'm guessing that the search space is too large to brute force the optimization. For similar reasons we can't write a program that can beat a Go master. It's just too hard a problem without heuristics, and the heuristics in the human brain are better. Figure out why, and you've solved AI.

      --
      Give me Classic Slashdot or give me death!
    2. Re:What makes hand-made chips "faster"? by marcansoft · · Score: 5, Informative

      What you're missing is that chip layout is NP-complete. For anything beyond very trivial chips, no computer algorithm can yield the optimal solution in a reasonable time.

      As I understand it, automated layout algorithms are still, when you get down to it, largely quite dumb. I'm sure this is oversimplifying and someone who writes place-and-route software will probably want to kill me, but the algorithm is closer to "throw stuff together, measure performance, tweak things randomly, measure performance, keep the change if it got better" than to anything likely to yield an optimal solution. Eventually, you'll converge on a decent layout, sure, but not an optimal one.

      It's pretty much guaranteed that this chip wasn't completely hand-crafted (modern chips are much too complicated to do that). Instead, most likely, engineers guided the placement of major blocks and data paths, and let the automated place-and-route software choose the rest. By constraining the design based on intelligent decisions, you can guide the automated process to converge on a better solution.

    3. Re:What makes hand-made chips "faster"? by AK+Marc · · Score: 3, Informative

      And an incremental chip would benefit from hand-holding more than a new one. Say they tested the chip at + 50% clock speed and identified locations of instability. Then, they "by hand" took an optimized automated layout and tweaked it to improve those few specific areas. That would be a "by hand" design that didn't take too much work and gave a better result. Perhaps do the same thing, but with 50% less voltage, rather then increased speed. Then hand-optimize on that. Then compare the two and come up with something that's faster and lower power than the automated process would ever come up with.

      Most algorithms I've messed with are very good at iteration, but bad at evolution (they win chess by calculating odds and values, not by analyzing the opponent and his moves).

    4. Re:What makes hand-made chips "faster"? by Anonymous Coward · · Score: 0

      well as I commented elsewhere I think that's what's being done for the CPU (lots of little machine synthesised/laid blocks hand placed then machine rerouted, probably with a few tweaks) - on the other hand the GPUs there are all just seas of gates

      One of the things that's happened in the past decade is that RC wire delays have come to dominate gate delays which means that the old technique of synthesis followed by place&route has had to give way to a more integrated approach - leaving many many more degrees of freedom available to the software and making it harder to make choices - there's a lot of ad-hoc smarts in there to get to a good place in a real-world reasonable time - chopping things up into pieces gives the software a small problem space to deal with.

    5. Re:What makes hand-made chips "faster"? by Anonymous Coward · · Score: 0

      Please mod this man up (ASIC/FPGA designer).

    6. Re:What makes hand-made chips "faster"? by gr8_phk · · Score: 2

      A compiler analogy. Until recently, register allocation was a hard problem better handled by human experts. Now there are polynomial time algorithms for handling it and compilers can do it optimally. I imagine the subtleties of layout make it a much harder problem to automate - similar to the difference between chess and go.

    7. Re:What makes hand-made chips "faster"? by Anonymous Coward · · Score: 2

      >> automated layout algorithms are still, when you get down to it, largely quite dumb

      Auto-custom layout tools are rare, good ones are usually shaped like humans.

      Change 'layout' to 'placement' and I fully agree. Leave it as 'layout' and change 'dumb' to 'nearly non-existent' and I agree again. Good layout people are worth gold, they are two steps from the GDSII stream and they build working circuits from a spice deck or w/e gibberish the circuit designer dumps on them. I'm not a layout person, they just are the difference between making it work and yet another great idea.

      >> It's pretty much guaranteed that this chip wasn't completely hand-crafted

      Yes, agree, but this concept of by-hand is relative, by-hand back in the day was walking around in a giant room drawing transistors on sheets of the moral equivalent of mylar. Yes I was there...

      Fast forward to where we have computers and cool-ish stuff: cpu houses usually break logic into 3 mushy categories, random logic synthesis (RLS), structured datapath (SDP) and full custom.

      Recognizing RLS from a picture is pretty easy, blob of standard cells apparently randomly placed.

      The differences between SDP and full custom (in the obviously not RAM areas) are tougher to distinguish in these pictures, not enough detail in the images and difficult to tell what is actual layout and what are effects of the post-mortem process.

      SDP is a manually intensive process, but not nearly time consuming as full custom since you are still primarily dealing with a standard cell library and not 'rolling your own'. The visual effect is similar to full custom, regular patterns easy for the eye to distinguish.

      But I am surprised by the amount of apparent white space in the pictures, which is an indirect indicator of custom blocks stitched together after their individual design is complete, typically not the case in SDP (nor obviously RLS).

      So that really begs a much larger question. If it is a custom design why the hell go through all the trouble and then lose a chunk of the benefit by placing these lovingly crafted blocks in such a way? This is money, more importantly power consumption efficiency left on the table. I'm not judging but more wondering about the tradeoff choices made, could be tech, could be schedule, too far away to judge.

      Working backwards from product announce, having some idea about how long this takes, full custom or SDP/custom mixture, this could be the work of that crufty crew at Intrinsity (quondam notus ut EVSX, Exponential Technology) who (apparently) did the previous work on Apple A5 in the Samsung process. The calendar time works out.

    8. Re:What makes hand-made chips "faster"? by Space+cowboy · · Score: 3, Informative

      As a mathematician, you ought to understand global optimization encountering local minima in a high-dimensional space. Standard tools for large-scale functional minimization are all subject to it in one form or another, and humans get to ignore all the "stuff that doesn't make sense" - machines don't have that latitude, at least with current algorithms.

      Don't get me wrong, the layout and design tools are on the bleeding edge; they're as sophisticated as they come, and there's a *huge* amount of maths in how they work, but they're still crap, compared to a moderately skilled human. What they do excel at is doing all the tedious repetitive work that is typically required, and there's a *lot* of that.

      Simon

      --
      Physicists get Hadrons!
    9. Re:What makes hand-made chips "faster"? by Anonymous Coward · · Score: 1

      IANAEE a lot of design skills are still referred to as art. An example would be the original 64 bit athlon's where all laid out by hand to get the last mhz in.
      Expert systems are great, but subtle performance, be it building a race motor, hand crafting in assembly an important loop or designing a processor, humans still win.

    10. Re:What makes hand-made chips "faster"? by makomk · · Score: 1

      As a mathematician, you ought to understand global optimization encountering local minima in a high-dimensional space.

      Is there anything out there that doesn't use simulated annealing to reduce the chance of getting wedged in an undesirable local minima somewhere these days?

    11. Re:What makes hand-made chips "faster"? by metaforest · · Score: 1

      Typical mathematician. Your English cannot be parsed into efficient comprehension. In other words, your compiler sux. ;)

    12. Re:What makes hand-made chips "faster"? by Space+cowboy · · Score: 1

      I'm not a mathematician. I am in fact the interface between pure mathematics and the dirty real world. If I was a mathematician, words like 'tensor', theories with obscure names like 'Choquet', 'Homology', 'Nevanlinna', would be prominent...

      I am a physicist[*]. I speak english :)

      [*] I'm well aware we physicists have our own vernacular, but we try harder to be understood. We have the 'Big bang' theory, and stuff gets sucked into 'black holes'... :)

      --
      Physicists get Hadrons!
  12. Re:A6 hand layout awesome performance sweet by Anonymous Coward · · Score: 0, Insightful

    Good job Samsung!

    For what, exactly reproducing what Apple gave them?

  13. It's a level of indirection by Kjella · · Score: 2

    The question I have is how it's less expensive (in the long run) to lay a chip out by hand once instead of improving your VLSI layout software forever.

    You can teach a small kid to ride a bicycle. The same kid has no chance to program a robot into doing the same motion and balancing. It's the same order of magnitude in difference with VLSI layout, a person can lay out the circuits but it's almost impossible to describe to the computer all the reasons why he'd lay it out that way. It's not easy controlling anything well through a level of indirection, that's true for most things.

    As for being "less expensive", companies don't just have expenses but they have income too. If you can increase revenue because you got a better chip that sells more, they're willing to pay a higher cost. Companies care about profits, not expenses in isolation. Those tiny improvements to the compiler, how valuable are they to Apple in 10 years? 20 years? As opposed to an optimized chip which they know how much is worth right now.

    --
    Live today, because you never know what tomorrow brings
  14. Re:A6 hand layout awesome performance sweet by Anonymous Coward · · Score: 3, Funny

    Android users usually get laid by hand.

  15. News For This Nerd by History's+Coming+To · · Score: 5, Interesting

    Brilliant, this is what I love about Slashdot, I can be the biggest geek in whatever field I pick and I will still get outgeeked! I enjoyed reading the comments above mostly because I have absolutely no idea what the detail is, and I'd never even realised that hand-drawn vs machine was a issue.

    Can anyone supply a concise explanation of the differences and how it's all done? I'm guessing we're talking about people drawing circuits on acetate or similar and then it's scaled down photo-style to produce a mask for the actual chip?

    Yes, I know I can just Google it, and I will, but as the question came up here I thought I'd add something to a real conversation, it beats a pointless click of some vague "like" button any day :)

    --
    Please consider this account deleted, I just can't be bothered with the spam anymore.
    1. Re:News For This Nerd by oji-sama · · Score: 2

      Sorry, not an expert, but you might find this article (about AMD Steamroller) interesting. At least check the short "Looking Forward: High Density Libraries". They are rebuilding hand-drawn diagrams to be more efficient. http://www.anandtech.com/show/6201/amd-details-its-3rd-gen-steamroller-architecture/2

      --
      It is what it is.
    2. Re:News For This Nerd by Anonymous Coward · · Score: 0

      I'm guessing we're talking about people drawing circuits on acetate or similar and then it's scaled down photo-style to produce a mask for the actual chip?

      Not, that's not what hand drawn means, but doing it that way sounds awesome.
      This is basically the difference between running the design through a placer, or choosing the placement of elements yourself.

    3. Re:News For This Nerd by Anonymous Coward · · Score: 0

      Acetat films were >30 years ago, now it is all done by computers. Yes, you may now go to google and check the details...

      BTW, being an RF chip designer myself (not digital, only sometimes AMS); all my circuit layouts are still done "by hand" (my hand, actually!).

    4. Re:News For This Nerd by lexman098 · · Score: 5, Informative

      The headline is attention-grabbing bullshit.

      I'd believe that Intel may have in the past done manual placing and routing of custom made cells in certain key parts of their CPUs, but I can almost assure you that Apple did not place all of the standard cells in their ARM core's and then route them together manually, which is what the headline implies.

      What I'm talking about here is literally placing down a hundred thousand rectangles in a CAD tool and then connecting them correctly with more rectangles which is way beyond what Apple would have considered worth the investment for a single iPhone iteration. What's more probable (and pretty standard for digital chip design) is that they placed all of the large blocks in the chip by hand (or at least by coordinates hand-placed in a script), and they probably "guided" their place and route tool as to which general areas to place the various components of the ARM cores. They might have even gone in after the tool and fixed things up here and there.

      Modern chips are almost literally impossible to "lay out by hand".

    5. Re:News For This Nerd by stevesliva · · Score: 1

      Can anyone supply a concise explanation of the differences and how it's all done? I'm guessing we're talking about people drawing circuits on acetate or similar and then it's scaled down photo-style to produce a mask for the actual chip?

      CPU code is in RTL,verilog,VHDL, whatever-- it's in HDL. Usually these days a synthesis tool or compiler will create chip layout that implements that HDL description in standard cell logic. The standard cells are latches, NAND gates, buffers, SRAM, etc. A software tool will place and route standard cells to implement the HDL in silicon, and then iterate on timing to make sure it's fast enough. Humans don't directly do the placement of standard cells, or route wires between them. In terms of photolithography, the standard cells are the silicon transistors, and the first two levels of metal.

      It looks like they're making a mountain out of the fact that the standard cells were placed by hand here, and some of the more regular and important wiring was perhaps done by hand, too. You can often take your human knowledge of where the likely performance chokepoints are and place those carefully, and you can also take your human knowledge of where the wiring congestion will be, and be careful there. You're also perhaps able to wire things a bit more creatively in that you can use wrong-way metal and perhaps less gridding. And then you can still probably tell the algorithms to take care of the rest.

      In either case the standard cells themselves are often handcrafted in CAD tools, but sometimes different layout software will make them, too. It's just that with large logic chips, past that point humans are often only in the physical design loop to take care of problems the tools can't solve independently-- like massaging things that come out of synthesis too slow to meet the targeted performance, or mandating certain metal levels will be dedicated to a clock mesh. Sometimes that human intervention is just permitting the tool to suck up more power by using faster standard cells. Other times it would be revisiting the architecture in HDL, but then again throwing it over to a computer to place and route. The humans are not actually moving cells around the chip in a CAD tool.

      I don't do the synthesis part of the process myself, so someone can clarify or correct me. The thing I wonder about is why the chipworks guys assume hand placement necessarily takes much longer? Looking at the layout, I'd assume the biggest tradeoff is the size of the core, not time spent on placement. It's routing a gazillion non-regular wires that is hard for humans, not placement. We can still place standard cells in a core without needing years of time, provided it doesn't need to be perfectly area-efficient.

      --
      Who do you get to be an expert to tell you something's not obvious? The least insightful person you can find? -J Roberts
    6. Re:News For This Nerd by slew · · Score: 3, Informative

      Nobody "draws" chips by "hand" anymore. It's all being done by a computer (there are so many design rules these days humans can't do this anymore in a realistic time frame). Reticles (the photomasks) are all fractured by computer these days because rectangles aren't really rectangles anymore at these small feature sizes (we are now past the diffraction limit so masks must be "phase-shift" masks not binary masks back in the old-days).

      I don't have any specific knowledge about the A6, but what is euphamistically called hand-drawn these days is often still very automated relative to the bad-old-days when people were drawing rectangles on layers to make transitors. That was the real-hand-drawn days, but even way back then you didn't actually draw them by hand, you used a computer program to enter the coordinates for the rectangles.

      Quick background: now days when typical chips go to physical design, they usually go through a system called place-and-route where pre-optimized "cells" (which have 2-4 inputs and 1-3 outputs and implement stuff like and-or-invert, or register flop) are placed down by the computer (typically using advanced heuristic algorithms) and the various inputs and outputs are connected together with many layers of wires which logically match the schematic or netlist (which is the intention of the logical design). Of course this is when physics starts to impose on the "logical" design, so often things need special fixups to make things work. Unfortunatly, the fixups and the worst case wirelengths between cells conspire to limit the performance and power of the design, but just like compiled software, it's usually good enough for most purposes. Highly leveraged regularly structured components of normal designs might have libraries, specialized compilers or even have hand intervention (e.g, rams, fifos, or register files), but not the bulk of the logic.

      As far as I can tell from looking at the pictures the most likely possibility is that just that instead of letting the computer place the design completely out of small cells, some larger blocks (say like ALUs for the ARM SIMD path) were created by a designer and layout engineer who probably used a lower-level tool to put down the same small cells relative to other small cells where they think is a good place to put them and tweak the relative positioning to try to minimize the maximum wire lengths between critical parts of the block. The most common flow for doing this is mostly automated, but tweakable with human intervention (this what passed for "by-hand" these days). In addition to being designed to optimize critical paths, these larger blocks are generally desgined so that they "fit" well with other parts of the design (e.g., port order, wire pitch match, etc) to minimize wire congestion (so they can be connected with mostly straight wires, instead of those that bend). Basically looking at the patterns of whitespace in the presumed CPU, you can see the structure of these larger blocks instead of big rectangles (called partitions) which have rows of cells you get when you let a computer do place-and-route with small cells.

      Just like optimizing a program, there are many levels of pain you can go through and what I described above is probably the limit these days. Say if you wanted less pain, another more automated way to get most of the same benefits is to just develop a flow that hints where to put parts of the design inside the normal rectangular placement region, and let a placement engine use those hints. The designer can just tweak the hints to get better results. Of course with this method, the routing may still have "kinks" in this case because routing is not wire-pitch-matched, but you can often get 80-90% the way there. The advantage of this lesser technique is that you don't need to spend a bunch of time developing big blocks and if there is a small mistake (of course nobody ever makes mistakes), it's much, much easier to fix the mistake w/o perturbing the whole design.

      FWIW, it is highly unlikely that th

    7. Re:News For This Nerd by Macman408 · · Score: 1

      They used to literally make a mask by hand, but then the features on the chip got smaller (on the scale of nanometers), and the chips got bigger (up to hundreds of square millimeters, holding billions of transistors). To draw the whole thing, you'd need a piece of acetate 360 meters on each side, at least. These days (and for the last couple decades), it's all CAD. The design then gets sent electronically to the fab, where they make the mask using an electron beam - a little bit like how a CRT works, I believe, using electromagnets to steer the electrons. The mask actually looks very little like the design - today's circuits are measured in tens of nanometers, while the wavelength of the light that is used to pattern the design is in the hundreds of nanometers. So they do complex calculations using all the various optical distortions and interference and diffraction and whatever other effects there are, and work backwards from the desired design to find what the mask should look like to produce that design.

      And hand-drawn can be better for a lot of reasons. Computers are great at following a set of rules, but what if you don't really know what the rules are, or how to express them? For example, how would you teach a computer to recognize a bicycle in a photograph? It can be done, but it takes a lot of training - and it's quite likely that it will pick up a lot of things that are not bicycles but look like them (perhaps a bicycle bumper sticker, or a piece of artwork), and it won't pick up bicycles that are different from what it was taught about (say a tandem or a recumbent). A human, on the other hand, will have no difficulty distinguishing a bicycle drawing from the real thing, or recognizing a new type of bicycle. So, at least for now, humans can still recognize optimizations that computers can't, and give it some guidelines to help improve the result. I'm sure much of that chip's layout was done with automated tools, but careful hand adjustments and hints to those tools can make a big difference in performance and power.

    8. Re:News For This Nerd by Anonymous Coward · · Score: 0

      No one has done it like that in decades. Whether a computer or human designs it, everything in done in CAD software, then it's etched into a chrome film on a glass or quartz substrate with an electron beam one line at a time. The mask can then be used to expose many wafers via photolithography.

    9. Re:News For This Nerd by Anonymous Coward · · Score: 0

      Quite understandable to the chip fabrication layman, at least what hand-drawn means. So they're just further tuning an algorithmic process. I'm always astounded about the amount of work that has been expended developing theory and testing by countless scientists that led from the development of the integrated circuit to the Galaxy S3 in my hands.

      Proud to live in the home of the integrated circuit.

      Wanna know what Jack Kilby said of his invention?

      “It won’t be that big a deal in the long term.”

      ;-) I guess that depends on your philosophical interpretation of long term.

    10. Re:News For This Nerd by arkhan_jg · · Score: 1

      I'm not an expert by any stretch, but I did study VLSI chip design at uni, though obviously what we studied was a long way behind the current curve, and that's no doubt only increased since I left; but I can provide an overview of how it used to be done.

      You start with a hardware description language. I used verilog and VHDL. Basically, you describe in code what modules and functions you want the chip to do. It's literally very similar to coding, but you're describing and linking together hardware modules, not software. You can often use libraries of pre-designed optimal modules, rather than literally design the logic design of every single thing by hand. (Though this stage can also be done in CAD as a graphical logic design)

      That overall 'logic design' is then converted by algorithm into a gate & connections list; i.e. a whole metric ton of NAND logic gates and how they're connected etc.
      You can also run various automated tests on the design, to look for timing flaws, logic design errors etc - you confirm that your logic design does what you expect.

      This is one stage you can then optimise by hand; you can look at at a segment, decide the compiler has come up with a stupidly overcomplicated way, and modify how the gates are connected, reduce the number of gates, swap some out for alternatives.

      I believe this last step is not that common though now, as there tend to be fairly well designed 'cells' that perform a particular function, and you just plop those into the design as needed, and don't try to manually optimise them on a per-design basis - you focus on the design of the interconnects of the cells, and how they interact at a higher level.

      Anyway, once you've got an abstracted gate design that fits your logic plan, you then feed that into a CAD program that takes those cells and the necessary interconnects, and generates a 2d planar layout of transistors; i.e. it takes the gate layout, and turns that into a whole metric buttload of transistors, and how they're laid out and connected together. Again, this is done at the 'cell' level for big chips, and mostly focuses on how those pre-designed cells can be connected together optimally - also taking account of your fab techniques, i.e. power levels, type of mosfets etc.

      So now you have a machine generated layout diagram made up of transistors grouped together to form cells, with a whole ton of interconnect wiring with the paths generated by algorithm.

      If you're in a real hurry you can call it a day there, and send it off to the fab. They'll then run it through the stages necessary to break it down into layers, printing order, lithography masks etc etc to turn that transistor and connections diagram into the physical version of same - your diagram and what the physical chip looks like under a microscope should look very similar indeed (all those shiny coloured blocks).

      If you're doing anything complicated of course, you first test the chip under simulation. There you can look for physical hotspots, areas of interference, timing constraints etc. You can ramp up the clock speed, reduce the power, see which bits fail first.

      Using those tests, and your existing expertise, you can re-arrange the cell blocks (of transistors) into different orders inside a group, manually fine tune the layout of groups of cells in relationship with each other, decide that group will give you much shorter routes if you put them over here instead...

      Then you re-test your new layout in simulation, and see how it performs. The more testing, and the more manual changes you make to the automated design, the more obvious it becomes to an expert that your design has been hand tuned. You can of course use machine algorithms to assist in a particular sub-section of the chip, have it generate different layouts to solve a particular spot problem and then choose the best.

      This is where expert humans really outperform the algorithms; we can discard obviously sub-optimal solutions from the get go, we can see how changing one small segme

      --
      Remember kids, it's all fun and games until someone commits wholesale galactic genocide.
    11. Re:News For This Nerd by Anonymous Coward · · Score: 0

      "almost literally"

    12. Re:News For This Nerd by Anonymous Coward · · Score: 0

      I'm 100% almost sure.

    13. Re:News For This Nerd by stevesliva · · Score: 1

      What I'm talking about here is literally placing down a hundred thousand rectangles in a CAD tool

      Well, when you have repetitive structures, 100,000 rectangles isn't really all that difficult.

      --
      Who do you get to be an expert to tell you something's not obvious? The least insightful person you can find? -J Roberts
  16. does this mean? by Anonymous Coward · · Score: 0

    That the cost of the new iphone is finally justified because of expensive handmade chips?

    1. Re:does this mean? by busyqth · · Score: 1

      That the cost of the new iphone is finally justified because of expensive handmade chips?

      It's because of the gold connectors and diamond lenses.

  17. Automation is the win for *some* tasks by perpenso · · Score: 2

    ...companies thinking in the long run prefer an intelligent or well-trained workforce to automation and minimum wage.

    In general your point does have some merit but it really does depend on the specific task at hand. My grandfather was a master welder. However for *some* of the tasks that he used to perform a robotic welding system would be a better idea.

  18. Hand-drawn chips really better? by Anonymous Coward · · Score: 0

    Must mean that chip designing software is crap then. Should invest in better software?

    (This post is half funny/half serious - it's 2012, haven't intel or amd engineers developed algorithms to do the chip design for them?

    1. Re:Hand-drawn chips really better? by busyqth · · Score: 2

      it's 2012, haven't intel or amd engineers developed algorithms to do the chip design for them?

      No, they never thought of doing that. Hurry up and apply for the patent.

    2. Re:Hand-drawn chips really better? by espiesp · · Score: 1

      They probably haven't for the same reason that Intel or AMD engineers haven't developed algorithms to do whatever job you do for a living for you. Because computers aren't nearly as good at doing things as we sometimes give them credit for.

    3. Re:Hand-drawn chips really better? by stevesliva · · Score: 1

      it's 2012, haven't intel or amd engineers developed algorithms to do the chip design for them?

      The thing that I take to heart is that even the most simple digital design task-- factoring a sum-of-products boolean equation, the thing you get from your karnaugh map, into the most optimal logic implementation-- algorithms still can't guarantee that. And that task is just one bit of non-sequential static logic. If computers can't guarantee they're better at that, why assume they're better at synthesizing a pipelined, lookahead, out-of-order watchamacallit?

      --
      Who do you get to be an expert to tell you something's not obvious? The least insightful person you can find? -J Roberts
  19. lets look at a different analogy by v1 · · Score: 3, Insightful

    I don't think bicycle riding is a very good analogy to this problem. How about cooking, which is a procedural step-by-step operation? Little hints the recipe can give you like "preheat oven to 350 degrees" can be a tremendous time-saver later. If you didn't know to do that, you'd get your dish ready and then look at the oven (off) and click it on and sit back and wait 20 minutes before placing it in the oven. A dish that was supposed to be 60 minutes start to serve is now going to take 80 minutes due to a lack of process optimization.

    Compilers have the same problem of not knowing what the expectations are down the road, and aren't good at timing things. Good expereinced cooks can manage a 4 course meal and time it so all the dishes are done at the right time and don't dirty as many dishes. Inexperienced cooks are much like compilers, they can get the job done but their timing and efficiency usually have much room for improvement.

    --
    I work for the Department of Redundancy Department.
    1. Re:lets look at a different analogy by mspohr · · Score: 2

      I think we need a car analogy.
      Following iLost maps while drunk driving is like using a compiler.
      On the other hand, following the directions from your mother in law in the back seat is like a fish.
      YMMV

      --
      I don't read your sig. Why are you reading mine?
    2. Re:lets look at a different analogy by magarity · · Score: 1

      Time to buy a new oven if it takes 20 minutes to heat to 350.

  20. Re:Ahh.. idiotic Slashdot Editor "commentary" by Anonymous Coward · · Score: 0

    What kind of moron are you?
    If you improve the CAD software now, you get the better chip now, and any chip you design in the future.
    It's called a non-recurring cost.
    If you do it separately for each chip it becomes a recurring cost.
    Maybe they plan on this being the last chip they ever make?

  21. Layout by HAL by Anonymous Coward · · Score: 3, Informative

    " The question I have is how it's less expensive (in the long run) to lay a chip out by hand once instead of improving your VLSI layout software forever. NP classification notwithstanding."

    I've done PCB layouts, microwave chip and wire circuits, as well as RFIC/MMIC layouts. Anyone who asks the question above has never done a real layout. Many autorouter and layout tools allow complex rules to match delays, keep minimum widths, etc. You can spend as much time on each layout trying to populate these rules for critical sections of a design, but it is like trying to train a 5 year old to do brain surgery. Digital design is rather much different than the analog circuits I work on, but you only have to do a few layouts of any flavor by hand in your life to be able to see just how scary it is to hand a layout to HAL.

    Clearly autorouters and autogenerated layouts, and I don't mean to sound like too much of a luddite... I've witnesses plenty of awful hand layouts to go around as well.

    1. Re:Layout by HAL by taniwha · · Score: 1

      well a cpu with a 1GHz clock has 1nS to process data between flops - yes it's a bit like laying out microwave stuff -but in the very small - what happens is that it all starts with some layout person/people creating a standard cell library, they'll use spice to simulate and characterise their results - they'll pass this to the synthesis/layout tool makes a good first guess, they'll add in some fudge factor - then a timing tool looks at the 3d layout and extracts real timing, including parasitics to everything in 3-space around a wire - they check - does the timing from every flop to every other flop through every possible path meet both setup and hold times for the destination flop - if it does you're golden, tape it out - if not tweak something or resynthsise a block with tighter constraints etc etc

      There is very complex delay analysis done - in all corners of the underlying fab process - automated layouts seldom look "pretty" at least from the point of hand done boards

  22. Designed not made by hand by aNonnyMouseCowered · · Score: 1

    Not being a chip expert, the following made me think twice over whether some dextrous East Asian factory workers used tweezers to lay out the circuits of each and every chip rolling down the assembly line:

    "Hand-made chips are very rare nowadays, with Chipworks reporting that it hasn't seen a non-Intel hand-made chip for 'years.'"

    The phrase "hand-made chips" is misleading because it gives the impression that, similar to the way motherboards are still assembled by hand, the production of CPUs involve human fingers coming into direct contact with the silicon.

    Instead of teams of wondrous elves etching the microscopic pathways of electrons, we are treated to the less remarkable, but still impressive revelation that most chip designs are automatically spit out by high level chip design software.

  23. Re:Ahh.. idiotic Slashdot Editor "commentary" by Lunix+Nutcase · · Score: 1

    Or maybe with their $100 billion in cash and 10s of billions of dollars in revenue that they can easily absorb the costs?

  24. Apple... by Anonymous Coward · · Score: 0

    Seing those guys evolve is like watching an intricate ballet while everybody else is sumo wrestling.

    1. Re:Apple... by busyqth · · Score: 2

      Seing those guys evolve is like watching an intricate ballet while everybody else is sumo wrestling.

      So are you calling Apple users effeminate?

  25. Re:And made by Samsung by Lunix+Nutcase · · Score: 4, Informative

    Display is LG, Flash is Hynix, the RAM is from Elpida and their chip is their own design with Samsung just acting as a fab no different than Global Foundries or TSMC.

  26. Re:And made by Samsung by Plumpaquatsch · · Score: 1

    Display is LG. Flash is mostly Hynix and Toshiiba.

    Yeah, but the software is Samsung, and everyone knows that's what really counts.

    The CPU is manufactured by Samsung, and that's what really counts for Fandroids.

    --
    Of course news about a fake are Fake News.
  27. Re:And made by Samsung by busyqth · · Score: 5, Funny

    Display is LG. Flash is mostly Hynix and Toshiiba.

    Yeah, but the software is Samsung, and everyone knows that's what really counts.

    The CPU is manufactured by Samsung, and that's what really counts for Fandroids.

    Nah, I was referring to the well sourced fact that iOS is actually just a gimped version of Android.
    Remember Schmidt was on the Apple board, and he provided preview copies of Android to Jobs.

  28. ARM hard blocks are always laid out by hand... by Wierdy1024 · · Score: 4, Interesting

    When someone buys a design from ARM, they buy one of two things:

    1. A Hard macro block. This is like an mspaint version of a cpu. it looks just like the photos here. The CPU has been laid out partially by hand by ARM engineers. The buyer must use it exactly as supplied - changing it would be neigh-on impossible. In the software world, it's the equivalent of giving an exe file.

    2. Source Code. This can be compiled by the buyer. Most buyers make minor changes, like adjusting the memory controller or caches, or adding custom FPU-like things. They then compile themselves. Most use a standard compiler rather than hand-laying out the stuff, and performance is therefore lower.

    The articles assertion that hand layout hasn't been done for years outside intel as far as I know is codswallop. Elements of hand layout, from gate design to designing memory cells and cache blocks have been present in ARM hard blocks since the very first arm processors. Go look in the lobby at ARM HQ in Cambridge UK and you can see the meticulous hand layout of their first cpu, and it's so simple you can see every wire!

    Apple has probably collaborated with ARM to get a hand layout done with apples chosen modifications. I can't see anything new or innovative here.

    Evidence: http://www.arm.com/images/A9-osprey-hres.jpg (this is a layout for an ARM Cortex A9)

    1. Re:ARM hard blocks are always laid out by hand... by Lunix+Nutcase · · Score: 5, Informative

      When someone buys a design from ARM, they buy one of two things:

      Which is not what Apple did.

      Apple has probably collaborated with ARM to get a hand layout done with apples chosen modifications. I can't see anything new or innovative here.

      No, they designed it themselves since they are an architectural licensee like Qualcomm. You remember how they bought PA Semi?

    2. Re:ARM hard blocks are always laid out by hand... by Anonymous Coward · · Score: 0

      Which is not what Apple did.

      Were you not there for A4, A5, and A5X? The macrocell drop-in block ARM Cortex-A8/9 cores for all previous chips, or did you completely forget them.
      Of course Apple has an RTL license for A8/A9 and most likely A15.

      No, they designed it themselves since they are an architectural licensee like Qualcomm. You remember how they bought PA Semi?

      I would say the image here is further evidence that A6 is an A9/A15 with custom RTL and custom lay out.

    3. Re:ARM hard blocks are always laid out by hand... by Megane · · Score: 1

      Apple is one of the few companies allowed to make their own ARM cores, rather than just dropping a pre-rendered block on a chip. This dates back to the days of the Newton.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    4. Re:ARM hard blocks are always laid out by hand... by Anonymous Coward · · Score: 0

      They did indeed, but 2 yrs from architecture (ie. spec of what it should do) to product isn't doable in the ASIC world, especially not for high spec stuff.

      Parts of this design are still arm code. It's very hard to find public docs t prove this though...

  29. Automation versus human instinct by Taco+Cowboy · · Score: 4, Insightful

    The question I have is how it's less expensive (in the long run) to lay a chip out by hand once instead of improving your VLSI layout software forever.

    No matter how much improvement on VLSI layout software their output can't match that of hand-laid layout by those who know what they are doing.

    The VLSI layout software are like compilers. The final compiled code relies on two factors - the source-code input and the built-in "rules" of the compilers.

    A similar case is in software programming - The source code from a so-so programmer compiled by a very very good compiler will result in a "good-enough" result.

    It's good enough because it gets the job done.

    However, a similar program by an expert Assembly Language programmer would have left "good enough" behind because the assembly language programmer would know how to tweak his code using the most efficient commands, and cut out the 'fats" by optimizing the loops and flows.

    --
    Muchas Gracias, Señor Edward Snowden !
    1. Re:Automation versus human instinct by CastrTroy · · Score: 4, Insightful

      I think you underestimate how good compilers have become. Also, the "expert assembly language programmer" probably would work at 1/100 the pace of a programmer in something more high level like C++. It would probably be next to impossible to write an entire modern operating system, web browser, or word processor in assembly language. Sure for some very small sections of code you can optimize at the assembly level, but you can't write a whole program in assembly. Also, if a person can recognize some optimization, then that optimization can be added to the compiler, which means that a compiler can probably always at least come within a very close margin of where the human could get, and it could probably do better, because a compiler can remember a lot more optimizations than any human can.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    2. Re:Automation versus human instinct by Taco+Cowboy · · Score: 2

      I think you underestimate how good compilers have become

      Nope.

      I know how good compilers have become - especially compilers from the makers of the particular processor the program supposed to be run on.

      But I guess you may have missed the "so-so programmer" I've mentioned.

      Even the top-line compiler can't produce a top-notch program if been fed source code by a so-so programmer.

      There are a lot of ways to write programs.

      From the so-so programmers, the source code read like a bowl of bland noodles.

      But from a top-notch programmer, he or she would know how to structure his/her program in such a manner similar to what a top-notch chef can get out of a bowl of bland noodles.

      --
      Muchas Gracias, Señor Edward Snowden !
    3. Re:Automation versus human instinct by hazydave · · Score: 2

      Well, the real answer is that it's not an either/or scenario. Chip design teams design and layout chips based on off-the-shelf tools, layout expertise, etc. Silicon compilers are also constantly improved, but a completely different set of people are involved. Not sure about today's Apple, but the 80s/90s Apple probably would have done it both ways. In fact, even now I think about it, and the way the Intrinsity guys seem to work, it makes sense.

      This is sometimes done in PCB layout. Sure, some types of layout, like RF, are pretty much always done by hand. Today's successful autorouters work from a large set of design constraints that describe the circuit at a high level. You may get a layout sufficient fir a prototype in a week rather than the month the hand layout would take. On a tight schedule, that's two free weeks of bring up.

      So it might well be that they ran the silicon compiler, tweaked and simulated the piss out of the design, in parallel with the much longer hand layout. Maybe a bit like hand optimizing compiled code with downcoding/recoding and profilers.

      As for hand layout/coding always beating compilers, not in practice. One is certainly a time constraint... the compiler will produce a better end product below a certain time limit. Just where that line is drawn depends on the coder and the complexity of the process. As the CPU/PCB/chip rule sets grow, the compiler does better than the human, assuming it can efficiently factor in the rule set. Naturally, when it can't, you need the personal touch. Until it's expanded to embrace the new rules...like vector or GPGPU coding today. The other factor is of course architecture .. human time is usually better spent on the big picture items, architecture and algorithm. No sense hand coding for a 10% improvement in quality when the same time spent on design might yield 100%.

      Not to mention the JIT factor -- code is compiled on the fly for the specific CPU and system in use. Custom DSP pipelines created based on the problem at hand. A complex math problem is targeted,on the fly, to somewhere between 32 and 4096 parallel processing elements. Compilers always win here.

      --
      -Dave Haynie
    4. Re:Automation versus human instinct by Pseudonym · · Score: 5, Insightful

      I think you underestimate how good compilers have become.

      I think you may have misunderstood the realities of what a modern expert assembly language programmer does.

      An expert assembly language programmer knows when to write assembly language and when not to write assembly language. Assuming that raw performance is the metric by which programmers are judged (which isn't necessarily the case), an expert assembly language programmer will still win over any high-level language programmer because they can also use the compiler.

      It's the same with hand-laid-out VLSI. It's not like some team of hardware designers placed every single transistor. That would cause just as much of an unmaintainable mess as writing a large application entirely in assembly language. Rather, the hand-layout designer worked in partnership with the automated tools.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    5. Re:Automation versus human instinct by the_humeister · · Score: 4, Interesting

      It would probably be next to impossible to write an entire modern operating system, web browser, or word processor in assembly language.

      Here you go. It's pretty impressive for something written entirely in assembly .

    6. Re:Automation versus human instinct by jones_supa · · Score: 1

      It would probably be next to impossible to write an entire modern operating system, web browser, or word processor in assembly language.

      Very hard, but maybe not next to impossible. MenuetOS is written in assembly, Rollercoaster Tycoon is written too. If we had a large and competent development team in a big software house, I suppose it would be possible to make a full OS, browser or word proc in bare assembly. Not that it would be feasible or anything though.

    7. Re:Automation versus human instinct by Anonymous Coward · · Score: 0

      So you compare "expert assembler programmer" against "novice C++ programmer + good compiler"? You should better compare against "expert C++ programmer + good compiler".

    8. Re:Automation versus human instinct by TheRaven64 · · Score: 3, Informative

      Compilers almost always do a much better job than humans if provided with the same input. The advantage that humans have is that they are often aware of extra information that is not encoded in the source language and so can apply extra invariants that the compiler is not aware of. A human is also typically more free to change data formats, for example for better cache usage, whereas a compiler for a language like C is required to take whatever layouts the programmer provided.

      The problem with place-and-route is that the search space is enormous and automated tools typically use purely deterministic algorithms, whereas humans use a lot more backtracking. A simulated annealing approach, for example, can often do a lot better (check the literature, there are a few research systems that do this).

      However, a similar program by an expert Assembly Language programmer would have left "good enough" behind because the assembly language programmer would know how to tweak his code using the most efficient commands, and cut out the 'fats" by optimizing the loops and flows.

      This is, on a modern architecture, complete bullshit. Whoever is generating the assembly needs to be aware of pipeline behaviour, the latency and dispatch timings of every instruction and equivalences between them. Even if you just compare register allocation and use the same instruction selection, humans typically do significantly worse than even mediocre compilers. Instruction selection is just applying a (very large) set of rules: it's exactly the sort of task that computers do better than humans.

      --
      I am TheRaven on Soylent News
    9. Re:Automation versus human instinct by stevew · · Score: 5, Informative

      Okay - I'm stepping in here because I actually do chip design for a living. The difference between hand laid-out and machine generated chips can be as much as a 5X performance difference. The facts are that physical design isn't the same as compiler writing. It's a harder problem to crack - first it's a multi-dimensional problem. Next, it has to follow the laws of physics, themselves complicated ;-)

      Both processes DO rely on the quality of input. When my designs don't run fast enough, the likely fix is to go back to the source and fix it there instead of trying to come up with some fix within placement and routing. The other simple fact is that in timing a physical design - you have to consider EVERY path that the logic takes in parallel. There is not such thing as the "inner-most" loop of the algorithm for determining where the performance goes. Finally once you have a good architecture for timing, the placement of the physical gates dominates the process.

      A human - with their common sense is always going to give better performance than an algorithm. I mentioned a 5X difference between hand-drawn & compiled hardware. That is about what I see on a daily basis between what my tools can do for me, and what Intel gets out of their hand-drawn designs for a given technology node.

      --
      Have you compiled your kernel today??
    10. Re:Automation versus human instinct by Anonymous Coward · · Score: 0

      Best comment of them all. Everyone should read this before commenting. Which I'm sure they will. Oh, and ponies.

    11. Re:Automation versus human instinct by Quila · · Score: 1

      Remember how people praised Woz's Apple I circuit board as a work of art? Circuits are an art form as much as a science, so while automation can do well, that artistic human touch still does better.

    12. Re:Automation versus human instinct by Quila · · Score: 1

      This is, on a modern architecture, complete bullshit.

      So there's no reason why Adobe compiled most of Photoshop the regular way, but hand-coded performance-sensitive parts in assembler.

    13. Re:Automation versus human instinct by Theovon · · Score: 5, Interesting

      I'm a chip designer too (although probably not as good as you are), and one thing I wanted to mention for the benefit of others is that in today's chips, circuit delays are dominated by wires. It used to be dominated by transistor delays now, but today, a long interconnect in your circuit is something to avoid at all costs. So careful layout of transistors and careful arrangement of interconnects is of paramount importance. Automatic layout tools use AI techniques like simulated annealing to take a poorly laid-out circuit and try to improve it, but they're even now still poor at doing placement while taking into account routing delays. Placement and routing used to be done in two steps, but placement can have a huge effect on possible routing, which dominates circuit delay. Automatic routers try to do their jobs without a whole lot of high-level knowledge about the circuit, while a human can be a lot more intelligent about it, laying out transistors such with a better understanding of the wires that will be required for that gate, along with the wires for gates not let laid out.

      Circuit layout is an NP-hard problem, meaning that even if you had the optimal layout, you wouldn't be able to determine that in any simple manner. Computers use AI to solve this problem. There is no direct way for a computer to solve the problem. So until we either find that P=NP or find a way to capture human intelligence in a computer, circuit layout is precisely the sort of thing that humans will be better at than computers.

      Compilers for software are a different matter. While some aspects of compiling are NP-complete (e.g. register coloring), many optimizations that a compiler handles better are very localized (like instruction scheduling), making it feasible to consider a few hundred distinct instruction sequences, if that's even necessary. Mostly, where compilers beat humans is when it comes to keeping track of countless details. For instance, with static instruction scheduling, if you know something about the microarchitecture of the CPU that informs you about when instruction results will be available, then you won't schedule instructions to execute before their inputs are available (or else you'll get stalls). This is the sort of mind-numbing stuff that you WANT the computer to take care of for you. Compilers HAVE been getting a lot more sophisticated, offering higher-level optimizations, but in many ways, what the compiler has to work with is very bottom-up. You can get better results if the human programmer organizes his algorithms with knowledge of factors that affect performance (cache sizes, etc.). There is only so much whole-program optimization can do with bad algorithms.

      Interestingly, at near-threadhold voltages (an increasingly popular power-saving technique), circuit delay becomes once again dominated by transistors. When lowering supply voltage, signal propagation in wires slows down, but transistors (in static CMOS at least) slow down a hell of a lot more.

    14. Re:Automation versus human instinct by Anonymous Coward · · Score: 0

      So there's no reason why Adobe compiled most of Photoshop the regular way, but hand-coded performance-sensitive parts in assembler.

      Adobe produces some of the slowest over-side unreliable software I've ever used. Nothing else takes minutes to launch and gets worse with each update. I'm not sure what to make your example, but I'd say there's no good reason for Adobe to be doing that.

    15. Re:Automation versus human instinct by Quila · · Score: 1

      I'm not sure what to make your example, but I'd say there's no good reason for Adobe to be doing that.

      When Photoshop has to apply a gaussian blur or other operations on a 500 MB CMYK image, some pretty intense math goes into it. Adobe was not getting very good performance from the compilers no matter how hard they tried, so they identified the performance bottlenecks and rewrote them in assembler, resulting in huge performance gains. If they're competent enough to write tight assembler, they're probably competent developers overall. Adobe products have always pushed the performance abilities of the current hardware, with the exception of what they got with Macromedia, which just sucks.

      As with most things in life, the best solution lies somewhere in the middle. Automation is not as good as human, because humans wrote the automation -- there's a layer there. It cannot apply human intuition to every single item individually, only apply human intuition as general rules translated into automation. But humans require automation to accomplish things on such a large scale in a reasonable amount of time. The logical solution: Automate where you can, manually adjust where you must. Until true AI comes, the best we can probably do now is write the automation to identify where it isn't sure whether it has used an optimal solution.

    16. Re:Automation versus human instinct by phriedom · · Score: 1

      I'm also a designer, though perhaps not as knowledgeable as stevew at least as far as digital circuitry goes. But I'd like to add a little more explanation on WHY auto place and route tools are not as good as a person, because "instinct" doesn't tell the whole story. All the tools I have used do not do any prediction, look-ahead, or planning; so they tend to paint themselves into corners and rely on sheer horsepower to find a way out. Secondly, all the tools I have used work their way through each stage of the layout one-at-a-time, completing a stage before moving on to the next with no method of returning to an earlier stage with new ideas when opportunities and difficulties present themselves. So, for example, the APR tool might place the devices 10,000 times and then pick the best one based on whatever criteria are selected for. Obviously it can do this in a teeny tiny fraction of the time a human could do it. Then the APR tool might proceed in the same fashion to connect power, do buss routing, do point-to-point routing, then "clean" or "optimize" these routed connections. What it can't do is get to step 5 and see that it is having some trouble and if it just when back to step 2 for a moment and nudged that block over 2 microns I wouldn't have to do this or that. There is stuff you can do when you are looking at the big picture that you just can't do by looking at little pictures millions of times per second.

      --
      Don't moderate flamebait as Troll. Know the difference or you will be Meta-moderated.
    17. Re:Automation versus human instinct by Pseudonym · · Score: 2

      I'm not a hardware designer (obviously), but I am a compiler writer by trade, and I have put in a bit of research in the current literature of VLSI design, and share a commute with a VLSI designer with whom I talk about this stuff all the time.

      My assessment, which is worth exactly what you paid for it, is that while I agree that VLSI design isn't the same as compiler writing, I'm not convinced that it's necessarily a harder problem. To be clear, I'm not trying to get into a pissing contest here. My conjecture is that the "big" problems are of about equal difficulty, but more brain-hours have been dedicated to researching compilers than researching VLSI design tools.

      That's largely because of the volume of research material. There is, by line-of-code, far more software than hardware in the world, and more people use compilers than VLSI design tools. And, of course, there's more production-quality software source code available to researchers than there is for hardware. AMD does not simply release its netlists to anyone who asks.

      And then there's the return-on-funding-investment issue: software research directly benefits a lot more organisations than hardware research. Yes, we would all be better off with faster-time-to-market hardware, but until quite recently, basic research in VLSI tools would mostly directly benefit the bottom lines of Intel and NVIDIA, where basic research in software tools would directly benefit the bottom lines of startups everywhere.

      There's also the problem of turn-around time. The turn-around time for testing a software artefact can be measured in seconds or minutes, where testing a hardware artefact may take days or longer. Even if we started at the same point in history and dedicated the same number of researchers to the problem, compilers would quickly ahead faster than hardware would simply because of the time it takes to run a single experiment! For software, compilation is manufacturing.

      So that's why I think there's an apparent discrepancy. Now here's why I think the underlying problems are similar:

      First off, from a theoretical point of view, most of the subproblems of interest in both areas are NP-hard. Of course, that could be why they're "of interest".

      Now, of course, it's not true that NP-hard problems are all alike in practice, even though they are in theory. For some NP-hard problems (SAT modulo theories being the obvious example), it's tractable to solve them exactly even for quite large problem sizes. For others, we can't even get decent solutions to moderate-sized problems. Some problems feature pretty good known heuristics, where others do not. the heuristics used by compiler writers develop at a faster rate.

      Secondly, to the extent that problems of interest are not NP-hard, they seem to be just too different to make a fair comparison.

      For example, it is true that some of the physics constraints (e.g. parasitic capacitance) do not have good models which you could just slot into an existing constraint solver. I find it hard to believe that this is because the problem is inherently more complicated than the deep-magic-on-the-global-properties-of-the-program that some modern compilers do. It's far more likely that the right sort of people simply haven't gone to the trouble to try to understand them.

      Hell, at least problems like that are actually solvable in principle! Compilers try to understand Turing-complete languages, so some of those problems are inherently unsolvable.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    18. Re:Automation versus human instinct by TheRaven64 · · Score: 1
      There's a very good reason for that: their code is mostly written in portable C, to make it possible to compile with a variety of compilers, but C lacks any standard way of exposing vector types. They have three choices:
      • Use vendor-specific vector extensions (in particular, GCC/Clang and Visual Studio have different extensions, so code can't be shared between Windows and Mac if they do this)
      • Rely on autovectorisation support in the compiler (ICC and XLC are reasonably good at this, Path64 is a bit better, most other things suck)
      • Use assembly.

      The compiler doesn't do a good job because, as I said at the start of the post that you replied to, it doesn't have as much information about the code as the assembly programmer. Specifically, it doesn't have the information that operations on pixels are independent and that the data in the input and output both satisfy the alignment requirements for vector operations. More modern image processing applications will typically write this kind of operation in OpenCL C, which does allow all of this information to be expressed (along with the fact that the input and output don't alias and that the computation is data-parallel) and so will do a much better job of optimisation. They'll also run on the GPU where possible and so often end up being an order of magnitude or so faster than hand-optimised x86 assembly.

      --
      I am TheRaven on Soylent News
  30. Re:And made by Samsung by Lunix+Nutcase · · Score: 1

    Word to the mods: this person was joking.

  31. Really a work of art by Anonymous Coward · · Score: 0

    Ecce ARM.

  32. Re:Fixed point multiply by gr8_phk · · Score: 2

    The proper syntax for that is (using x64 types) something like:

    int a,b,z;

    z = (int)(((long long)a * b) >> 32);

    I'm assuming int is 32bit and long long is 64. Even though a is promoted to a larger type and also b, good compilers know that the upper half of those promoted variables are not relevant. They will then use the 32bit multiply, shift the 64bit result and store the part you need. I still do fixed point for control systems and find using 16bit signals and 32bit products is faster in C than floating point even on some embedded PPC chips - never mind the fixed point DSPs we use where the shifts cost nothing. Anyway, this syntax also worked on a HC12 compiler back in '98 or so. It's still hit or miss, but generally works on parts where this stuff is still common.

  33. And in other news... by Anonymous Coward · · Score: 0

    Apple has sued Chipworks for revealing company trade secret information, violating the terms of use attached to the device, and other intellectual property crimes.

    Bundled in the Apple terms of use is an agreement not to reverse-engineer. They could not have obtained an Apple to deprocess without first agreeing to those terms.

    Chipworks will belong to Apple when it is all over.

  34. Re:A6 hand layout awesome performance sweet by Anonymous Coward · · Score: 0

    But at least they can do it with anyone they want.

  35. NP-complete problem = Art by Anonymous Coward · · Score: 0

    There are lots of important applications that are NP-complete: chip design, traffic timings, tuning the accuracy of a multi-jewel mechanical watch.
    For many of them, we have algorithms that approximate an optimal solution, but they are all based on certain assumed heuristics that the programmer was able to supply. Some have tuning parameters in order to tap into human expertise somewhat.
    But that is where art begins: a human can develop and intuition for a certain class of problem that goes beyond the processing power we have and the algorithms we can create. It appears that chip design is one of these.

  36. Re:Ahh.. idiotic Slashdot Editor "commentary" by PPH · · Score: 1

    What kind of moron are you?

    If you improve the CAD software now, you get the better chip now, and any chip you design in the future.

    Any chip you design? Don't you mean any chip the Indian subcontractor designs with the CAD and rules you developed?

    --
    Have gnu, will travel.
  37. Huh? by Panaflex · · Score: 4, Interesting

    Not surprising at all, as PA SEMI was founded by Daniel W. Dobberpuhl.

    Daniel Dobberpuhl had his hand in StrongARM and DEC Alpha design - both hand-drawn cores which to this day command some respect in chip design circles I'm told.

    Anyway,

    --
    I said no... but I missed and it came out yes.
  38. actually they can by Anonymous Coward · · Score: 0

    someone ELSE buys it, then sells it to chipworks. the restriction only applies to the first buyer

  39. Re:And made by Samsung by Anonymous Coward · · Score: 0

    I wouldn't assume those companies are making all of them.

    Apple usually tries hard to find at least two manufacturers for every single component. There are some that are made from a single source but that is the exception rather than the rule.

    Just because the first 10,000,000 shipments have displays made by LG does not mean the next 10,000,000 will.

  40. Not necessarily hand-laid out by mozumder · · Score: 1

    It's entirely possible that they use a datapath place-and-route software to achieve this layout pattern over traditional quadratic standard-cell placement.

  41. Looks like a modern semi-custom chip to me by Brannon · · Score: 3, Informative

    I don't see anything in the pictures which implies "hand custom layout". I see a lot of carefully placed and floorplanned blocks, some of which are synthesized and some of which may have varying degrees of directed placement & routing. There are a lot of RAMs and register files, which look very regular but there's no way to tell whether they were generated by a bog standard RAM/RF compiler or whether there was some custom work (perhaps a combination of the two). There are a lot of unique blocks for a chip this size, I suspect there are several fixed function units to do various things (mpeg decoding or whatnot).

    Hand custom layout conjures images of dozens of layout engineers drawing polygons for every transistor; I doubt they did much of that but I'm certain you can't tell from these kinds of photos.

    It certainly looks "designed" and knowing how sharp the pasemi folks are then that isn't at all surprising.

  42. Re:Fixed point multiply by perpenso · · Score: 1

    The proper syntax for that is (using x64 types) something like:
    int a,b,z;
    z = (int)(((long long)a * b) >> 32);
    I'm assuming int is 32bit and long long is 64. Even though a is promoted to a larger type and also b, good compilers know that the upper half of those promoted variables are not relevant. They will then use the 32bit multiply, shift the 64bit result and store the part you need.

    Admittedly its been a while since I did fixed point but back in the day when I checked popular 32-bit x86 compilers (MS and gcc) they did not generate the couple of instructions that an assembly language programmer would. My example may be dated.

  43. result on gcc 4.5.1 by Chirs · · Score: 2

    Looks like gcc isn't a good compiler.
    Compiling this at -O3

    int mult(int a, int b)
    {
            return (int)(((long long)a * b) >> 32);
    }

    In x86-64 mode gives

    movslq %esi, %rax
    movslq %edi, %rdi
    imulq %rdi, %rax
    sarq $32, %rax
    ret

    and 32-bit mode gives

    pushl %ebp
    movl %esp, %ebp
    movl 12(%ebp), %eax
    imull 8(%ebp)
    popl %ebp
    movl %edx, %eax
    ret

    On powerpc the 64-bit version is very clean and obvious:

    mulld 4,4,3
    sradi 3,4,32
    blr

    the 32-bit version is a little bit more complicated

    mulhw 9,4,3
    mullw 10,4,3
    srawi 11,9,31
    srawi 12,9,0
    mr 3,12
      blr

    1. Re:result on gcc 4.5.1 by Anonymous Coward · · Score: 0

      with GCC 4.7 for IA32

                    mov 0x8(%esp),%eax
                    imull 0x4(%esp)
                    mov %edx,%eax
                    ret

    2. Re:result on gcc 4.5.1 by Anonymous Coward · · Score: 1

      and 32-bit mode gives

      pushl %ebp
      movl %esp, %ebp
      movl 12(%ebp), %eax
      imull 8(%ebp)
      popl %ebp
      movl %edx, %eax
      ret

      This is indeed doing it in one instruction: the imull. The rest of the code is to create a stack frame, load the parameter "b", go back to the previous stack frame, store the return value (in eax) and return: all administrative trivia that can be eliminated by the register allocator if the function can be inlined, so that a fixed calling convention can be avoided.

  44. The arithmetic is simple by dbc · · Score: 5, Informative

    The question I have is how it's less expensive (in the long run) to lay a chip out by hand once instead of improving your VLSI layout software forever. NP classification notwithstanding.

    It's simple math. At what volume will the chip be produced? A modern fab costs $X Billion, and you know pretty much exactly how many wafers you can run during the 3 years it is state-of-the-art. After that, add $Y Billion for a refit, or just continue to run old processes. Anyway, say a new fab at refit time would cost $Z Billion. Refitting the old fab instead costs $Y Billion. So you save $Z-$Y by doing a refit. So the original fab cost you $X-($Z-$Y). Divide by number of wafers the fab can run during its life, that is the cost per wafer. Now compute die area for hand layout versus auto layout, and adjust for imporved yield for smaller die. Divide by die per wafer. That is how much less each die costs you. Now since the die is smaller, it probably runs faster, so adjust your yield-to-frequency-spec upwards, or adjust your average selling price upwards if the speed difference is "large" (enough MHz to have marketing value). That is the value of hand layout. It isn't rocket surgury to work out a dollars-and-cents number.

    Anyway, even at Intel for at least the past 20 years only highly repetive structures like datapath logic has been hand laid out. Control logic is too tedius to lay out by hand, doesn't yield much area benefit, and is where the bulk of the bug fixes end up so it's the most volatile part of the layout from stepping to stepping.

    So, can hand layout have a positive return on investment? Yes, if you run enough wafers of one part to make the math work out. These days the math will only work out for higher volume parts.

    (Yes, I'm ex-Intel).

    1. Re:The arithmetic is simple by Anonymous Coward · · Score: 0

      So, can hand layout have a positive return on investment? Yes, if you run enough wafers of one part to make the math work out. These days the math will only work out for higher volume parts.

      This may well be true for large scale digital ASIC design. It is certainly not true for mixed signal ASICs. Analog signals frequently benefit from hand layout, and since they are already doing the analog layout by hand, the designers frequently also lay out some of the control logic for the analog by hand.

      No matter how important digital designs are, you still need analog to touch the real world.

      You probably can't build a modern oscilloscope, spectrum analyzer, signal source, or similar equipment without some hand layout of analog ASIC circuits. And, all the other digital chips ultimately depend upon the existence of this sort of test and measurement equipment. High end measurement equipment is certainly not going to contain "higher volume" chips.

      Even for digital designs, small or low volume ASICs will tend to use simpler synthesis tools and considerable "hand layout". This is due to the VERY high costs of the licenses for the high end digital synthesis tools.

  45. EDA/CAD detailed overview by Anonymous Coward · · Score: 0

    Argh, where is a good overview of the EDA industry when you need one?

    The only thing I can come up with is the "EDA Industry Primer" on one of Synopsys' Investor Relations pages. That's too high level here-- it only describes the buzzwords for investors.

    There use to be a better one, and I think it was Cadence that was putting this out. But I can't find it now.

  46. Re:And made by Samsung by Anonymous Coward · · Score: 0

    Hopefully, TSMC is past their manufacturing issues at, at, uh, waitaminute.

    [Types in "TSMC" into Google. Autocomplete shows "TSMC 28nm".]

    Hopefully, TSMC is past their manufacturing issues at 28nm that was reported eariler this year.

  47. Re:Ahh.. idiotic Slashdot Editor "commentary" by beelsebob · · Score: 1

    Sure, it's a non-recurring cost, the question really is, is the non-recurring cost $10^96 (to get close to "solving" an impossible problem by improving the CAD software) or should you spend $10^9 several times, in the hope that you don't design 10^87 more chips.

  48. Built by hand by Anonymous Coward · · Score: 0

    at first I thought this was about little chinese children hand assambling the chips at some rat infested factory.... Thou that might still be the case as they are cheaper to upkeep than a machine!

  49. Re:And made by Samsung by petermgreen · · Score: 1

    Apple usually tries hard to find at least two manufacturers for every single component.

    Honestly any hardware designer with a clue tries to minimise use of single source parts. Single source parts can be troublesome pretty much regardless of volume. For small volumes where you buy from stock there is the risk of all the stock of a part suddenly dissapearing with no new batch due for months. For large volumes where you are having parts made to fill your order single source parts gives the part manufacturers more bargining power.

    Sadly for ICs there often isn't a lot of choice since there is often no generic part that does what you want.

    --
    note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  50. Re:And made by Samsung by Megane · · Score: 1

    And the fab is even in the US. Northeast Austin to be specific. (They've been making the A5 there, so I'm guessing the A6 would be made there too.)

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  51. 'Manual' layout by Anonymous Coward · · Score: 0

    I did VLSI as postgrad researcher and designed a fairly complex DSP IC together with several layouts. Contrary to what the name implies, the 'manual' layout doesn't mean manually placing each part in the layout, or manually routing. The only thing that gets done manually is pre-placement of key blocks, be it for optimising wire lengths or die size. Then you run the algorithms that fit the less critical stuff in and route wires. You can do this at several levels of architecture, e.g. when laying out and ALU you can place input/output buffers and let sw do the rest. Once this is done, whole ALU can be placed "manually" as a module in a CPU design.

    The process is not that much more expensive then letting software do it all.