Researchers Bring Threading to Word Processing
NC State researchers figured out a way to separate memory management from common software processing, finally enabling multi-core support.
Researchers from NC State University have discovered a way to break up programs such as web browsers and word processors so that they can use multiple threads. While this ability is already in use with PC games and many other applications, some common programs still dump the entire process operation onto one core despite current multi-core CPUs now available on the market.
According to the researchers, breaking up the more traditional programs into multiple threads means a possible overall 20-percent increase in performance. From an enterprise standpoint, this is good news, allowing workers to be more productive, saving time and money. Unfortunately, the current solution for "hard-to-parallelize" programs isn't merely a simple fix, nor is it readily available.
So what exactly is the solution? "We’ve removed the memory-management step from the process, running it as a separate thread," said Dr. Yan Solihin, an associate professor of electrical and computer engineering at NC State, director of the research project (and co-author of a paper describing the research).
Typically a program will perform a computation, then perform a memory-management function, and then repeat the process via one processor core. Using the new approach, the computation thread and memory-management thread are executing simultaneously (in parallel), allowing the program to run more efficiently. Most of today's consumer apps don't utilize multi-core CPUs effectively, but that may change down the line thanks to new programming and compiler technologies such as this one.
"This also opens the door to development of new memory-management functions that could identify anomalies in program behavior, or perform additional security checks," Solihin said. "Previously, these functions would have been unduly time-consuming, slowing down the speed of the overall program."
Solihin and the group of NC State researchers plan to present their findings in a paper called "MMT: Exploiting Fine-Grained Parallelism in Dynamic Memory Management," slated to be presented on April 21 at the IEEE International Parallel and Distributed Processing Symposium in Atlanta.
This sounds like a George Takei moment: "Oh my!"
- Lenovo Launches Nvidia Ion 2-based C200 at $499
- Citrix Unveils Receiver and Conference iPad Apps
- Apple A4 CPU Dissection: iPad is Just a Big iTouch
- WD Introduces Fastest Ever VelociRaptor HDDs
- Microsoft Phasing Out Support for Intel Itanium
- Intel Launches Eight Core, 16 Thread Nehalem-EX
- Screenshots of Duke Nukem Forever Leak Out
- New Portal 2 Screens, Concept Art
- ICD Nvidia Tegra 2 Tablet Beats iPad Hands Down
- Two ''Pro Series'' Workstations from Shuttle Soon
- How to Fix Windows 7 When It Fails to Boot
- Iron Man Fanatic Builds His Own JARVIS
- Deals for April 7: HP 18.4" dv8t, Dell ST2010 LCD
- Windows Phone 7, Silverlight is Business-Ready
- Sick of Apple News on Tom's Hardware? Read This
- AMD Launches ATI FirePro V8800; Cheap at $1499
- Report: Steam Has a Monopoly Over PC Gaming
- Play Modern Warfare 2 MP For Free This Weekend







