CPU හි ක්‍රියාකාරීත්වය

‍භෞතික ක්‍රියාව නොසලකා හැරිය විට බොහොමයක් CPU වල මූලික ක්‍රියාකාරීත්වය වන්නේ වැඩසටහන් (program) ලෙස හඳුන්වන ගබඩා කරන ලද උපදෙස් මාලාවක් ක්‍රියාත්මක කිරීමයි. මෙහිදී සාකච්ඡා වන්නේ වොන් නියුමාන් (von Neumann ) නිර්මිතයට අනුකූල උපාංග පමණි. වැඩසටහනක් නිරූපණය වන්නේ යම් වර්ගයක පරිගණක මතකයක් තුළ ඇති ඉලක්කම් ශ්‍රේණියකිනි. වොන් නියුමාන් CPU වල සියල්ලම වාගේ ක්‍රියාත්මක වීමේ දී අදියර හතරක් අනුගමනය කරයි. කැඳවා ගැනීම, විකේතනය කිරීම, ක්‍රියාත්මක කිරීම හා නැවත ලිවීම.

ගොනුව:Mips32_addi.svg‎

MIPS32 උපදෙස් විකේතනය වන අයුරු පෙන්වන රූප සටහන (MIPS ටෙක්නොලොජීස් 2005)

පළමු පියවර, කැඳවා ගැනීමට වැඩසටහන් මතකයෙන් උපදෙසක් (ඉලක්කමක් හෝ ඉලක්කම් අනුපිළිවෙලක් මඟින් නිරූපණය වන) ලබා ගැනීමට ඇතුළත් වේ. වැඩ සටහන් මතකයේ ස්ථානය තීරණය කරනු ලබන්නේ, අංකයක් ගබඩා කිරීමෙන් වැඩසටහනේ එම අවස්ථාවේ පිහිටුම හඳුනාගන්නා වැඩසටහන් ගණකයක් (PC) මඟිනි. වෙනත් ලෙසකින් වැඩසටහන් ගණකය CPU හි ස්ථානයන් පිළිබඳ වාර්තාවක් එම අවස්ථාවේ ධාවනය වන වැඩසටහන තුළ තබනු ලබයි. උපදෙස කැඳවා ගැනීමෙන් පසු මතක ඒකක අනුසාරයෙන් උපදෙ‍ෙසහි දිග අනුව PC වර්ධනය වේ. බොහෝ විට කැඳවා ගත යුතු උපදෙස් නැවත ලබා ගත යුත්තේ සාපේක්ෂව මන්දගාමී මතකයෙනි. මේ නිසා උපදෙස් නැවත ලැබීමට සිටින අතරතුර  CPU අවහිර (ස්ටෝල්) වේ. මෙම ගැටලුව නූතන සකසුවල හැඹිලි (caches) හා පයිප් ලයින් (pipeline) නිර්මිතය මඟින් බොහෝ දුරට මැඩ පවත්වා ඇත. (පහත බලන්න)
මත‍කයෙන් CPU කැඳවා ගන්නා උපදෙස් CPU එකට කිරීමට ඇත්තේ කුමක්ද යන්න නිර්ණය කිරීමට භාවිතා වේ. විකේතන පියවරේ දී උපදෙස් CPU හි අනෙක් කොටස්වලට විශේෂත්වයක් ඇති කොටස්වලට කඩනු ලැබේ. සංඛ්‍යාමය උපදෙස් අගය අර්ථ නිරූපණය වන අයුරු අර්ථ CPU දක්වනු ලබන්නේ CPU හි උපදෙ‍ස් කාණ්ඩ නිර්මිතය (ISA) මඟිනි. බොහෝ විට, ඔප්කෝඩ් (opcode) ලෙස  හඳුන්වන උපදෙසෙහි පිහිටි එක් ‍සංඛ්‍යා කොටසක් කිරීමට ඇති ක්‍රියාව හුවා දක්වයි. ඉතිරි කොටස එම උපදෙස සඳහා අවශ්‍ය ‍තොරතුරු සපයයි. උදාහරණ ලෙස එකතු කිරීමේ ක්‍රියාවලියක් සඳහා ඔපෙරන්ඩ්ස් (operands) දැක්විය හැකිය. එවැනි ඔපෙරන්ඩ් එකක් නියත අගයක් (ක්ෂණික අගයක් ලෙස හඳුන්වන) ලෙස හෝ රෙජිස්ටරයක් හෝ මතක ලිපිනයක් වැනි අගයක් සොයාගත හැකි ස්ථානයක් ලෙස හෝ යම් යොමු කරන ක්‍රමයකින් තීරණය කරන පරිදි, තබනු ලැබේ. පැරණි නිර්මිතවලදී CPU උපදෙස් විකේතනයට වගකිව යුතු CPU කොටස වෙනස් කළ නොහැකි දෘඩාංග උපාංගයක් විය. කෙසේ නමුත් වඩා සංකීර්ණ හා වියුක්ත CPU හා ISA වල , උපදෙස් CPU සඳහා අඩංගු විවිධ වින්‍යාස සංඥා බවට පරිවර්තය කිරීමට යොදාගන්නේ ක්ෂුද්‍ර වැඩසටහනකි. මෙම ක්ෂුද්‍ර වැඩසටහන සමහරක් විට නැවත ලිවිය හැකි අතර එමනිසා නිෂ්පාදනයෙන් පසුව ද CPU උපදෙස් විකේතනය කරන ක්‍රමය වෙනස් කළ හැක.

