Wednesday, November 4, 2020

Multicore Processors

 වැඩ තුන හතරක් එකපාර දන්නෙ නෑ වගේ කරල දෙන Multicore Processors

====================================
පරිගණකයේ මොළය කියල හදුන්වන්නේ ප්රොසෙසර් එක එහෙම නැත්නම් CPU එක. පරිගණකයේ ගණනය කිරීම් වලින් 90% කටත්වඩා කරල දෙන්නෙ ප්රොසෙසර් එක විසින්. 70 දශකයේදී පුද්ගලික පරිගණක බිහිවීමත් සමග එතැන් පටන් බොහෝ දෙනෙකු සිය පුද්ගලික අවශ්යතාවයන් බොහොමයක් පරිගණක හරහා ඉටු කරගන්න පෙළඹුනා. එහි ප්රතිඵලයක් විදිහට Processor එක බොහෝ සංකීර්ණ කාර්යයන් කල හැකි අයුරින් වැඩිදියුණු කරන්නට බොහෝ අය උත්සාහ කරන්න පටන්ගත්තා. ඒ අනුව Cyrix, Motorolla, Intel, AMD, Nvidia කියන සමාගම් රාශියක් මේ ප්රොසෙසර්ස් නිෂ්පාදන තරගාවලියට පිවිසුනා නමුත් අදවන විට AMD සමාගම සහ intel සමාගම හැරෙන්නට අනෙකුත් සියලුම සමාගම් වලට තරගය අවසන් කිරීමට පෙර ධාවනපථයෙන් ඉවත්වන්නට සිදුවුනා. intel සමාගම Pentium 4 කියන ප්රොසෙසර්ස් මාදිලිය දක්වාම නිෂ්පාදනය කලේ single processor එකක් විදිහට. ඇත්තටම කිව්වොත් ඒකෙ processing unit එකක් සහිත තනි processor එකක් විදිහට තමයි නිෂ්පාදනය කලේ. නමුත් මිනිස්සු එකවරකදී පරිගණකයෙන් වැඩ කිහිපයක් කරන්න පටන්ගන්නකොට ඒ වගේම සංකීර්ණ ඇප්ලිකේෂන් හරහා විවිධ කාර්යයන් සිදුකරනකොට ප්රොසෙසර්ස් එකට එක් අවස්ථාවකදී වැඩ ගොඩාක් කරන්න සිදුවුනා. මේකට පලමු විසදුම විදිහට ආවේ Multithreading කියන concept එක. ඔයාල දන්නවා application එකක data එකක් ප්රොසෙස් කරන්න එන එක් path එකකට තමයි thread එකක් කියන්නෙ. ඉස්සර තිබ්බෙ single thread එකක්. ඒ කියන්නෙ එක් application එකක instructions විසදුවට පස්සෙ තමයි ඊලග app එකේ එන instructions විසදන්න ගත්තෙ. Mulit threading වලදි ප්රොසෙසර්ස් එකට thread දෙකක් තිබෙනවා. ඒ කියන්නෙ එකම අවස්ථාවකදී programs දෙකක instructions අරගෙන data process කරන්න පුලුවන් වුනා තනි processor එකට.

