MIT's Swarm Chip Architecture Boosts Multi-Core CPUs, Offering Up To 18x Faster Processing (gizmag.com)
An anonymous reader writes from a report via Gizmag: MIT's new Swarm chip could help unleash the power of parallel processing for up to 75-fold speedups, while requiring programmers to write a fraction of the code that is usually necessary for programs to take full advantage of their hardware. Swarm is a 64-core chip developed by Prof. Daniel Sanchez and his team that includes specialized circuitry for both executing and prioritizing tasks in a simple and efficient manner. Neowin reports: "For example, when using multiple cores to process a task, one core might need to access a piece of data that's being used by another core. Developers usually need to write code to avoid these types of conflict, and direct how each part of the task should be processed and split up between the processor's cores. This almost never gets done with normal consumer software, hence the reason why Crysis isn't running better on your new 10-core Intel. Meanwhile, when such optimization does get done, mainly for industrial, scientific and research computers, it takes a lot of effort on the developer's side and efficiency gains may sometimes still be minimal." Swarm is able to take care of all of this, mostly through its hardware architecture and customizable profiles that can be written by developers in a fraction of the time needed for regular multi-core silicon. The 64-core version of Swarm came out on top after MIT researchers tested it out against some highly-optimized parallel processing algorithms, offering three to 18 times faster processing. The most impressive result was when Swarm achieved results 75 times better than the regular chips, because that particular algorithm had failed to be parallelized on classic multi-core processors. There's no indication as to when this technology will be available for consumer devices.
It's important for the average consumer to realize that not all processing tasks are easily parallizable, and some downright aren't. In those cases, additional cores aren't going to give you much in the way speed increases. Of course, your average consumer *doesn't* realize that, and when they go to their favourite big-box store for a new computer, the sales associate isn't going to sit down and discuss the reality of the situation either.
The most impressive result was when Swarm achieved results 75 times better than the regular chips, because that particular algorithm had failed to be parallelized on classic multi-core processors.
It'd be nice to know what this architecture excels at.
I guess the world is rediscovering that special-purpose chips will always be faster at their special purpose than a general-purpose chip will be.
"There are a dozen opinions on a matter until you know the truth. Then there is only one." - CS Lewis (paraprhase)
i am dumb on this, but if 'hardware architecture' can be made to take care of avoiding conflicts and "direct how each part of the task should be processed and split up between the processor's cores", same can be done through software that imitate whatever 'hardware architecture' is doing?
if this can be done, basically this software would be another step in compiling/assembling process?
as i said, i am ignorant on this, but why not?
I once called a cable company known for cruddy service and the automated system told me the wait wait would be a while. I told the automated system using as much loud and colorful language as possible that I did not want their service anymore and to take the equipment out. A very nice rep immediately came on the phone, I was equally nice back to her and the problem was resolved.
and recompiled, Wordstar should be really, really fast on this device.
can't wait to try it.
Sounds much more like something that should be refinements to code generation than baked into chip architecture. That said it's good to see work being done on better parallel methods rather than just bigger.
Sure it -could- be done in software. Essentially any design can be implemented as hardware, software, or a hybrid of the two. (A major problem for those complaining about "software patents".) I wouldn't be surpised if someone does take some of their ideas and implement them in software.
In general, hardware will be faster and in some ways more reliable than a software implementation of the same algorithm. It also means software doesn't have to be recompiled for lots of different types of hardware, if the hardware hides the differences.
This.
75 time faster than WHAT?
75 times speedups over WHAT?
If this hardware does something that could be done at compile time, it is IMHO indeed pretty useless. That's why I hope it is "runtime-smart", meaning that it reacts to data access conflicts as they actually happen while the program is running. That would be something that is much harder to achieve, in an efficient manner at least, through software. The talk about the profiles devs have to declare doesn't sound good to me: people who don't bother writing software that uses proper locking or libs implementing Actors/DataFlow/STM or whatever will probably not care about defining proper profiles for this thing either.
http://livinglab.mit.edu/wp-co...
There are two ways that multiple cores can help the average users. First, they allow multiple different processes to run at the same time. You can run a word processor, spreadsheet, browser, etc. all at once. Unless each of these processes are waiting on the same resource (e.g. all trying to write to the disk at the same time, or waiting for the user to press a key) then they can complete tasks much faster than a machine with fewer cores.
Second, they allow a single program to do more than one thing at a time. Lots of programs will have a separate thread to handle the user interface while another does background tasks, but few will try and break big tasks into multiple pieces. For example, many database programs will be able to run several independent queries at the same time, but few will run a single query faster on a multi-core machine than on a single core one.
I am working on a new data management system that does both. It can let lots of queries run at the same time, and it can break a single query into smaller pieces. The more cores the better. A query that takes 1 minute on a single core can often do the same thing in about 1/5 the time on a quad core (8 threads).
...than other articles. No, really, "more" and "less" only work when comparing things.
https://www.youtube.com/c/BrendaEM
Actually, not so much a problem for software patents. Software is, generally speaking, a general solution, an algorithm. That is to say, math - something explicitly exempted from patent protection because it would inherently be overbroad and cut off all further development in that direction. Hardware is a machine - a specific implementation. Make some slight modifications, and it's no longer protected by the original patent.
If software patents followed the same rules as hardware patents they'd be far less of a problem, but that would pretty much require source code since design and implementation are practically synonymous in software. But in that case any non-trivial changes to the source code would then be recognized as a different invention not covered by the original patent. Basically copyright already offers broader protection than you would get from "legitimate" software patents adhering to the same limitations as hardware patents.
--- Most topics have many sides worth arguing, allow me to take one opposite you.
I'm pretty sure the developers of Crysis did put in the work to parallelize it effectively. Game engines are one of the most heavily optimized types of software out there, and CryEngine is one of the fastest game engines out there.
"I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
To to your point, look up "SystemC". It's the C programming language, used to write programs which are often compiled as pure hardware. Often, but not always - the same code can be rendered as either pure hardware or pure software. See also Verilog and PLAs. PLAs start and end their life as pure hardware devices. In between, connections in the hardware are destroyed to create a new hardware array as specified by programming language code.
What you're missing is that any algorithm, most any code, can be compiled either as an object file (what you'd call "software", as pure hardware (see PLAs and ASICs), or anything in between. I can write C code and I don't know which users will render it as hardware and which will render it as software. The distinction you're trying to make between hardware and software simply doesn't exist in practice.
Fortunately it doesn't NEED to exist, because your need to distinguish the two is based on a misleading description of patent law. What I'm about to explain isn't what I WISH the law said, and it's probably not what you WISH it said, I'm going to explain what the law ACTUALLY says. Please don't bitch at me if you don't like it. I didn't write the law, I just read it.
The law says "the laws of nature, including the LAWS of science and the LAWS OF MATHEMATICS, may not be patented." So you can't patent the laws of science, such as Newton's laws. You can't patent gravity. You CAN patent a new type of elevator, which USES gravity in a useful new way. You can't patent heat. You CAN patent a new type of oven, which uses thermodynamics in a useful new way. You can't patent the commutative law, a+b=b+a. You CAN patent a new way of predicting traffic flow which uses addition, multiplication, etc. That is not my preference, that is the law.
Could you imagine a Beowulf cluster of these?