කැඳවා ගැනීමේ හා විකේතන පියවර සිදුවීමෙන් පසු ක්‍රියාත්මක වීමේ පියවර සිදුවේ. මෙම පියවර තුළදී CPU හි විවිධ කොටස් එකිනෙක සම්බන්ධ වේ. එම නිසා ඒවාට අවශ්‍ය කාර්යය ඉටු කළ හැකි වේ. උදාහරණයක් ලෙස එකතු කිරීමේ ක්‍රියාවලියක් ඉල්ලා ඇති විට අංක ගණිතමය තාර්කික ඒකකය (ALU) අදාන කිහිපයකට හා ප්‍රතිදාන කිහිපයකට සම්බන්ධ වේ. ආදාන එකතු කිරීමට අවශ්‍ය ලබා දේ. ප්‍රතිදානයෙහි අවසාන එකතුව අඩංගු වේ. ALU  හි ආදාන මත සරල අංක ගණිතමය හා තාර්කික ක්‍රියා සිදු කළ හැකි පරිපථයක් ඇත. (එකතු කිරීම හා බිට් වයිස් ක්‍රියා වැනි) එකතු කිරීමේ ක්‍රියාවලිය CPU ට දරා ගැනීමට අපහසු විශාල ප්‍රතිඵලයක් නිපදවයි නම් ෆ්ලෑන්ග්ස් රේජිස්ටර්වල අංක ගණිතමය උතුරා යාමක් සංඥා වන ලෙස සැකසිය හැක. (පහත නිඛිල පරාසය පිළිබඳ සාකච්ඡාව බලන්න)
අවසාන පියවර නැවත ලිවීමේ දී සිදු කෙරෙනුයේ සරලවම ක්‍රියාත්මක කිරීමේ පියවරේ ප්‍රතිඵල සරලවම යම් මතක ආකාරයකට නැවත ලිවීමයි. බොහෝ විට ප්‍රතිඵල පසුව පැමිණෙන උපදෙස්වලට ක්ෂණිකව ප්‍රවේශ විය හැකි පරිදි අභ්‍යන්තර CPU රෙජිස්ටරවලට ලියනු ලැබේ. අනෙකුත් අවස්ථාවලදි ප්‍රතිඵල ලියනු ලබන්නේ මන්දගාමී නමුත් ලාභදායී හා විශාල ප්‍රධාන මතකයටයි. සමහරක් වර්ගවල උපදෙස් කෙළින්ම ප්‍රතිඵල දත්ත නිපදවනවා වෙනුවට වැඩසටහන් ගණකය පාලනය කරයි. මේවා සාමාන්‍යයෙන් “ජම්ප්ස්” (jumps)  ලෙස හඳුන්වන අතර ලූප (loops) වැනි හැසිරීම් , තත්වගත වැඩසටහන් ක්‍රියාත්මක කිරීම (තත්වගත ජම්ප්වල භාවිතයෙන්) හා වැඩසටහන්වල කාර්යයන්ට පහසුකම් සලසයි. බොහොමයක් උපදෙස් “ෆ්ලෑග්ස්” රෙජිස්ටරවල සංඛ්‍යාංක තත්ව වෙනස් කරයි. මෙම ෆ්ලෑග් විවිධ ක්‍රියාවල ප්‍රතිඵල පෙන්නුම් කරන නිසා වැඩසටහනක් හැසිරෙන ආකාරයට බලපෑමක් සිදු කිරීමට යොදා ගත හැක. උදාහරණයක් ලෙස එක් වර්ගයක සන්සන්දක උපදෙසක් අගයන් දෙකක් සලකා බලා වඩා විශාල කුමක් ද යන්න අනුව ෆ්ලෑග්ස් රෙජිස්ටරයේ ඉලක්කමක් පිහිටුවයි. පෙර කියන ලද ජම්ප් මෙම ෆ්ලෑග් යොදාගෙන වැඩ සටහනේ ගලා යාම තීරණය කරයි.
උපදෙස ක්‍රියාත්මක වීමෙන් හා ප්‍රතිඵල දත්ත නැවත ලිවීමෙන් පසු මුළු ක්‍රියාවලියම නැවත සිදුවේ. සම්පූර්ණ වූ උපදෙස ජම්ප් එකක් නම් එම උපදෙසෙහි ලිපිනය අඩංගු වන පරිදි වැඩ සටහන් ගණකය නවීකරණය වන අතර වැඩසටහන ක්‍රියාත්මක වීම සාමාන්‍ය පරිදි සිදු වේ. මෙහි සඳහන් කර ඇති CPU ට වඩා සංකීර්ණ CPU වල එකවර උපදෙස් කිහිපයක් එකවර කැඳවා ගැනීමේ විකේතනය කිරීමේ හා ක්‍රියාත්මක කිරීමේ හැකියාව පවතී. මෙම කොටසේ දී විස්තර වූයේ “ක්ලැසික් RISC පයිප් ලයින්” ලෙස හඳුන්වන දෙයය. එය බොහොමයක් ඉලෙක්ට්‍රොනික උපකරණවල භාවිතා වන සරල CPU වල සුලභ දෙයකි. (බොහෝ විට ක්ෂුද්‍ර පාලක ලෙස හඳුන්වයි.)

## References 
http://en.wikipedia.org/wiki/CPU#CPU_operation