මේ හින්දා processor එකෙහි performance ගොඩාක් ඉහල ගියා. ඊට පස්සෙ processor සමාගම් තවත් performance ඉහල දැමීමේ අරමුණින් තමයි multicore processors නිෂ්පාදනය කරන්න පටන්ගත්තෙ. Dual core, quard core කියල ඔය විදිහට processors කරලියට එන්න ගත්තෙ multicore processors තාක්ෂණය නිසා. මොකද්ද මේකෙ වෙන්නෙ ඇත්තටම. මේකෙදි අපිට පිටින් තනි physical processor එකක් වුනාට ඇතුලෙන් අපිට දක්නට ලැබෙන්නේ processor සමූහයක්. ඒවාට අපි logical processor කියල කියනවා. ගොඩාක් වෙලාවාට එකම වේගයකින් වැඩ කරන බොහෝ දුරට එක හා සමාන processor සමූහයක් මේ තුල දක්නට ලැබෙනවා. මෙහිදී එක් අවස්ථාවකදී application විශාල ප්රමාණයක් විවෘත කරගනිමින් වැඩ කරනවිට එක් එක් logical processor වලට එක් එක් ඇප්ලිකේෂන් වල වැඩ බෙදාගෙන කිරීමේ හැකියාවක් තියෙනවා. එවිට එක් logical processor එකට කිසිදු බලපෑමක් තොරව අනික් logical processor එකට එම කාර්ය අවසන් කිරීමේ හැකියාව තිබෙනවා. මේ සෑම logical processor එකකටම වෙන වෙනම වෙන්වූ thread එකක් තිබෙන නිසා එක් program එකක instructions කෙලින්ම ඒ logica processor එකට පමණක් ලබාගෙන process කිරීමේ හැකියාව පවතිනවා. ඒකටත් multithreading එනව කියන්නෙ ඉතින් වැඩේ මරුම තමයි. ඒ කියන්නෙ ඒ logical processor එකටත් program දෙකක එන instructions එකම වෙලාවක එක පාර අරගෙන process කරල දෙන්න පුලුවන්.
මෙහෙම හිතන්න වැඩ ඇරිල එනකොට හැමදාම වයිෆ් රෑට කෑම හදල තියන්න ඕන. හැබැයි හස්බන්ඩ්ට අනිවාර්යයෙන්ම හොදි තුන හතරක් එක්ක බතක් උයල තියන්නම ඕන. ගෙදර තියෙන්නෙ එක ලිපක් තියෙන ගෑස් කුකර් එකක්. ඉතින් වයිෆ්ට 7.30 ඉදන් රූපපෙට්ටියේ තියෙන සේර්ම ටෙලිනාට්ය බලන්නත් ඕන ඉතින් එයාට 5 ඉදන්වත් උයන්න ලෑස්ති වෙන්න ඕන. ඇයි එක හොද්දක් බාල තමයි ඊලග හොද්ද ලිපේ තියන්න වෙන්න. නමුත් වයිෆ් කරදර කරල කරල ලිප් දෙකක් තියෙන ගෑස් කුකර් එකක් මිලදී ගන්නවා. දැන් වැඩේ තව ටිකක් ලේසි. මොකද එක පාර හොදි දෙකක් හදන්න පුලුවන් හින්ද. දැන් 6 ට පටන්ගත්තත් ඇති. ඉතින් තවත් කරදර කරල ලිප් හතරක ගෑස් කුකර් ගේනවා. දැන් වයිෆ් හතට තමයි වැඩ පටන්ගන්නෙ. මොකද එක පාර හොදි තුනකුයි ඕන්නම් බත් එකකුත් පිස ගන්න පුලුවන්. ඔන්න ඔය වගේ concept එකක් තමයි multicore processor වල තියෙන්නෙ. සාමන්ය processor වල cores 2 ක් හෝ 4 ක් දක්නට ලැබෙන අතර high-end ඒ කියන්නෙ gaming processor වල cores 8 සිට 12 ක් හෝ 18 ක් විතර දක්නට ලැබෙනවා. මෙම තිබෙන cores වල ස්භාවය මත අපිට ආකර කිහිපයකට බෙදා වෙන් කරන්න පුලුවන්.
Homogeneous (symmetric) cores
============================
මේ ආකරයේ multicore processor අපි සමජාතීය processor වශයෙන් හදුන්වනු ලබනවා. එනම් සියලුම processor එකම කාර්යක් හෙවත් එකම පොදු අරමුණක් එනම් general purpose එකක් සදහා තමයි නිර්මාණය කරල තියෙන්නෙ. ගොඩක් වෙලාවට සාමාන්ය කාර්යන් සදහා නිර්මාණය කරල තියෙන multicore processor අයත් වෙන්නෙ මේ කාණ්ඩයට.


