История изменений
Исправление KivApple, (текущая версия) :
Представь, что у тебя простая архитектура, где большинство инструкций занимает один такт. Ты считал инструкцию чтения/записи памяти и чтобы её исполнить тебе нужно ждать следующего такта для доступа памяти. Значит на следующем такте нельзя прочитать следующую инструкцию, значит любая инструкция доступа к памяти теперь реально требует двух тактов.
А если бы код и данные были на разных шинах, можно было бы инструкции доступа к памяти исполнять за один такт.
С современной конвейерной архитектурой ситуация не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается. Так как каждая инструкция доступа к памяти будет вызывать простой декодера инструкций, который является первой стадией любой инструкции (не получится распараллелить разные инструкции даже если они исполняются на независимых блоках), а также, как правило, без проблем реализуется за один такт.
При этом инструкции доступа к памяти одни из самых популярных в программах в отличии от какого-нибудь деления, с многотактовостью которого проще смириться.
Исправление KivApple, :
Представь, что у тебя простая архитектура, где большинство инструкций занимает один такт. Ты считал инструкцию чтения/записи памяти и чтобы её исполнить тебе нужно ждать следующего такта для доступа памяти. Значит на следующем такте нельзя прочитать следующую инструкцию, значит любая инструкция доступа к памяти теперь реально требует двух тактов.
А если бы код и данные были на разных шинах, можно было бы инструкции доступа к памяти исполнять за один такт.
С современной конвейерной архитектурой ситуация не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается. Так как каждая инструкция доступа к памяти будет вызывать простой декодера инструкций, который является первой стадией любой инструкции (не получится распараллелить разные инструкции даже если они исполняются на независимых блоках), а также, как правило, без проблем реализуется за один такт.
Исправление KivApple, :
Представь, что у тебя простая архитектура, где большинство инструкций занимает один такт. Ты считал инструкцию чтения/записи памяти и чтобы её исполнить тебе нужно ждать следующего такта для доступа памяти. Значит на следующем такте нельзя прочитать следующую инструкцию, значит любая инструкция доступа к памяти теперь реально требует двух тактов.
А если бы код и данные были на разных шинах, можно было бы инструкции доступа к памяти исполнять за один такт.
С современной конвейерной архитектурой ситуация не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается. Так как каждая инструкция доступа к памяти будет вызывать простой декодера инструкций, который является первой стадией любой инструкции, а также, как правило, без проблем реализуется за один такт.
Исправление KivApple, :
Представь, что у тебя простая архитектура, где большинство инструкций занимает один такт. Ты считал инструкцию чтения/записи памяти и чтобы её исполнить тебе нужно ждать следующего такта для доступа памяти. Значит на следующем такте нельзя прочитать следующую инструкцию, значит любая инструкция доступа к памяти теперь реально требует двух тактов.
А если бы код и данные были на разных шинах, можно было бы инструкции доступа к памяти исполнять за один такт.
С современной конвейерной архитектурой ситупция не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается.
Исходная версия KivApple, :
Представь, что у тебя простая архитектура, где большинство инструкций занимает один такт. Ты считал инструкцию чтения/записи памяти и чтобы её исполнить тебе нужно ждать следующего такта для доступа памяти. Значит на следующем такте нельзя прочитать следующую инструкцию, значит любая инструкция доступа к памяти теперь реально требует двух тактов.
С современной конвейерной архитектурой ситупция не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается.