LINUX.ORG.RU

История изменений

Исправление 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
//---
}
Тут много вопросов можно задать. Например, общие ли регистры для всех АЛУ в процессе исполнения? Сложно ли это все планировать (ощутимо ли дольше компиляция в сравнении более привычными архитектурами)? Что насчет JIT, где время компиляции критично?

Исправление 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
//---
}
Тут много вопросов можно задать. Например, общие ли регистры для всех АЛУ в процессе исполнения? Сложно ли это все планировать (ощутимо ли дольше компиляция в сравнении более привычными архитектурами)? Что насчет JIT, где время компиляции критично?

Исходная версия 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
//---
}
Тут много вопросов можно задать. Например, общие ли регистры для всех АЛУ в процессе исполнения? Сложно ли это все планировать (ощутимо ли дольше компиляция в сравнении более привычными архитектурами)? Что насчет JIT, где время компиляции критично?