Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.

I have a question for you

aminer10
Novice
484 Views

Hello,

I have a question for you:

What is actually the technics that are used in the hardware
to scale and speed more the memory system and the harddisk system ? and
if those technics to speed the memory system and harddisk system
can make memory and/or disk bound applications scalable in today
and future multicore systems ?


Thank you,
Amine Moulay Ramdane

0 Kudos
2 Replies
Bernard
Valued Contributor I
484 Views

I think that this forum is more software oriented.

0 Kudos
Fabio_F_1
Beginner
484 Views

If you are thinking of throughput, then maybe you can e.g. have additional harddisks in parallel, or even whole machines running in parallel. Each machine/harddisk is associated its own work set (as independent of others as much as the design of the app allows it)

As regards to memory, they can be multi-channel (dual channel, quad-channel etc) and processors can access memory concurrently. Again the design of the app tries to split work into multiple data/computation blocks as much as possible and minimize the frequency at which threads need to synchronize.

If you are thinking of latency, then solid state disks. Or reduce the data size so that requests can be serviced from RAM, L3, L2 cache etc? Other techniques could be for example be preloading: you make your file data ready to be delivered before the request arrives (based on statistics). Or speculative execution: you try predict what the request will be and execute that request before the request arrives, if you guessed right the you just need to "commit" the request, if guessed wrong you cancel the speculative execution and restart with the correct parameters.

Hardware prefecthing and branch prediction works somewhat like the above, but the concept can easily be applied to software as well.

0 Kudos
Reply