Slashdot Mirror


The Fight Against Dark Silicon

An anonymous reader writes "What do you do when chips get too hot to take advantage of all of those transistors that Moore's Law provides? You turn them off, and end up with a lot of dark silicon — transistors that lie unused because of power limitations. As detailed in MIT Technology Review, Researchers at UC San Diego are fighting dark silicon with a new kind of processor for mobile phones that employs a hundred or so specialized cores. They achieve 11x improvement in energy efficiency by doing so."

137 comments

  1. huh ? by Anonymous Coward · · Score: 0

    yeah what a great idea. just like the PS/3 with its specialized processors. 100 + should be easy to program for .... NOT.

    1. Re:huh ? by the_humeister · · Score: 2

      From the article, it seems like the processor usage would be transparent such that you don't need to explicitly target each processing element directly.

    2. Re:huh ? by DurendalMac · · Score: 1

      Well, unless you really, really like assembly. Then you're probably a masochist and this would be right up the ol' alley.

  2. That's not the solution, this is by thisisauniqueid · · Score: 5, Informative

    Language support for ubiquitous and provably threadsafe implicit parallelization -- done right -- is the answer to using generic dark silicon -- not building specialized silicon. See The Flow Programming Language, an embryonic project to do just that: http://www.flowlang.net/p/introduction.html

    1. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      char x = getc();

      if (x==1)
      {
              printf("one");
      }
      else
      {
              printf("somethingelse");
      }

      Are we done?

    2. Re:That's not the solution, this is by oliverthered · · Score: 2

      programmer-safe language.

      That's just asking for trouble,that's like saying a keyboard is safe from illiterate people because it has letters printed on the keys.

      --
      thank God the internet isn't a human right.
    3. Re:That's not the solution, this is by Samantha+Wright · · Score: 2

      That would be so much better if it wasn't in "early design" stage. Their "no garbage collection" plan seems particularly worthwhile.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    4. Re:That's not the solution, this is by Anonymous Coward · · Score: 5, Interesting

      Uuum, no need to learn some obscure weird language that doesn't even exist yet, when you can learn a (less) obscure weird language that already exists. ;)

      Haskell already has provable thread-safe implicit parallelization. In more than one form even. You can just tell the compiler to make the resulting binary "-threaded". You can use thread sparks. And that's only the main implementations.

      Plus it is a language of almost orgasmic elegance on the forefront of research that still is as fast as old hag grandma C and its ugly cellar mutant C++.

      Requires the programmer to think on a higher level though. No pointer monkeys and memory management wheel reinventors. (Although you can still do both if you really want to.)

      Yes, good sir, you can *officially* call me a fanboy.
      But at least I'm a fan of something that actually exists! ;))

      (Oh, and its IRC channel is the nicest one I've ever been to. :)

    5. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      That isn't the solution either. Function getc() returns an int, not a char.

    6. Re:That's not the solution, this is by FatdogHaiku · · Score: 2

      ...that's like saying a keyboard is safe from illiterate people because it has letters printed on the keys.

      Sadly, that statement is true. An illiterate person will shy away from a keyboard, an on screen (TV) menu, a newspaper, etc. the same way someone who is broke is embarrassed by the sight of a checkbook or wallet... it becomes a reflex. I know someone who is a good intuitive mechanic, but somehow managed to get to adulthood with less than third grade reading and writing skills. Left to himself, a typical 5 page job application takes a couple of hours and many phone calls to complete. Now he has a 2 year old son, and it is beginning to dawn on him that by the time the son is 8 or 9 he will be left in the dust... I can only hope he chooses to grow rather than try and retard the advancement of his son...

      --
      You have the right to remain sentient. If you give up the right to remain sentient, you will be elected to public office
    7. Re:That's not the solution, this is by geekpowa · · Score: 1

      No need to reinvent the wheel. Plenty of stuff out there, based on functional programming model which by design can be setup to parallelise well. I know some folk messing around with this: not my particular area of interest, but demonstrates that this is a well understood problem space with alot of clever people already having committed alot of hours of brainwork over long periods of time to progress solutions in this problem space. Mercury Programming Language

    8. Re:That's not the solution, this is by oliverthered · · Score: 2

      cats are illiterate, they walk all over the bloody keyboard causing all kinds of havoc.

      "I know someone who is a good intuitive mechanic, but somehow managed to get to adulthood with less than third grade reading and writing skills.",
      quite possible the way that he learns things (ergo... schools are crap)

      I have/had that problem, in that language is generally poorly designed and people like to fuck with other peoples heads. But I worked out how they do that now and it kind of, mostly, started to sort itself out.

      --
      thank God the internet isn't a human right.
    9. Re:That's not the solution, this is by istartedi · · Score: 1

      What's your plan of attack on GC? Reference counting doesn't pause; but fails if you create cyclic references. Mark and Sweep doesn't have that problem; but creates the dreaded pause. The state of the art, AFAIK, is to check for recently created objects and kill them early (generational GC). There are heuristics to avoid a full mark-and-sweep; but AFAIK there aren't any airtight algorithms.

      Now I wonder, is it possible to do a static analysis on a parse tree for some language and determine whether or not it could create cyclic references at runtime? I'm inclined to think that it's generally impossible... but I'm not even sure how to set that equation up. At any rate, rejecting a program that creates cycles would be cheating. Also, there might be some valid reason to create a ring-like data structure.

      Anyway, good luck with your project. It reminds me of a lot of the independant language development project I hack on; but I'm less concerned with parallelism. I admire the Erlang message-passing and lightweight process approach for that.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    10. Re:That's not the solution, this is by parlancex · · Score: 1

      I checked it out and it sounds really interesting, but at the moment all they seem to have is the idea. Not to say it isn't a very good idea, but I think the main challenge will be making such a language intuitive and human readable whenever they get that far.

    11. Re:That's not the solution, this is by Anonymous Coward · · Score: 1

      My Dad was a bit like that, Mum introduced him to Science Fiction and made him read enough to get him hooked on the story. He now has no problem with reading.
      Took me longer than most kids to pick up reading so she used the same technique on me, couple of years later my reading comprehension was far above my age group.
      Writing and spelling have never really caught up though. still have problems with that at 30.

    12. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      old hag grandma C and its ugly cellar mutant C++.

      In that context, what would C# and Java be?

    13. Re:That's not the solution, this is by Interoperable · · Score: 1

      I don't think that's an answer to the same problem. The problem is that it simply isn't possible to make a general purpose processor arbitrarily small due to power dissipation. You can parallelize all you want, you still might not hit the same performance for specific tasks that optimizing the processor architecture itself will. Quite clever if chips customized to particular phones can be cost effective.

      --
      So if this is the future...where's my jet pack?
    14. Re:That's not the solution, this is by DurendalMac · · Score: 4, Funny

      Java is a lumbering, bloated behemoth that everyone seems to know, but far less know well. C# is what happened when Microsoft knew Java in a Biblical sense.

    15. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      Your post suggests you don't even know what dark silicon is. However, I do admire your attempt to hijack the link with your own vaporware pet project!

    16. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      The "manifesto" seems like a lot of words for saying the language is single assignment. It also mentions a lot of implementation stuff that's not really language related ("no stack"? As an example C semantics can be supported by a variety of methods without requiring a stack).

      -- Megol

    17. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      How does this solve the problem that your processing unit becomes too hot? It just lets you do parallelisation right. While that's important, TFS describes a problem with heat.

      (fun fact: CAPTCHA = flowed)

    18. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      It's possible to design a language that doesn't allow cyclical data structures or only limited cyclical structures (that can easily be GC without overheads). This is possible in a single-assignment language with borrow/own semantics. A reference passed to a function is considered either borrowed (the function can't capture it, only read it or pass it to another function taking a borrowed reference) or owned (the passed reference is considered consumed and the function can read, modify or capture it)

      A limited cyclic structure is one that supports cyclical structures within an object but not between several objects. In this case GC can be done whenever the object isn't referenced anymore (ignoring the internal cycles).

      -- Megol

    19. Re:That's not the solution, this is by Nimatek · · Score: 1

      You're right about Haskell being a beautiful language, but it is not as fast as C/C++. Even Java is usually faster. It's still pretty fast for a declarative language and has a C interface for when you need to speed up certain parts of code.

    20. Re:That's not the solution, this is by serviscope_minor · · Score: 1

      Plus it is a language of almost orgasmic elegance on the forefront of research that still is as fast as old hag grandma C and its ugly cellar mutant C++.

      People always claim this. And always against C and C++. It's essentially never true except for a) FORTRAN and b) occasional synthetic benchmarks. While it is undeniable elegant, the lack of for-loops is anything but elegant in scientific computation, image processing etc.

      Does Haskell allow you to parameterize types with integers yet? It didn't last time I looked and that is one feature of C++ I really couldn't live without.

      --
      SJW n. One who posts facts.
    21. Re:That's not the solution, this is by m50d · · Score: 2

      You're right about Haskell being a beautiful language, but it is not as fast as C/C++.

      Depends on the problem. My previous company found the Haskell proxy we wrote for testing could handle 5x the load of the best (thread-based) C++ implementation.

      --
      I am trolling
    22. Re:That's not the solution, this is by hairyfeet · · Score: 2

      Not to mention what is so bad about 'dark silicon' (ohhh scary name) anyway? That is how AMD Radeon chips deal with those huge amounts of stream processors, just turn off the ones that aren't being used to save power, and kick them on when you do need the muscle. Or how both AMD and Intel use the extra heat savings from turning off unneeded cores to allow a speed boost with TurboCore.

      Personally I'd rather have a device that had plenty of "dark silicon" so that it can kick it on long enough to do large jobs quicker then quickly drop back down than I would have a device with tons of specialized chips all sucking power, especially if they don't turn off when not needed (thus making them dark silicon) thus constantly trickling away juice.

      Besides didn't we go through that in the 80s with machines like Amiga, and in the 90s with Sega Saturn and the 00s with PS3? Didn't they all turn out to be more of a PITA to program? And reading TFA it seems they are saying sometime in the future you'll hit a wall on heat transfer and as you go lower down the nanometer chain the worse things will be. Well when we get to that point wouldn't the smart answer simply be to stop trying to go lower?

      --
      ACs don't waste your time replying, your posts are never seen by me.
    23. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      Not to be a dick, but the phrase in your sig should be, "for all intents and purposes". I'm definitely not a grammar nazi, hell mine ain't all that great, but I figured it would be nice to let ya know.

    24. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      That simply shows that it doesn't matter if a compiler produces world's fastest binaries if the language and the environment make finding performance bottlenecks too difficult.

    25. Re:That's not the solution, this is by Kjella · · Score: 1

      Left to himself, a typical 5 page job application takes a couple of hours and many phone calls to complete.

      Not so many phone calls, but job applications can take me a while. The "spray and pray" variety may be useful if you're unemployed, but if you already have a job and it's one of those rare opportunities I could easily spend 2 hours on it. Not because of language problems but for making the best possible application for the position. It's usually well spent time.

      --
      Live today, because you never know what tomorrow brings
    26. Re:That's not the solution, this is by Jimbookis · · Score: 1

      Haskell reminds me of glossolalia. Every time I take a look at it all I see is gobbledygook with the proponents of it claiming they have seen God.

    27. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      > Now I wonder, is it possible to do a static analysis on a parse tree for some language and determine whether or not it could create cyclic references at runtime?

      You can take the conservative approach and look for cycles in the type system. If an object of type A can only contain references to objects of type B and objects of type B can only contain references to objects of type C and so on, then there can't be any cycles.

      And it doesn't have to be all-or-nothing. If you can identify specific types which don't allow cycles, you can prune the garbage collection at that point. The net result is that garbage collection may only need to traverse a fraction of the total data.

    28. Re:That's not the solution, this is by Jesus_666 · · Score: 2

      Whooosh. The whole sig is a collection of language abuses commonly seen on the internet.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    29. Re:That's not the solution, this is by NoSig · · Score: 1

      That helps, but it will still require powering up all the silicon you are using. In this apporach you only power up the part of the special-purpose silicon you need, but in return get much greater speed out of that piece of silicon. This is more power-efficient if you need some of what is on the chip.

    30. Re:That's not the solution, this is by tepples · · Score: 1

      Haskell [...] is as fast as old hag grandma C and its ugly cellar mutant C++.

      As I understand it, purely functional languages use a lot of short-lived immutable objects and therefore generate a lot more garbage than languages that rely on updating objects in place. If your target machine is a handheld device with only 4 MB of RAM, this garbage can mean the difference between your design fitting and not fitting. And for a design on the edge of fitting, this garbage can mean the difference between being able to keep all data in RAM and slowing down to read the flash over and over.

    31. Re:That's not the solution, this is by JamesP · · Score: 1

      I like Haskell but it has its warts.

      The main problem of Haskell is going "full functional", with monads, etc. Monads are very difficult to understand and master.

      Still, I think Haskell is much more close to "the solution" than Lisp for example. (or maybe Scala gets better)

      Not to mention it's great to play with Hugh/GHC with its interactive console

      --
      how long until /. fixes commenting on Chrome?
    32. Re:That's not the solution, this is by istartedi · · Score: 1

      Now this is what Slashdot should be. Your answer is a bit more clear to me than the "borrown/own semantics" the other poster described. Since Haskell is "type oriented", would anybody be aware if it does this kind of analysis?

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    33. Re:That's not the solution, this is by istartedi · · Score: 1

      It took me a bit longer to parse your answer than the one further down.

      As long as I've been studying languages this is the first I've heard of the term "single assignment". After looking at the wiki for it, it seems to be nothing more than the consequence of being "purely functional". Maybe that's why I haven't heard it yet, the former being quite common in things I've read. Borrow/own is obvious enough.

      I'm not sure if limiting yourself to purely functional programming qualifies as a "cheat" or not. Every practical "functional" programming language I've looked at has some kind of hack to let you do non-functional programming. Some even have object systems (CLOS, for example). It seems to be human nature to not do purely functional programming. The real world is not purely functional. Some of the things you need to interact with the real world (like Monads) are difficult to grasp and/or not explained well. In some ways that's a good thing--it means there's still interesting work for language designers.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    34. Re:That's not the solution, this is by thisisauniqueid · · Score: 1

      You can create memory in "arenas" (an overloaded word, unfortunately) where the entire arena is freed at once. e.g. you can create a graph as a collection of nodes that can have arbitrary inter-connectivity. When the the last reference to anything in the collection is dropped, the whole collection is freed. This will cover a lot of cases with circular deps.

    35. Re:That's not the solution, this is by Intron · · Score: 1

      You're right about Haskell being a beautiful language, but it is not as fast as C/C++. Even Java is usually faster. It's still pretty fast for a declarative language and has a C interface for when you need to speed up certain parts of code.

      Who cares? CPUs are 1000X as fast as they were 12 years ago, but I/O speed has barely changed. There are no CPU-bound problems anymore.

      The only thing that matters is programmer efficiency. It takes 5X as long to write C code as to solve the same problem in a modern language.

      --
      Intron: the portion of DNA which expresses nothing useful.
    36. Re:That's not the solution, this is by TheRaven64 · · Score: 1

      The main problem of Haskell is going "full functional", with monads, etc. Monads are very difficult to understand and master.

      Monads are what makes Haskell interesting. Take a look at some of the stuff like the STM implementation from Simon Peyton-Jones's group, for example. Functional programming without monads is just imperative programming with a bunch of irritating and pointless constraints.

      --
      I am TheRaven on Soylent News
    37. Re:That's not the solution, this is by thisisauniqueid · · Score: 1

      Well in multicore processors (I use a 24-core machine almost every day for my work), the percentage of silicon that is "dark" as defined by TFA ("Dark silicon is a portion of a microchip that is left unused") is increasingly just general purpose computing hardware (instruction pipeline, ALU, non-shared cache etc.) that belongs to cores that are sitting idle, i.e. it's not specific hardware that implements unusual vector instructions or anything like that, it's due to entire cores being unused. In that sense the response you criticized exactly answers the original problem by dealing with the problem of making optimal use of all the available cores in a machine with zero increased programmer effort due to proper language support for implicit parallelization. Currently vaporware, yes, because it is in the design stage. But it very much deals with dark silicon, specifically the multicore aspect of the problem.

    38. Re:That's not the solution, this is by MHolmesIV · · Score: 1

      Actually, no. Dark Silicon is not about having too many cores to effectively use them all at the same time. It's about maintaining a power envelope when your number of transistors is going up.

      Currently we lower the voltage when we increase the number of transistors, which keeps power usage and heat generation in check. But we're at the limit of what voltage will work, especially since electron leakage becomes more of a problem the smaller your transistor. So dark silicon will be necessary to ensure reasonable power usage and heat reduction. Nothing to do with the code running on the core.

    39. Re:That's not the solution, this is by thisisauniqueid · · Score: 1

      Great explanation, thanks.

    40. Re:That's not the solution, this is by Anonymous Coward · · Score: 0

      Who cares? CPUs are 1000X as fast as they were 12 years ago, but I/O speed has barely changed. There are no CPU-bound problems anymore.

      Have you ever tried to do a complex problem?

      Example: A high-resolution input image, like aerial imagery, with some (user-chosen) points matched up to real-world geographic coordinates, so that you need a decent 3rd-power or 4th-power transformation to get a reasonable approximation of where the points go. Support 2- to 6-core processors, and display it on a rectangular projection of the earth you can zoom in on up to 1:1 of the source image.

    41. Re:That's not the solution, this is by drb226 · · Score: 1

      Asking for "for loops" will make most functional programmers chuckle. Usually what you want is a fold (or a special fold like a filter or a map). Speaking of parallelization, the semantics of generalized for loops require that each iteration be performed sequentially. What if you want to perform each iteration in parallel?

      As for number-parameterized types, I haven't dealt with it myself, but I'll just leave this here: Number-parameterized types by Oleg

    42. Re:That's not the solution, this is by drb226 · · Score: 1

      Wake me up when it's released.

    43. Re:That's not the solution, this is by garyebickford · · Score: 1

      I think you're behind the curve a bit - some review of the features of functional languages may be in order. Haskell really is fast, from what I've read and seen. Some of the 'program some standard thing in a zillion languages' websites have example Haskell implementations that are pretty performant.

      The key to the 'no loops' issue is simple - tail recursion. I quote excerpts:

      In computer science, a tail call is a subroutine call that happens inside another procedure and that produces a return value, which is then immediately returned by the calling procedure.
      [...]
      Tail calls are significant because they can be implemented without adding a new stack frame to the call stack. Most of the frame of the current procedure is not needed any more, and it can be replaced by the frame of the tail call, modified as appropriate. The program can then jump to the called subroutine.
      [...]
      in functional programming languages, tail call elimination is often guaranteed by the language standard, and this guarantee allows using recursion, in particular tail recursion, in place of loops.

      I personally like Erlang better - it's more of a 'real world' rather than 'ivory tower' language in its approach and I find it easier to program. Erlang was designed as a useful, extremely reliable language that supports tens of thousands of threads on multiple processors (not even in the same location). Since it was designed as the language to program Ericsson telephone switches with downtime of one or two seconds per year, it had to be good at these things. (It also allows replacement of any part of the code without stopping.) Practicality was more important than theoretical purity. Erlang is slower than Haskell, but I still like it better.

      While I haven't written anything serious in Erlang, I was able to write multi-threaded programs that dynamically allocated threads on multiple machines, within a few hours of reading the book, _without_ worrying about most of the usual parallel programming issues such as semaphores, memory mapping, etc. Since image processing is a highly parallel problem, most IP problems are very amenable to such easy-to-do multiprocessing. So also, many types of databases (see CouchDB), and many problems that require rapid dynamic scaling, (see Jabber server). If your program can dynamically decide how much resources it can use and needs, and spawn as many threads on as many processors as is appropriate, I would say that's an order of magnitude more potential than a FORTRAN program. Of course highly-parallel programs by nature tend to require systems that are structured appropriately for the program. Vector processors like Cray (at least the old ones) are good for 'rectangular' problems; but not so good for tree-structured problems, database systems, dynamic I/O handling and other problems that functional languages do very well on.

      Imagine implementing something like Jabber or Twitter in FORTRAN! I don't miss programming in FORTRAN - my first 3D graphics programs were in FORTRAN, and it was neither easy, nor very productive. FORTRAN was pushed well beyond its real competence to make the SIGGRAPH Core 3D graphics library standard a workable system. The influential Tektronix "Interactive Graphics Library" 3D Core library was actually programmed using MORTRAN, a structured macro preprocessor, in order to provide a better big-system programming structure.

      Of course, since these newer languages' compilers are all written in C or C++, one can argue they are just fancy-schmancy C programs, at least until compiler optimization for functional programming takes these language implementations to a new level. :)

      --
      It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
    44. Re:That's not the solution, this is by garyebickford · · Score: 1

      I wouldn't use Haskell (or Erlang) to write a device driver; I wouldn't use C to write much of anything else. Just as we have automotive vehicles that range from scooters to huge Terex earthmovers, it's important to use the right tool for the job. A friend of mine used to have a Volkswagen bug that had been converted to a pickup truck. It wasn't pretty! :D I wouldn't run a million row relational database on your 4MB device either.

      --
      It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
    45. Re:That's not the solution, this is by oliverthered · · Score: 1

      it's in the self.

      --
      thank God the internet isn't a human right.
    46. Re:That's not the solution, this is by aix+tom · · Score: 2

      Definitely. As a programmer myself, I can switch *language* pretty quick. There are even some pretty easy to use GUI tools out there where "normal non-programmers" can implement something.

      The problem is that very few people seem to be able to LOGICALLY solve a problem, that is define what should happen when certain conditions are met. Basically the definition of "what should the program do exactly?". Getting THAT defined is 90% of the "programming" problem. And that can't really be solved by different languages or different tools.

    47. Re:That's not the solution, this is by oliverthered · · Score: 1

      ohhh.. often the problem is that they can define when logical conditions are met, they just can't then generalize and turn it into patterns etc... and well that's all too much like hard work when I can just hack and slash myself through the day...

      it's like they've written a function in C++ but the body of the function looks more like very bad prologue.

      void foobar(int &a)
      {
      int tmp = a;
      if (a = 1)
      {
      a*=a;
      a=(int)sqrt(float)a));
      a++;
            if (a + 1 = 2 )
      {
      printf ("goofie%d", a);
      }
      a--;
      } else if (a 0)
      {
      }
      if (a 0)
      {
      }
      a = tmp;
      }

      and of-course their XSLT looks like a bad day with asp and grep, so they clearly can't turn that prologue like C into prologue like XSLT.

      CDATA.... ahhh.........

      I usually write XSLT as with a few document() selects a few includes and XML 'control and data' in a number of separate files to work on the document I want to transform and it's all pretty nice, neat, easy,modular etc.... (tail recursion not withstanding).

      --
      thank God the internet isn't a human right.
    48. Re:That's not the solution, this is by ImprovOmega · · Score: 1

      C# is the cool teenage hipster that talks a lot but doesn't actually do anything on his own. He just gets his buddies (.Net) to do everything for him, and if they won't do it, he'll tell you it doesn't need to be done.

      Java is the overachieving straight A's wants-to-do-everything crazy girl that can't settle on what she wants to do because she's busy doing it all but not being particularly good at any one thing.

    49. Re:That's not the solution, this is by badkarmadayaccount · · Score: 1

      GHC is written in Haskell. And modern Fortan (2005) is much more advanced than the 66/77 versions.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    50. Re:That's not the solution, this is by badkarmadayaccount · · Score: 1

      Frankly, I was thinking the other way around. A pattern matching Lisp macro library would really hit the spot, though OCaml style grammars would be the nail in the coffin for other functional langs.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    51. Re:That's not the solution, this is by badkarmadayaccount · · Score: 1

      Immutable objects don't allow cycles to form without notice - in Haskell, and Tcl interestingly, it's a non-issue.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  3. Not required.. by willy_me · · Score: 5, Informative

    The CPU in a cell phone does not use much power so there is little to gain. Now if you can make more efficient radio transceivers - that would be something. Or the display, that would also significantly reduce power consumption. But adopting a new, unproven technology for minimal benefits.... That's not going to happen.

    1. Re:Not required.. by ChronoReverse · · Score: 1

      Agree 100%

      The two biggest power draws are the screen and radios. This is what needs to be made more efficient.

      With proper GUI design and AMOLED screens, the screen power draw can be drastically reduced but things like the 3G radio drain power like mad if the signal isn't perfectly strong (while 4G radios gobble power under all circumstances).

    2. Re:Not required.. by gman003 · · Score: 2

      Hell, even in laptops that's the case. I've got a high-end (well, medium-end now, but two years have gone by) gaming laptop. I've noticed that the biggest power draw is unquestionably the display - just turning the brightness down triples my battery life. Then comes turning off the wifi/bluetooth (there's a handy switch to do so), which gives me an extra half-hour. And this is while the Crysis-running CPU and graphics card are on normal gaming settings. Setting the CPU to half the clock speed barely gives me five more minutes.

    3. Re:Not required.. by artor3 · · Score: 1

      Unfortunately, there's a pretty fundamental problem with making more efficient transceivers. They have to operate, by their very nature, at high frequencies. High frequency signals inevitably draw more current, because they see capacitors as having a low impedance. Basic EE stuff: Z = 1/(jwC). And how do we generate the radio frequency? With a VCO that invariably involves big capacitors (big for an IC, at any rate). Those VCOs typically end up drawing at least 50-60% of your operating current.

      Another third or so is the amplification, no real way around that unless you find a way to cool the universe a couple hundred Kelvin so we can lower the noise floor. Then you have all the DACs and ADCs and comparators and whatnot that do all the mod/demod and soak up the rest of your current, but they're pretty small potatoes.

      Build a better VCO and the world (or at least Silicon Valley) will beat a path to your door.

    4. Re:Not required.. by FishOuttaWater · · Score: 1

      So, what we really need to be working on is connecting the output directly to your brain and skipping all that wasted light.

    5. Re:Not required.. by rrohbeck · · Score: 2

      The CPU in a cell phone does not use much power so there is little to gain.

      Except when it's running Flash video or similar crap.

    6. Re:Not required.. by artor3 · · Score: 1

      Well, some companies are working on HUD goggles for personal computers, so I guess that's a step in the right direction, even if it does make you look like a total dork.

    7. Re:Not required.. by timeOday · · Score: 1

      I wonder if you could make a high gain steerable antenna to track the dish on the cell tower while you're transmitting? Or, if it *really* tracked accurately, how much power would be needed to transmit the signal over the same range with a laser?

    8. Re:Not required.. by Anonymous Coward · · Score: 0

      even if it does make you look like a total dork

      Come now, that ship sailed long ago.

    9. Re:Not required.. by artor3 · · Score: 1

      Lots of problems with the laser... how does the phone know where the closest tower is, especially if you turn it off while flying across the country or the world? What happens if something gets in the way of the laser? Can you even use it inside?

      A directional, directable antenna might be possible, but it still presents some problems. You'd need a moving part with three axes of motion that can respond as quickly as a person swings a phone from one ear to another, and you'd need the motors behind it to operate on low enough current for it to be worthwhile. And moving parts tend to break. Maybe there are directional antennae that can be steered electrically (as opposed to mechanically).... that's really outside the scope of my knowledge.

      A better solution, which I think we'll have to move to regardless as the wireless spectrum becomes more crowded, is to focus on short range wireless with ubiquitous minitowers connected up with fiber. Spend as little time in the air as possible. Less signal is lost, fiber transmits faster anyway, and you only need to compete for spectrum with people in your immediate vicinity. Rural areas would still be problematic though.

      Unfortunately, that still leaves the bulk of the power getting used up in your LO. Maybe some physicist will come up with something awesome, like an electrically-controllable phononic oscillator or who knows what. But as long as we're using the current method, I don't see us getting more than a 30% improvement in energy efficiency out of transceivers.

    10. Re:Not required.. by SuricouRaven · · Score: 1

      WANT!

      Stareing into someone's eyes, you'll be able to see the porn they are viewing reflected off their cornea.

    11. Re:Not required.. by SuricouRaven · · Score: 1

      You can do a directional, steerable antenna with no moving parts using software radio and an array. But it'd still be impractical for phones - too big, and it'd take even more power. Perhaps at the base stations it might be of more use. The better the SNR you recieve by excluding sources of interference, the less power the phone needs to transmit. With an array and the right software, a base station could have a thousand virtual directional antennea, all turning to track an individual handset in real time.

    12. Re:Not required.. by SuricouRaven · · Score: 1

      I found two things will drain my phone quickly: Angry Birds and ebuddy. The latter I assume because it keeps the radio on continually.

    13. Re:Not required.. by willy_me · · Score: 1

      I wonder if you could make a high gain steerable antenna to track the dish on the cell tower while you're transmitting?

      What you described could be done without physically moving the antennas. Read a paper on it a few years ago (sorry, no link) where some researchers built an antenna on a chip that consisted of hundreds of different physical antennas. By applying the signal to different antenna at different times, a directional beam can be formed, much like yagi. But unlike a yagi, the beam can be sent in any direction, one just has to alter the timing. I believe it is similar to how modern RADAR works.

    14. Re:Not required.. by Anonymous Coward · · Score: 0

      I think you kind of missed the point. The article is saying that without the ability to reduce voltage, power consumption will double with each chip generation, i.e. exponentially with time. So even if CPU power consumption isn't a problem now, it will be very soon. If you accept that power consumption must stay about the same, then we are left with no alternative than to turn off 1/2 the chip in the first gen, 3/4 in the next, 7/8 in the next etc. So now we have to choose which 1/8 to run, which we probably want to be the 1/8 best suited to the task at hand. The article is suggesting just one way to do this.

    15. Re:Not required.. by Anonymous Coward · · Score: 1

      And how do we generate the radio frequency? With a VCO that invariably involves big capacitors (big for an IC, at any rate). Those VCOs typically end up drawing at least 50-60% of your operating current.

      I can tell you from direct experience that the VCO (voltage controlled oscillator) used to generate the high frequency carrier is not the issue. The radio I'm messing with right now, in standby with the xtal and VCO running draws 200uA. 50uA with just the xtal. The problem with the radio's is

      1) The demodulation circuitry is computationally expensive. Though as dies shrink this becomes less of an issue.
      2) Transmit power, here you are up against a wall. You need to transmit a high enough power so that the far end receiver has enough signal to noise to work with. Directional antenna's at the cell tower cell helps in a lot of ways.

      And then you have the network stack, link management and things that deal with the either.

    16. Re:Not required.. by Anonymous Coward · · Score: 0

      Just think of the possibilities during speed dating. No need for that later discussion about the funny and possibly magical clothes the other person is about to wear during an intimate moment..

    17. Re:Not required.. by Jesus_666 · · Score: 1

      Of course CSI Miami would do this through a surveillance camera, zooming into the reflection and determining the eye color of the porn actress.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    18. Re:Not required.. by Anonymous Coward · · Score: 0

      The CPU/GPU uses far more power @ 100% than wifi... the difference is you can't turn it off. And as you discovered, slowing it down doesn't have much effect. Run SETI@Home while playing a game and see how long your battery lasts if you need to see this to believe it. That's what the article is talking about in regards to dark silicon... in modern laptops, it's about turning off as much of the CPU as possible when in an idle state (which is most of the time) and using the CPU for graphics instead of more power hungry external GPUs.

      As for phones, I've discovered that when my Droid is idling, it can go for almost 2 days without a charge, but if I'm using the GPS while playing pandora, I can drain the battery in about 3 hours. I think everything has an effect on this one... CPU usage is high and the screen stays on for navigation and Pandora keeps the radios constantly in use.

    19. Re:Not required.. by artor3 · · Score: 1

      What frequency are you working in? Obviously something like AM/FM radio, RFID, or TV will draw low current because the frequency is relatively low. But once you start getting up to the GHz range, there's no way a VCO could draw that little current, unless your entire radio had less than 30 fF of capacitance. Are you sure it's the RF VCO that's running, and not some IF one?

    20. Re:Not required.. by Anonymous Coward · · Score: 0

      "The CPU in a cell phone does not use much power"

      Except that users of smart phones are complaining about short battery life.

      Not to mention that many other computing devices (mobile and non-mobile) would also benefit from a 10-fold increase in energy efficiency.

      "minimal benefits"

      wut?

    21. Re:Not required.. by currently_awake · · Score: 1

      Google Phased array antenna, it's a non mechanical directional antenna. Also suggest looking up ceramic resonators, they allow building much smaller radio transievers with lower power use. If the VCO uses half the power then don't use one, just have fixed frequencies using crystals (trade larger size for lower power).

    22. Re:Not required.. by artor3 · · Score: 1

      You can't really get around using a VCO. Ceramic resonators lack the accuracy needed for complex modulation. You need the sub-100 ppm accuracy of a crystal, but crystals can't operate in the GHz range. So you use the crystal as a reference for a PLL and multiply the frequency up to the desired level, and VCOs are an integral part of PLLs.

      Also, using a ceramic resonator wouldn't allow for "smaller" transceivers. Transceivers are already integrated circuits, with the only external components being a crystal and maybe some tuning components on the antenna.

    23. Re:Not required.. by Agripa · · Score: 1

      Basic EE stuff: Z = 1/(jwC). And how do we generate the radio frequency? With a VCO that invariably involves big capacitors (big for an IC, at any rate). Those VCOs typically end up drawing at least 50-60% of your operating current.

      The capacitor in a VCO is in a tuned circuit so the circulating power can indeed be high but the actual power draw is much much lower. If this was not the case, then the tuned circuit Q would be low leading to high oscillator noise.

      Close in phase noise is actually a significant limitation leading to relatively high VCO transistor bias current but compared to the power amplifiers where linearity is a limitation it is still insignificant.

      RF power amplifier efficiency rarely gets above 30% and that is for a device which is already drawing a lot of power anyway. The biggest improvements there involve better but more complicated designs using things like predistortion or Doherty amplifier design to yield better linearity for a given efficiency.

    24. Re:Not required.. by badkarmadayaccount · · Score: 1

      Lack of spectrum is the issue. In better deigned cellular standards, it's a smaller issue, but with Wi-Fi it's painfully obvious - hell, the sucky multiple access/modulation method is designed around it. And it requires linear amps...

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  4. Link to attached Paper about specialized cores... by file_reaper · · Score: 3, Informative

    http://cseweb.ucsd.edu/users/swanson/papers/Asplos2010CCores.pdf

    They call the specialized cores "c-cores" in the paper. I took a quick skim through it. C-cores seem like a bunch of FPGA's and they take stable apps and synthesize it down to FPGA cells with the use of the OS on the fly. The C-core to hardware chain has Verilog and Synopsis in it.

    Cool tech, guess they could add gated clocking and all the other things taught in classroom to further turnoff these c-cores when needed.

    cheers.

  5. Nice idea... by LongearedBat · · Score: 1

    A couple of thoughts:

    1. The common functionalities surely would include OS API's, as they seem pretty stable. But would they include common applications such as social networking apps, office apps, etc.?

    2. If a patch is necessary, then upgrading hardware might be a little tricky. This will become a serious issue with the invasion of malware.

  6. ZX81 logic array 100% used... by Anonymous Coward · · Score: 1

    The Sinclair ZX81 replaced fourteen of the chips used on the ZX80 with one big programmable logic array chip that was only supposed to have 70% of the gates programmed in it. However, Sinclair used up all the gates on the chip and it ran nice and hot because of that. I suppose that the design could have used two chips instead, leading to lots of dark silicon and a cost implication.

  7. Benchmarks in June. by ChunderDownunder · · Score: 1

    I realise openjdk's is stack-based vm and dalvik is register-based. But aren't they essentially mapping virtual machine instructions to hardware instructions? In a rudimentary manner this was tried a decade ago with Java. It was found that general purpose processors would spank a Java-CPU in performance due to the way that a VM would interact with a JIT instead of processing raw instructions.

    [Aside - ARM does include instructions for JVM-like code - Jazelle/ThumbEE. Can/does Dalvik even take advantage ?]

    The extent to which this idea can escape from a research lab depends on relative performance. Quite interesting from the power consumption aspect though.

    1. Re:Benchmarks in June. by jensend · · Score: 1

      A quick Google search only turns up one serious discussion about the possibility of a ThumbEE - oriented Dalvik. The only reply wasn't very optimistic about it, saying that a 16-cycle mode switch between ThumbEE and regular instructions makes it unlikely to be worth it.

      More's the pity- I really think VM guys and processor design folks need to get their heads together.

    2. Re:Benchmarks in June. by ChunderDownunder · · Score: 1

      Cheers. I'm assuming the original instructions were concocted for Sun's proprietary Java ME/SE embedded platforms - AFAIK, none of which supported has made it into phoneME, openjdk.

      Maybe if MIPS had 'won' on phones we'd greater synergy e.g. The reverse of NestedVM.

  8. Re:Darkies by Anonymous Coward · · Score: 3, Funny

    Why is it dark silicon they fight against? This represents the struggle of the black man to overcome racial prejudice and retake the word "nigger". The parallels are deep, man.

    Exactly. Why do you think green olives are in glass jars and black olives are in tin cans? So the black olives can't look out. It's subliminal racism I tell you.

  9. If they can get my phone to last a week or more by sandytaru · · Score: 1

    - then I'll be impressed. Currently I sit at 3 days with very heavy usage, and 5-6 days with low to moderate usage. If this sort of mult-core stuff breaks the all important one week barrier, then it'll be a welcomed technology.

    --
    Occasionally living proof of the Ballmer peak.
    1. Re:If they can get my phone to last a week or more by Anonymous Coward · · Score: 0

      my Pre is more like 3 hours of heavy usage, one day of moderate usage, and maybe two if I don't use any of the smart phone functions or as a phone.

    2. Re:If they can get my phone to last a week or more by RobbieThe1st · · Score: 5, Insightful

      They can, they just don't want to. All they have to do is make it slightly thicker amd double the size of the battery.
      Heck, I want to see a phone where the battery is the back cover(like the old Nokia dumbphones), and also has a small second battery inside it, something that can power the ram/cpu for 5 minutes.
      Then, you can just yank the dead battery, plug a new one in /without rebooting/.
      It would also allow for multiple battery sizes: Want a slim phone? Ok, use a small battery. Need two weeks of life? use a large battery.

      Easy solution.

    3. Re:If they can get my phone to last a week or more by perryizgr8 · · Score: 1

      long ago i saw phones from philips(!) that they claimed had a battery life measured in months. the main problem with your need is that most people are ok with 5-6 days of battery on a smartphone.

      --
      Wealth is the gift that keeps on giving.
    4. Re:If they can get my phone to last a week or more by Sloppy · · Score: 1

      They can, they just don't want to.

      This is one of the great mysteries of the phone market, a situation where it seems to my ignorant amateur eyes that they're doing the same thing as the MPAA companies: saying, "No, we don't want your money. Fuck off, customers. Go find someone else to do business with."

      Wouldn't a 2011 phone whose battery lasts as long as a 2006 phone sell like hotcakes? Is "slim" really all that "cool?"

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    5. Re:If they can get my phone to last a week or more by Anonymous Coward · · Score: 0

      Same with my Samsung Galaxy Captivate android phone. Terrible battery life.

    6. Re:If they can get my phone to last a week or more by RobbieThe1st · · Score: 1

      Honestly, yes. Go look on the Maemo forum: There's a "mugen" aftermarket battery with double the capacity of stock. It makes the phone about a quarter-inch thicker, though.
      Some people like it, others complain that the phone's /already/ too fat!

  10. cost inefficient by aepurniet · · Score: 1

    guess using unused space is a good thing, but will it be cost effective to make these huge low nm chips? it might be more cost efficient to include two higher process chips. also batteries are always getting a little better (albeit very slowly). i think android phones especially would benefit from more cores. there are hundreds of threads running on that OS with just a few apps open.

  11. Drama by SnarfQuest · · Score: 1

    Dark Silicon: Luke, I am your father.

    --
    Who would win this election: Andrew Weiner vs Andrew Weiner's weiner.
    1. Re:Drama by Anonymous Coward · · Score: 0

      Luke, the lukewarm circuit outputs an agonized answer: "NOOoooP, that assertion holds no voltage. I just power gated!"

  12. asynchronous design ? by cats-paw · · Score: 1

    the claim is that this is the most power efficient design route.

    the problem is that there just aren't the sophisticated tool sets you need for design and analysis.

    of course I've never been clear on why you couldn't just use the asynchronous design ideas and substitute
    very low clock speeds in place of disables or some such thing.

    not a digital designer so can't get too far into the details.

    --
    Absolute statements are never true
  13. Re:Link to attached Paper about specialized cores. by Anonymous Coward · · Score: 0

    Well that makes some sense, when you implement functions in FPGA/silicon you usually get a 10X/100X reduction in the number of gates needed and power consumed over compiled code. I will point out though that 'writing' FPGA code is 10X harder than programming in C/C++ let alone Java/C#/Python so it's more likely that such would be used for OS code and drivers.

  14. But what do you put in a specialized core? by Animats · · Score: 4, Insightful

    Specialized CPU elements have been tried. The track record to date is roughly this:

    • Floating point - huge win.
    • Graphics support - huge win, mostly because graphics parallelizes very well.
    • Multiple parallel integer operations on bytes of a word - win, but not not a huge win.
    • Hardware subroutine call support, such as register saving - marginal to negative. Many CPUs have had fancy CALL instructions that were slower than writing out the register saves, etc.
    • Hardware call gates - in x86, not used much.
    • Hardware context switching - in some CPUs, not used much.
    • Array instructions - once popular at the supercomputer level, now rare.
    • Compression/decompression (MPEG, etc.) - reasonable win, but may be more useful as part of a graphics device than a CPU.
    • List manipulation, LISP support, Java stack support - usually a lose over straight code.
    • Explicit parallelism, as in Itanium - usually a lose over superscalar machines.
    • Filter-type operations (Fourier transform, convolution, wavelets, etc.) - very successful, but usually more useful as part of a signal processing part than as part of a CPU.
    • Inter-CPU communication - useful, but very hard to get right. DMA to shared memory (as in the Cell) seems to be the wrong way. Infiniband, which is message passing hardware, is useful but so far only seen in high end machines.
    • Hardware CPU dispatching - has potential if connected to "hyperthreading", but historically not too successful.
    • Capability-based machines. - successful a few times (IBM System/38 being the best example) but never made it in microprocessors.

    A lot of things which you might think would help turn out to be a lose. Superscalar machines and optimizing compilers do a good job on inner loops today. (If it's not in an inner loop, it's probably not being executed enough to justify custom hardware.)

    1. Re:But what do you put in a specialized core? by Anonymous Coward · · Score: 0

      • Hardware call gates - in x86, not used much.
      • Hardware context switching - in some CPUs, not used much.

      Except with every system call on any machine that uses protected memory...

      Given that system calls are somewhat expensive, the "not used much" is rather a feature.

    2. Re:But what do you put in a specialized core? by Anonymous Coward · · Score: 0

      Most of these efforts do not consider energy.

    3. Re:But what do you put in a specialized core? by siride · · Score: 1

      I think he's referring to the x86 task feature, whereby the hardware would actually handle a context-switch instead of having the software set everything up manually. Neither Linux, nor Windows, nor the BSDs (and thus Mac OS X) use this feature, although the very earliest versions of Linux did. It's faster and less error-prone to do it in software.

      Call gates are also not used, if they indeed ever really were. Old days: interrupts for system calls. These days: syscall or sysenter instructions, which are specially designed to transfer to ring 0 and do it fast.

    4. Re:But what do you put in a specialized core? by MickLinux · · Score: 1

      One thing that I think *would* be a win for scientific calculation programs of many sorts:

      A program that takes two arrays of doubles,

      A1,A2,A3,A4... A98, A99,A100...
      B1, B2, B3,B4... B98,B99,B100...

      And given the start of A, start of B, and number of elements in each, parallelizes the sumproduct of
      A1*B(N) + A2*B(N-1) + A3*B(N-2)... + A(N-1)B2 + A(N)B1.

      The reason for this, is that many, many differential equation initial-value-problems can be solved exactly using the Parker-Sochacki solution to the Picard iteration... but it is calculation intensive.

      Doing this would allow live simulation on a grand scale.

      --
      Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's
    5. Re:But what do you put in a specialized core? by garyebickford · · Score: 1

      This reminds me of a funny experience I had in school a long time ago. The school had a brand new 'Harris 220' (formerly Perkin Elmer) timesharing machine. It used a timesliced architecture where every task gets its little slice of the CPU every so many milliseconds. I was helping a math student implement a small program to produce ten values of a particular function - I recall it was a Bessel function but I'm not sure - to 7 or 8 decimal places. The function converges very slowly, so we kept adding iterations to the inner loop.

      We started with 100 iterations, and got 2 digits. Increasing ever higher, we got to 1 million iterations in the inner loop, and were finally getting sufficient decimal accuracy. Each result took about a minute, so we just watched.

      Then the phone in the lab rang - it was the sysadmin, hollering "What did you do to my machine!!!???" It turns out that the inner loop was small enough to fit into the processor's hardware cache, and the timeslice logic was outside the CPU so could only get executed once before the CPU went back into the inner loop. Since the computer handled the I/O for every terminal on campus directly, all over campus the terminals were typing one character out, then waiting a minute, then another character, then wait a minute, ... :D

      --
      It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
    6. Re:But what do you put in a specialized core? by ImprovOmega · · Score: 1

      Well...*puts on SSE hat*

      Depending on the precision that you require, you could bolt those either 2 doubles at a time, 4 floats at a time, or 8 fixed-point 16-bit integers at a time into SSE registers and operate on them in parallel. There's some bizarrely cool byte-order rearranging assembly instructions that you could use to help you get the list of B values flipped around, couple that with a couple of cache hints and I think you could compute that reasonably quickly.

    7. Re:But what do you put in a specialized core? by badkarmadayaccount · · Score: 1

      PA-RISC had capabilities, AFAIK.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  15. CPU power usage, really? by SuperSlug · · Score: 1

    So here is the power usage breakdown from my Samsung Galaxy S running Froyo:

    Display: 89%
    Maps: 5%
    Wifi: 3%
    Cell Standby: 2%

    So how is enabling "Dark Silicon" going to help the power usage on my phone when the display uses the
    vast majority of the power?

    --
    The information wants to be free, I just give it somewhere to go.
  16. Dark Silicon? by orkysoft · · Score: 2

    We can't see it, we can only detect it by its power draw, and it makes up 95% of your chips!

    --

    I suffer from attention surplus disorder.
    1. Re:Dark Silicon? by Jesus_666 · · Score: 2

      No, we can detect its mass but it doesn't interact electromagnetically with the rest of the device.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
  17. for vs. map by tepples · · Score: 1

    the lack of for-loops is anything but elegant in scientific computation, image processing etc.

    What's the difference between imperative "for" and functional "map" for iterating through a collection? Python has both, and I end up using generator expressions (which use syntax not unlike "for" and the semantics of "map") at least as often as an ordinary for-loop.

    1. Re:for vs. map by bar-agent · · Score: 1

      the lack of for-loops is anything but elegant in scientific computation, image processing etc.

      What's the difference between imperative "for" and functional "map" for iterating through a collection?

      Perhaps the inelegance comes because, with for loops, you can:

      • break out of it early
      • iterate a subsequence without actually creating a subsequence
      • step across several elements on each iteration

      and you can't do any of that with a map operation. Not the ones I've seen, anyway.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    2. Re:for vs. map by Anonymous Coward · · Score: 0

      Ya know, the only people I've ever seen argue for the use of map vs for() are those academia types who never write useful code to begin with. Why do those mental masturbators always think that for() loops only have 2-3 lines within them and no real logical operations ? Sure, map[] may replace first year CS student for() loops, but that's about it.

      Then again, most people who I've seen tout Haskell are university dimwits that have yet to produce anything viable, or teachers / instructors / blow hards who also can't produce anything useful outside of methodology / principle examples (after all, those who can - do, those who can't - teach).

      Oh - and I concur with serviscope_minor -- everyone's speed comparisons to C/C++ are always against extreme corner cases.

      Fuck your map[] bullshit, I'm gonna go back to writing code that myself or the rest of the world will actually use.

    3. Re:for vs. map by Anonymous Coward · · Score: 0

      break out of it early

      Uuum, that's why you don’t always use map, but oftn write your own recursive loop with exit conditions.

      iterate a subsequence without actually creating a subsequence

      Without side-effects, what would be the point of that? This only makes sense if you have side-effects. Which mean that actually you *do* create something. You just send it to a side effect. In a pure functional environment like Haskell, if it doesn't return something, it doesn't exist. :)

      step across several elements on each iteration

      That's what pattern matching it for.

      Here is an example of doing all of the above in Haskell:
      Err... Great: ./ calls my Haskell "'junk' characters".
      Here's a link instead: http://pastebin.com/AAyBWSPz

    4. Re:for vs. map by bar-agent · · Score: 1

      break out of it early

      Uuum, that's why you donâ(TM)t always use map, but oftn write your own recursive loop with exit conditions.

      step across several elements on each iteration

      That's what pattern matching it for.

      So you agree that the map operation is less elegant than the for loop in tricky iteration situations? In that the for loop can replace a map, a custom recursive loop with exit conditions, AND this particular application of pattern matching, and all at the same time to boot? :-)

      iterate a subsequence without actually creating a subsequence

      Without side-effects, what would be the point of that? This only makes sense if you have side-effects.

      True. I was thinking of impure functional languages, not Haskell, when I wrote that.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
  18. The Cruelty of Really Teaching Computer Science by tepples · · Score: 1

    I think the main challenge will be making such a language intuitive

    Dijkstra wrote that programming will never be intuitive.

  19. Watch out for programmers by Sloppy · · Score: 1

    "If you fill the chip with highly specialized cores, then the fraction of the chip that is lit up at one time can be the most energy efficient for that particular task,

    You can't win, because when a performance hacker reads this, he thinks, "Ooh, such waste! I need to parallelize all my stuff to increase utilization. Light 'em up!"

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  20. I'm forced to ask by RogueWarrior65 · · Score: 1

    Why do we need ever more powerful phones? I don't think people are going to want to run CFDs, protein-folding, or SETI-at-home on their phone.
    On the other hand, if the phone consumes 11 times less power, you could go a few months without charging it which would be good.

    1. Re:I'm forced to ask by currently_awake · · Score: 1

      If you can minimize standby current you could have a thermocouple generate power from your body heat to charge the phone giving unlimited battery life.

    2. Re:I'm forced to ask by RogueWarrior65 · · Score: 1

      Ah...okay then how about something that converts brainwaves into phone-charging energy so when people are talking on the phone constantly while they're driving it's being charged. Oh, wait, that would assume that they have brainwaves. My bad.

    3. Re:I'm forced to ask by Anonymous Coward · · Score: 0

      Why do we need ever more powerful phones? I don't think people are going to want to run CFDs, protein-folding, or SETI-at-home on their phone.
      On the other hand, if the phone consumes 11 times less power, you could go a few months without charging it which would be good.

      Why do we need bigger harddrives? I just got my 2000mb quantum fireball and even Diablo only takes up 200mb!

  21. What if... by Anonymous Coward · · Score: 0

    a protocol changes. Hardware solutions are nice if the inputs and outputs never change. Why not many computers?

    http://greenarrays.com/

  22. CPU more like a database look up table of gates by Anonymous Coward · · Score: 0

    Putting Memory super small makes it possible to emulate a whole chip with a database lookup table where each loop would do nothing more than lookup what the next gate would be on a real chip, tracing a virtual path through the chip
    My idea is that one would create chips that are massively parallel in there structure and the OS on top of it would be massively paralelized in its structure and the programs on top of them would be massively parallelized.
    Simpler chips that have massive lookup tables instead of many gates (just enough to make a loop and query a well index database of the gates )
    So you would have a loop as I explained earlier that would execute based on inputs a search of a the tiny memory database and create an emulated NAND AND NOR XOR etc for each pass thru the loop so the chips would be simple and have hundreds or thousand or millions of them running in parallel.

  23. I just want a new Nokia 5190 by Anonymous Coward · · Score: 0

    As in rolled out the factory within the last few months, warranty starts ticking when I open the box. Hell, I'd be happy just to be able to buy new batteries for the one I have.

  24. Some other solitions to dark silicon... by Theovon · · Score: 1

    This is definitely an interesting approach they're taking.

    In my research group, we're looking at a different tactic called near-threshold computing. Say you have a 32nm device that uses 100W at 1V. If you were to run it at 400mV, it would use about 1W, but logic slows by a factor of 10. So that 100X reduction in power translates into a 10X reduction in energy.

    Fast-forward to 11nm, where the transistor density is 10X what it is at 32nm. Nominal voltage won't go down much, so without doing something drastic, your chip would use a kilowatt. To run the whole device, you have to lower the voltage a lot.

    Unfortunately, that's not the whole story, which is where we're focused. Process variation is transistor parameter variations that are the result of manufacturing difficulties. For instance, we're doing sub-wavelength lithography, which makes all edges really fuzzy. And transistors are now small enough that dopant atoms range in the tens. So if one transistor has 20 boron atoms, and one nearby has 25, then that's a 25% variation in threshold voltage. These problems are getting progressively worse as transistors scale down. And the effect is amplified when you lower voltage. Die-to-die and within-die variation are massive at that scale and voltage. Generally, your whole processor's frequency is limited by the slowest circuit path on the chip. At smaller geometry and lower voltage, the speed difference between the slowest and fastest paths grows. The faster paths use more power, which is also a problem.

    We tend to focus on architectural solutions to this. Let the circuits fail... then catch and correct the errors. I published a paper in MICRO 2010, where we lower voltage to a SRAM caches. (Google for >.) At some point, the bit cell failures become catastrophic, so we applied forward error correction. The result is that at a voltage where an unprotected cache is completely useless (so many errors that nearly every cache line has more bad cells than standard ECC can handle), our approach salvages 50% of the nominal voltage cache capacity.

  25. Examples from Python itertools by tepples · · Score: 1
    I don't know Haskell or ML, but I do know the itertools module in Python, which represents a bunch of lazy-evaluated iteration concepts borrowed from Haskell and ML.

    with for loops, you can: * break out of it early

    Some cases of breaking early can be represented as composition of iterator operations: "Find the first ten elements that meet these criteria" is something like islice(ifilter(criterion, seq), 10) where criterion is a function returning nonzero for elements that match. "Find all elements until the first not meeting the criteria" is takewhile(criterion, seq). What were you thinking?

    iterate a subsequence without actually creating a subsequence, step across several elements on each iteration

    You mean like Python islice(seq, start, stop, step), which takes anything iterable and returns an iterator of a subsequence?

    1. Re:Examples from Python itertools by bar-agent · · Score: 1

      Yeah, itertools seems like a really nice library. I wish I had something similar in other languages.

      But, you know, the itertools functions are just inefficient applications of a normal map operation. Islice, for example, iterates from the start, skipping everything until it gets to the elements you want to process. A proper for loop does not need those nop iterations, and is thus more elegant (for a certain definition of elegant).

      I will grant that breaking out of the iteration works just peachy; I figure Python just abandons the iterator and goes on to the next task, rather than finishing out the iteration. But other languages that have the "map" concept, but not the "iterator" concept, may not be able to just let it drop.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    2. Re:Examples from Python itertools by tepples · · Score: 1

      Islice, for example, iterates from the start, skipping everything until it gets to the elements you want to process. A proper for loop does not need those nop iterations

      If you know all the elements up front, in a numbered sequence of some sort (such as an array), you can use a regular slice (e.g. some_list[10:20]).

  26. Python generators, parallel map, distributed map by tepples · · Score: 1

    Ya know, the only people I've ever seen argue for the use of map vs for() are those academia types who never write useful code to begin with.

    That and anyone who has ever worked with a framework that implements parallel map (e.g. Grand Central Dispatch) or distributed map (e.g. Google MapReduce).

    Why do those [sex analogy] always think that for() loops only have 2-3 lines within them and no real logical operations ?

    In a lot of cases, the body of a for loop can be refactored into a separate function. Such loops can be considered as having only a call to that function as the body, in which case map is equivalent.

    Sure, map[] may replace first year CS student for() loops, but that's about it.

    Tell that to all the generator expressions* found in the real-world Python code that I write for real-world work where I earn my real-world paycheck.

    * In Python, generator expressions take the form (some_expr(el) for el in some_iterable). They are commonly used to populate lists, sets, and dictionaries. Despite using the same for element in iterable wording as for loops, they have similar semantics to functional map.

  27. Offtopic by lsatenstein · · Score: 1

    What are the editing commands for forcing a new line in text. I know about bold and I thought a new line was less than character followed by a p. Where is the help / reminder for we responders?

    --
    Leslie Satenstein Montreal Quebec Canada
  28. Novell approach to saving energy. by lsatenstein · · Score: 1

    So, with all that suggested energy savings, the battery could become smaller, and the number of apps could increase. Is there a Moores law about the number of semi-useful applications?

    --
    Leslie Satenstein Montreal Quebec Canada
  29. Dark Silicon by Anonymous Coward · · Score: 0

    "dark silicon' has a cool ring to it? ;-)