История изменений
Исправление SZT, (текущая версия) :
Вопрос про особенности VLIW архитектур. Вот например в VLIW простейшие инструкции образуют некие блоки, и компилятор в этот блок должен напихать инструкций, чтобы они не конфликтовали между собой, и чтобы все АЛУ задействовать без конфликтов, учитывая зависимости по данным. Я слышал мнение, что под VLIW намного сложней делать компиляторы, чем под обычные CISC, RISC архитектуры, где просто пачки инструкций идут.
Информация по системе команд Эльбрусов отсутствует в свободном доступе, поэтому далее будут допущения. Допустим, есть 4 АЛУ и в ШК можно за условный такт обработать 4 инструкции, разбросав их по АЛУ. Попробуем например сложить регистры от R0 до R7:
{
//---
R0 = R0 + R1 // АЛУ1 делает это
R2 = R2 + R3 // АЛУ2 делает это
R4 = R4 + R5 // АЛУ3 делает это
R6 = R6 + R7 // АЛУ4 делает это
//---
//---
R0 = R0 + R2 // АЛУ1 делает это
R4 = R4 + R6 // АЛУ2 делает это
NOP // АЛУ3 простаивает
NOP // АЛУ4 простаивает
//---
//---
R0 = R0 + R4
NOP
NOP
NOP
//---
}
Исправление SZT, :
Вопрос про особенности VLIW архитектуру. Вот например в VLIW простейшие инструкции образуют некие блоки, и компилятор в этот блок должен напихать инструкций, чтобы они не конфликтовали между собой, и чтобы все АЛУ задействовать без конфликтов, учитывая зависимости по данным. Я слышал мнение, что под VLIW намного сложней делать компиляторы, чем под обычные CISC, RISC архитектуры, где просто пачки инструкций идут.
Информация по системе команд Эльбрусов отсутствует в свободном доступе, поэтому далее будут допущения. Допустим, есть 4 АЛУ и в ШК можно за условный такт обработать 4 инструкции, разбросав их по АЛУ. Попробуем например сложить регистры от R0 до R7:
{
//---
R0 = R0 + R1 // АЛУ1 делает это
R2 = R2 + R3 // АЛУ2 делает это
R4 = R4 + R5 // АЛУ3 делает это
R6 = R6 + R7 // АЛУ4 делает это
//---
//---
R0 = R0 + R2 // АЛУ1 делает это
R4 = R4 + R6 // АЛУ2 делает это
NOP // АЛУ3 простаивает
NOP // АЛУ4 простаивает
//---
//---
R0 = R0 + R4
NOP
NOP
NOP
//---
}
Исходная версия SZT, :
Вопрос про особенности VLIW архитектуру. Вот например в VLIW простейшие инструкции образуют некие блоки, и компилятор в этот блок должен напихать инструкций, чтобы они не конфликтовали между собой, и чтобы все АЛУ задействовать без конфликтов, учитывая зависимости по данным. Я слышал мнение, что под VLIW намного сложней делать компиляторы, чем под обычные CISC, RISC архитектуры, где просто пачки инструкций идут.
Информация по системе команд Эльбрусов отсутствует в свободном доступе, поэтому далее будут допущения Допустим, есть 4 АЛУ и в ШК можно за условный такт обработать 4 инструкции, разбросав их по АЛУ. Попробуем например сложить регистры от R0 до R7:
{
//---
R0 = R0 + R1 // АЛУ1 делает это
R2 = R2 + R3 // АЛУ2 делает это
R4 = R4 + R5 // АЛУ3 делает это
R6 = R6 + R7 // АЛУ4 делает это
//---
//---
R0 = R0 + R2 // АЛУ1 делает это
R4 = R4 + R6 // АЛУ2 делает это
NOP // АЛУ3 простаивает
NOP // АЛУ4 простаивает
//---
//---
R0 = R0 + R4
NOP
NOP
NOP
//---
}