LINUX.ORG.RU

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

Исправление KivApple, (текущая версия) :

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

А если бы код и данные были на разных шинах, можно было бы инструкции доступа к памяти исполнять за один такт.

С современной конвейерной архитектурой ситуация не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается. Так как каждая инструкция доступа к памяти будет вызывать простой декодера инструкций, который является первой стадией любой инструкции (не получится распараллелить разные инструкции даже если они исполняются на независимых блоках), а также, как правило, без проблем реализуется за один такт.

При этом инструкции доступа к памяти одни из самых популярных в программах в отличии от какого-нибудь деления, с многотактовостью которого проще смириться.

Исправление KivApple, :

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

А если бы код и данные были на разных шинах, можно было бы инструкции доступа к памяти исполнять за один такт.

С современной конвейерной архитектурой ситуация не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается. Так как каждая инструкция доступа к памяти будет вызывать простой декодера инструкций, который является первой стадией любой инструкции (не получится распараллелить разные инструкции даже если они исполняются на независимых блоках), а также, как правило, без проблем реализуется за один такт.

Исправление KivApple, :

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

А если бы код и данные были на разных шинах, можно было бы инструкции доступа к памяти исполнять за один такт.

С современной конвейерной архитектурой ситуация не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается. Так как каждая инструкция доступа к памяти будет вызывать простой декодера инструкций, который является первой стадией любой инструкции, а также, как правило, без проблем реализуется за один такт.

Исправление KivApple, :

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

А если бы код и данные были на разных шинах, можно было бы инструкции доступа к памяти исполнять за один такт.

С современной конвейерной архитектурой ситупция не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается.

Исходная версия KivApple, :

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

С современной конвейерной архитектурой ситупция не становится лучше, потому что ты не можешь подгружать новую инструкцию каждый такт даже если все остальные стадии конвейера справляются за один такт и предсказатель переходов не ошибается.