Heterogeneous (asymmetric) cores
==============================
මේ ආකරයේ multi core processor විෂමජාතිය අසමමිතික processor ලෙසට හදුන්වනු ලබනවා. එනම් එකම පොදු කාර්යක් කරගැනීමට තියෙන logical processor වලට අමතරව විශේෂ කාර්යක් කරගැනීම සදහා විශේෂිත logical processors මෙහි අන්තර්ගතවී තිබෙනවා. උදාහරණයක් විදිහට graphics processor කිරීම සදහා වෙනම logical processor දක්නට ලැබෙන්නේ මේ ආකරයේ multicore processor වල.
මෙම multicore processor තුල data process කිරීමේදී register එකෙන් process කිරීමට දත්ත ලබාගෙන process කල දත්ත ඉදිරි processing වලට අවශ්ය වන විටදී සහ නිතර නිතර එම calculations වලට ඕන දත්ත වෙන වෙනම මතක තියාගන්න එක් එක් logical processor තුල ස්වායත්තව වැඩකරන L1, L2 ලෙස cache memory දක්නට ලැබෙනවා. නමුත් ඔය සියලුම logical processor වලට එකට ඕනම වෙලාවක සමව භාවිතා කරන්න පුලුවන් වෙනම L3 කියල cache memory එකක් දක්නට ලැබෙනවා. මේක අනික් cache memory වලට වඩා ගොඩාක් ධාරිතාවයකින් වැඩී. මොකද අනික් හැම logical processor එකක්ම මේ memory එක හවුලේ භාවිතාකරන නිසා. single core processor වලට සාපේක්ෂව multicore processor වල විශාල වාසි සහ ප්රයෝජන අපිට ලබාගත හැකිවනවා.
විදුලිය පරිහෝජනය සැලකූ විට single core processor වලට සාපේක්ෂව multicore processor වල අඩු විදුලි පරිභෝජනයක් තමයි දක්නට ලැබෙන්නේ. මේ හේතුව නිසා ලැප්ටොප් පරිගණක වල බැටරිය ආරෝපණය කල පසු දිගු ආයු කාලයක් ලබාගත හැකි වනවා. ඒ වගේම එක් එක් logical processor වල එකිනෙකට වෙනස් ඇප්ලිකේෂන් වල data processing වෙන වෙනම සිදුකරන නිසා කලින් පැවති parallel processing වල අවශ්යතාවය ඉවත්කර දමනුලබනවා. parallel processing යනු එක් පරිගණකයක් තුල CPU එකකට වඩා වැඩි ගණනක් යොදාගනිමින් application කිහිපයක data processing කිරීම වෙයි. නමුත් ඒ කාර්යම ඊට වඩා කාර්යක්ෂමව එකම cache memory එකක් භාවිතා කරමින් එකම physical processor එකක් තුල සිදුකරනු ලබන නිසා performance අතින් ඉතාමත් ඉහල තැනකට පරිගණක පත්කරනු ලබනවා.
එක් එක් cores සදහා application වලින් එන data වෙනම process කිරීම සදහා වෙනම thread දක්නට ලැබෙන බැවින් එක core එකක සිදුකරනු ලබන data processing එකක් අනෙක් data processing එකක ප්රමාදයක් සදහා කිසිදු බලපෑමක් සිදුකරනු ලබන්නේ නැහැ. ඒක හරියට එක ගෙදරක කුලියට දීල තියෙනකොට එයාලට වෙන වෙනම උයාගෙන කන්න කියනවා වගේ වැඩක්. Single core processors වල multithreading පහසුකම තිබ්බද application දෙකෙහිම data processing එකම register එකක් එකම cache memory භාවිතා කරගෙන කරන බැවින් data processing වල ප්රමාදයක් multicore processor වලට වඩා දක්නට ලැබෙනවා.
එක් එක් cores වලට වෙන වෙනම application වල data processing කරන්න බාරගන්න නිසා එන instructions ප්රමාණයට speed එකකින් data processing කරදීමට අපහසු වන අවස්ථාවකදී ඒ application එක crash වීම බොහෝ විට අනෙක් application එකට බලපෑමක් බොහෝ විට සිදුවනු ලබන්නේ නැහැ. ඒකට ප්රධානම හේතුව තමයි data processing කරද්දි ඒ ඒ cores ඔවුන්ට හුදකලා ලෙස භාවිතා කල හැකි resources භාවිතා කිරීම. ඊට අමතරව එක් එක් company මීට සමගාමීව විශේෂිත technology භාවිතා කිරීමත් මේ සදහා හේතුවෙනවා. උදාහරණයක් ලෙස intel සමාගමේ turbo boost technoloy එක , intel shared cache memory technoloy එක. මේ technology ගැන අපි ඉස්සරහට දීර්ඝ වශයෙන් සාකච්චා කිරීමට යන නිසා දැන් මේ ගැන කතා කරන්න යන්නෙ නැහැ.

ඉතින් ඔන්න ඔය කියන වාසි නිසා තමයි අද වන විට parallel processing කියන සිද්ධාන්ත බැහැර වෙමින් multicore processing කියන සිද්ධාන්ත ඉස්සරහට ඇවිල්ල තියෙන්නෙ. ඒ නිසා ඉස්සරහට intel ඇතුලු සමාගම් මේ තාක්ෂණය තවදුරටත් වැඩිදියුණු කරාවි.

No comments:

Post a Comment

මොනවද මේ NFT කියන්නේ..

  NFT යනු දිලීර නොවන ටෝකන යන්නයි. නමුත් එය වඩා හොඳින් තේරුම් ගැනීමට, අපි පියවරෙන් පියවර කිමිදෙමු... 🏊🏊 NFT තේරුම් ගැනීමට, ඔබ blockchains ත...