Кіріспе
Компьютерлік архитектураның аппараттық алгоритмі, Томасуло алгоритмі – нұсқауларды динамикалық түрде жоспарлауға арналған компьютерлік архитектураның аппараттық алгоритмі. Ол нұсқауларды реттіліксіз орындауға мүмкіндік береді және бірнеше орындау бірліктерін тиімді пайдалануға жағдай жасайды. Алгоритмді 1967 жылы Роберт Томасуло IBM компаниясында әзірлеген, ал алғаш рет IBM System/360 Model 91 жүйесінің қозғалатын нүктелі блогында қолданылған.
Tomasulo's algorithm is a computer architecture hardware algorithm for dynamic scheduling of instructions that allows out of order execution and enables more efficient use of multiple execution units. It was developed by Robert Tomasulo at IBM in 1967 and was first implemented in the IBM System/360 Model 91’s floating point unit.
Ортақ деректер шинасы
Ортақ деректер шинасы (CDB) брондау станцияларын тікелей функционалдық бірліктерге қосып тұрады. Томаслу айтуынша, ол "басымдық ретін сақтай отырып, бір мезгілде орындалуға мүмкіндік береді". Бұл екі маңызды салдарға әкеледі:
Функционалдық бірліктер қозғалатын нүктелік тіркелгіні пайдаланбастан кез келген операцияның нәтижесіне қол жеткізе алады, соның салдарынан нәтиже күтіп тұрған бірнеше бірлік тіркелгілік файлды оқу порттарына қол жеткізу үшін күресті шешуді күтпестен жұмысын жалғастыра береді. Қауіпті анықтау және басқару орталықтандырылмаған. Нұсқауды орындауға болатын уақытты резервтік станциялар бақылайды, емес, арнайы қауіпті анықтау блогы.
Functional units can access the result of any operation without involving a floating point register, allowing multiple units waiting on a result to proceed without waiting to resolve contention for access to register file read ports. Hazard Detection and control execution are distributed. The reservation stations control when an instruction can execute, rather than a single dedicated hazard unit.
Нұсқаулық
Нұсқаулар тізбесімен беріледі, осылайша нұсқаулар тізбегінің әсерлері, мысалы, осы нұсқаулар тудырған қателер, реттік процессорда орындалғандай бірдей ретпен орындалады, олар реттік емес (яғни, тізбексіз) орындалса да.
Тіркеменің қайта аталуы
Томасуло алгоритмі тізімдерді қайта атау арқылы реттіліксіз орындалуды дұрыс жүзеге асыруды қамтамасыз етеді. Барлық жалпы мақсаттағы және резервациялық станция тізімдері нақты мән немесе уақытша мән сақтайды. Егер нақты мән шығару кезеңінде мақсатты тізімге қолжетімді болмаса, бастапқыда уақытша мән қолданылады. Уақытша мән – нақты мәнді қай резервациялық станция шығаратынын көрсететін белгі. Блок жұмысын аяқтап, CDB арқылы нәтижені тарату кезінде, уақытша мән нақты мәнмен алмастырылады. Әрбір функционалдық блокта бір резервациялық станция бар. Резервациялық станциялар операция мен операндарды қоса алғанда, бір ғана команданы орындау үшін қажетті ақпаратты сақтайды. Функционалдық блок бос болғанда және команда үшін қажетті барлық бастапқы операндар нақты болғанда өңдеуді бастайды.
Ерекшеліктер
Іс жүзінде, ерекшелік туралы жеткілікті мәлімет болмайтын жағдайлар болуы мүмкін, онда процессор арнайы ерекшелік – «нақты емес ерекшелік» деп аталатын ерекшелікті тудыруы мүмкін. Реттік орындалуда нақты емес ерекшеліктер пайда болмайды, себебі процессор күйі тек бағдарлама ретімен өзгертіледі (қараңыз). Нақты ерекшеліктерге тап болған бағдарламалар, егер ерекшелікті тудырған нақты команданы анықтау мүмкін болса, ерекшелік болған жерден қайта бастауға немесе қайта орындауға болады. Дегенмен, нақты емес ерекшеліктерге тап болған бағдарламаларды әдетте қайта іске қосуға немесе қайта орындауға болмайды, өйткені жүйе ерекшелікті тудырған нақты команданы анықтай алмайды.
Нұсқаудың өмірлік циклі
Төменде тізілген үш кезең – әрбір команда берілген кезден бастап орындалуы аяқталғанға дейін өтетін кезеңдер.