FINALLY !!! .... great work
Awesome, now M$ can have a new product: M$ office 2010 extreme
"Experience Dual-core-utilizing word processing and power point presenter software" Boost your productivity by up to 20%! New low price for limited time only, $799.
OpenOffice dual-core-utilizing: $0
I never noticed any delay in a word processing or browser functionality. Mostly these applications are waiting around for user input or bottlenecked by web access. Why do they need multi-threaded code?
Manual memory management? That's so... 1960s.
As an app developer, this would be great built right into the compiler. Any performance improvement would be welcome. However, I dispute the 20% claim... at least as a human measurable number. Unless you're using apps like games, graphics/cad software, development tools (which the good ones are already multi-core friendly) .. most people would never realize that it took 4ms to make their title bold vs the original 5ms.
MIT huh? Big deal.
What you said, "While this ability is already in use with PC games...", and what you should've said, "While this ability is already in use with some PC games..."
Web browsers already use a different thread for each tab (at least in the newest Firefox) so they are doing just fine on the parallelism path. Do word processor's need multiple threads? When you have a +1GHz multi-core computer are the memory management operations really that taxing?
At last a word processor that can keep up with my 23,000 wpm
What is ole George waiting for with his mouth open like that?
I sided with Shatner!!!
A critical advancement. Truly a banner day in the history of mankind.
I am pretty sure i have heard of M$ word somewhere.
Uh guys. I'm looking at Winword.exe (2010) and it's already running as 26 separate threads.
Maybe they are talking about Open Office or something?
Uh guys. I'm looking at Winword.exe (2010) and it's already running as 26 separate threads.
Maybe they are talking about Open Office or something?
Awesome, now M$ can have a new product: M$ office 2010 extreme"Experience Dual-core-utilizing word processing and power point presenter software" Boost your productivity by up to 20%! New low price for limited time only, $799.OpenOffice dual-core-utilizing: $0
MS Office is already multithreaded. Oh and btw the "M$" makes you look like you're stuck in the 90s.
You do realize that MS Word runs the spell checker in a separate thread. I would bet that auto-save also does. The rest is processing input from the user, as they type and apply various formatting things. There ain't much parallel processing going on in a word processor!
Errr, Windows already does this for you.
Looks like someone couldn't think up anything original to go for a PHD with.
Errr, Windows already does this for you.
This isn't about Windows.
Uh guys. I'm looking at Winword.exe (2010) and it's already running as 26 separate threads.Maybe they are talking about Open Office or something?
are they running on separate cores too? The article said that all the stuff gets dumped on one core too that's why I asked.
Memory management? Like garbage collection? I'm confused how you can thread processing differently than memory management. I mean, imagine the cache-misses that will be created when a different thread on a different core is jerking around with the memory you are trying to use. In other words, you can't command a memory-write on a separate thread if the processing that follows is dependent on the memory being written to.
If they are just talking about defragging and garbage collection, the compiler should already thread that out separately. Its not the programmers fault if the compiler injects memory management code right in the middle of their execution.
Manual memory management? That's so... 1960s.
Oh brother, that's whats wrong with computer programming today, too many kids growing up on Java. Believe it or not, some mission-critical applications can't just leave it up to the compiler to figure out what to do with memory. Not that Word processors are ever mission critical, I'm just saying proper memory management and being aware of the effects of your memory usage are still good ideas.
I never noticed any delay in a word processing or browser functionality. Mostly these applications are waiting around for user input or bottlenecked by web access. Why do they need multi-threaded code?
The same reason we now use EFI instead of carburetors. It's just another step forward, and walking requires following one foot after the other. It may lead to something else even better.
Hell yeah right on! I look forward to this multi-core, multi-threaded beast of a computer to finally get some good use hopefully in the near future!
are they running on separate cores too? The article said that all the stuff gets dumped on one core too that's why I asked.
Applications shouldn't be mapping threads to cores, that's the job of the OS scheduler.
Each letter is a new thread lol.
I never noticed any delay in a word processing or browser functionality. Mostly these applications are waiting around for user input or bottlenecked by web access. Why do they need multi-threaded code?
Not really so much as multi threading, what they need to do is write more efficient code that uses less RAM!
Applications shouldn't be mapping threads to cores, that's the job of the OS scheduler.
True but applications can indeed request what processor they want. This is useful if you know contention mechanisms haven't been written into the code but you want it to at least run on a multicore box without blowing up.
In this case with Winword it looks like it's properly running on multiple CPUs. Most of the threads appear to be calls to the system for crap (ntdll for example) and those most definately would be optimized.
Say what you want about MS but they are by no means amatures at this.
..as seen on a quad core (8 logical).
If someone has Open Office handy I'd be interested to see what it's up to.
"Believe it or not, some mission-critical applications can't just leave it up to the compiler to figure out what to do with memory. Not that Word processors are ever mission critical..."
My point exactly.
"I'm just saying proper memory management and being aware of the effects of your memory usage are still good ideas."
Indeed.
However, proper memory management != manual memory management. For user applications, like word processors, that's just asking for trouble. Not to mention a poor use of resources.
C, and even assembler, have their uses but there's a reason modern programming languages are, well, modern. One of them being automatic memory management, including garbage collection.
Hopefully the next iteration of Open Office will have this improvement.
That is almost exactly what AMD were trying to do about 3 years ago when they brought multithreading to the public, when they were researching how to make single-threaded applications run no multi-core processors. But it was probably too costly and time consuming (having to go against Intel all the time) so they deserted the project, at least officially.
Wow, next they'll assign every keystroke to it's own thread...and I'll be able to type out the entire works of shakespeare in a second and a half...spellchecked, autosaved, page numbered and formatted, and sent to printer in another second and a half. Now I'll need 40,000 printers to keep up with me and a crew of 600 techs to reload paper and change ink cartridges.
Goodness, at that rate, I alone will possess more productivity than the entire nations of cuba, haiti, puerto rico, and jamaica combined.
wow...
if your word processor is maxing out a whole core of any processor, YOU'RE DOING IT WRONG! and if the 'memory management' in your app is having any impact on performance at all, YOU'RE DOING IT WRONG!!!
oh wait... let me guess... they are talking about garbage collection?
great, they managed to move a big chunk of processing, that if it wasn't for LAZY CODERS, wouldn't even need to be done, onto another core! congratulations! yet another point that useless programmers can use to try and convince them selves that they aren't completely inadequate!
"oh, but its modern, and it improves productivity, its just better, get with the times!!" STFU and learn how to program! did you ever wonder how many Megawatts of electricity have been wasted around the world on your bloated program just because you were too lazy or too scared to program it properly?
oh, and lets not forget all the overhead that usually comes from making something thread safe. so while your app may now run faster, its actually become even more bloated and inefficient!
they managed to move a big chunk of processing, that if it wasn't for LAZY CODERS, wouldn't even need to be done, onto another core
If processing power is cheaper than coder labour, what you call lazy is actually what most people call smart. Right tool for the job, ya know?