logo
AOM / Мельник А

5.2,4. Випереджувальне пересилання

Найпоширенішим способом запобігання конфліктам в конвеєрі команд, поява яких викликана залежностями між даними, є випереджувальне пересилання даних із попе­редніх ярусів конвеєра в яруси, де ці дані потрібні, минаючи проміжні яруси конвеєра. Розглянемо застосування випереджувального пересилання на кількох прикладах для конкретних фрагментів коду програми.

Випереджувальне пересилання даних з метою усунення конфлікту і пригальмову­вання конвеєра комп'ютера DLXдля коду програми

173

SUB R5,R6,R7 LW R4,0(R5) SW 12(R5),R6

ілюструє рис. 5.7, на якому показано результат виконання приведеної програми на симуляторі комп'ютера DLXWinDLX.Залежність за даними виникає за рахунок вико­ристання другою командою вмісту регістра R5за умови, що цей вміст оновлюється по­передньою (першою) командою фрагмента. Цю залежність долають шляхом виперед­жувального пересилання результату першої команди (що використовується потім як зсувний компонент адреси) з інтегрованого (до конвеєрного регістра) поля ALUoutput (на такті -7) на вхід ALU (на такті -6). На рисунку це позначено похилою додатковою лінією. Випереджувальне пересилання грунтується на тому, що реально зсувна компо­нента формується вчасно, вона вже існує в надрах конвеєра, але не є ще занесеною до регістра регістрового файла (для цього треба виконати ще фази MEM і WB).

Випереджувального пересилання вимагає і остання (третя) команда через те, що ви­користовує вміст регістра R4,який формується другою командою. Третій команді по­трібно ще одне випереджувальне пересилання зсувної компоненти виконавчої адреси (вмісту регістра R5), що позначено на рисунку іще однією додатковою лінією.

Потрібно зазначити, що випереджувальне пересилання не завжди є можливим. Роз­глянемо виконання в конвеєрі наступного фрагмента коду

LW R1,0(R2)

ADD R4,Rl,R2

AND R6,R1,R7

XOR R3,R1,R5.

Залежність даних обумовлена використанням командами, які надходять після пер­шої команди, вмісту регістра R1, який у конвеєрі формується із стандартною затрим­кою. При цьому друга команда використовує випереджувальне пересилання даних від першої команди після завершення фази MEM,коли вже отримано майбутній вміст ре­гістра R1.Але оскільки цей вміст отримано лише на такті -6, а він був потрібний на такті -7, то з'явилась затримка R-Stall,тому, що принципово неможливе пересилання до минулого (рис. 5.8).

174

Для забезпечення реалізації в конвеєрі випереджувального пересилання в ньому формуються додаткові канали пересилання даних з відповідними мультиплексорами для підключення входів функціональних блоків комп'ютера до цих каналів та додаткові буферні регістри