Missing support for multi-core systems
Posted 06 February 2013 - 09:37 PM
In the earlier years of computing history, all the processors (for end-users) where single-core. Along with time, the CPU clock speed increased. Moore's law said that the amount of transistors on a circuit board would double approximately every two years. However, the current processors we see today have around 2-3GHz clock speed - which has been the same the last few years, but instead of increasing the clock speed, the processors got smaller. And because they got smaller and more power efficient, we where able to put several CPU cores together.
The dramatic change in CPU architecture had a severe impact on how programmers had to design their software. Programmers where used to write sequential code, meaning the program does one command, then goes on with another command. Because of the increase of clock speed for single cores, no modifications was needed in order to make an algorithm faster. This is the reason so many old (and new) programs are still using 100% of just one core of the CPU. The new programming technique to take advantage of the new cores is called parallel programming. A good description of it is by taking a sequence of code, and split it up and distribute it over different cores on the CPU. Many games uses this technique for GPU rendering.
I believe it is important for Minecraft to get over to multi-thread support. Even though it requires a lot of work, it would have a great impact on peoples FPS rates. And this will get more and more important as we will soon have processors with over 8 cores. I know there is support for this in .NET and C++ for some different platforms, but I am not sure with Java.
Anyone else who agrees with me on this?
Posted 06 February 2013 - 10:16 PM
Posted 07 February 2013 - 01:29 PM
Posted 07 February 2013 - 01:36 PM
Posted 07 February 2013 - 01:38 PM
Oh and yeah Java has afaik support for Multithreading/Multicore working
Posted 07 February 2013 - 01:51 PM
@Martinmine in Optifine with multi-core features doesn't it just spread part of the load from one core to the other so that two things get completed at once without increasing CPU usage very much?
I thought that was the point of multiple cores, but if not, please forgive my ignorance.
Snowey1994: There dispensers
Posted 07 February 2013 - 02:47 PM
Also keep in mind that you can't thread all things, when one operation is dependent on the result of another it can't run at the same time or atleast only up to the point where it needs the input. I don't know what Minecraft can do simultaneously but I think there a many things that can't be done that way.