Войти
ФлеймФорумПроЭкты

x80: Тёплый ламповый (13 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 112 13 14 1518 Следующая »
#180
(Правка: 9:55) 9:53, 12 июня 2018

=A=L=X=
> А зачем его вообще останавливать?
батарейку экономить. а так придётся смотреть какая часть конвейера должна ещё клацать регистрами, а какая - нет. дешевле с точки зрения и энергопотребления и простоты логики тупо остановить всё.

> До Out-of-order ведь даже дошли в процессе эволюции.
это другое, там не команд в очереди нет, а данных. ну и длина команд на конвейере разная


#181
10:01, 12 июня 2018

Mahagam
> простоты логики

Ну с этим никто и не спорит.
Начали просто с префетча кода инструкции пока проц обрабатывал предыдущую, а сейчас имеем Out-Of-Order, предсказания ветвлений и кеш-выборок.
От простого к сложному. Я просто называю конвеером всё что находится между потоком инструкций и вычислительными блоками -  всю эту кашу отношу в это одно слово, может терминологически это неверно, но вроде как верно.

#182
11:30, 12 июня 2018

=A=L=X=
> а сейчас имеем Out-Of-Order, предсказания ветвлений и кеш-выборок.
это все способы быстрее исполнить заданный программой алгоритм в условиях конечного быстродействия элементарной логики.

#183
(Правка: 12:45) 12:35, 12 июня 2018

=A=L=X=
> Что произойдет когда на выборке инструкций произойдет кешиисс, но конвеер будет
> еще забит под завязку?
https://en.wikipedia.org/wiki/Classic_RISC_pipeline#Cache_miss_handling
Чем позднее инструкция попадёт в конвеер, тем позднее она из него выйдет. Если в конвеере 5 стадий - инструкция будет выполняться не менее 5 тактов вне зависимости от загруженности конвеера. Когда из-за кэш-промаха в конвеере образуется пустота - новые инструкции не будут ничего догонять и перекрывать, эта пустота так и пройдёт через весь конвеер, и всё время, потраченное на кэш-промах, без изменений выйдет в итоговое время работы программы.
Так что - конвеер не поможет против медленной памяти. У него совершенно другие цели - помогать против медленных транзисторов.

#184
(Правка: 13:09) 13:08, 12 июня 2018

Delfigamer
> новые инструкции не будут ничего догонять и перекрывать

Ну это какие то первые примитивные архитектуры конвееров, сейчас всё уже намного усложнилось, см. тот же Out-of-order у него прямо оговаривается способность переставлять всё местами чтобы убрать как можно больше простоев. И не вижу ничего предосудительного чтобы даже примитивный конвеер рациональнее даже просто дешифровал команды ожидая пока в его конце вычисляется FSIN какой нибудь сотни тактов - зачем простаивать и прогонять по стадиям NOP-ы? Только из соображений простоты/примитивности первых дизайнов. Вообще даже 8086 имел буфер в несколько байт для считанных наперёд инструкций для опережающего считывания там где это возможно, технике тыщу лет в обед и из неё вообще конвееры и выросли.

#185
13:15, 12 июня 2018

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

#186
13:18, 12 июня 2018

=A=L=X=
> прямо оговаривается способность переставлять всё местами
далеко не всё. иначе можно поломать логику работы программы.

#187
13:22, 12 июня 2018

Mahagam
> далеко не всё

Про это была вторая часть "как можно больше". Потому что не всегда "можно". "Всё" - это имеются ввиду любые примитивные операции.

#188
(Правка: 13:55) 13:53, 12 июня 2018

=A=L=X=
> Ну это какие то первые примитивные архитектуры конвееров, сейчас всё уже
> намного усложнилось, см. тот же Out-of-order у него прямо оговаривается
> способность переставлять всё местами чтобы убрать как можно больше простоев.
Это на десктопах, а на многих мобилках и микроконтроллерах - простые конвееры без OoE и прочих синхропроблем.
И касательно твоего изначального вопроса - нормально работают, хоть и не так быстро, как топовые десктопные, которые за счёт OoE могут выполнять по несколько инструкций за один такт.

#189
14:27, 12 июня 2018

А кстати очень да:

ARM2 стал, возможно, самым простым из популярных 32-битных процессоров в мире, имея всего лишь 30 тысяч транзисторов (для сравнения, в сделанном на 6 лет раньше процессоре Motorola 68000 было около 70 тысяч транзисторов). Многое из этой простоты обусловлено отсутствием микрокода (который в процессоре 68000 занимает от одной четверти до одной трети площади кристалла), и отсутствием кэша, как и в многих процессорах того времени.

Нда, RISC-и судя по всему действительно тяготели к примитивным конвеерах с самого начала. Сейчас правда они уже тоже перешагнули через это - Thumb, все дела.

#190
14:57, 12 июня 2018

=A=L=X=

об чём и разговор

#191
(Правка: 16:49) 16:44, 12 июня 2018

innuendo
> об чём и разговор

Разговор был о том, что конвеер в том числе ускоряет работу с медленной памятью, но мне начали вкручивать в ухо сразу несколько господ, что это не так и конвеер решает совсем другие вещи (хотя я последнего и не отрицал).
Теперь понятно, что они имели ввиду только узкие классы примитивных конвееров без микрокода (хотя я говорил чётко "в современных архитектурах") и тому подобное, но если кто-то про это и имел ввиду, то полностью оказался косноязычен и неспособен ясно изьясняться.
Такой вот разговор получился.
P.S.
Хотя скорее всего даже в конвеерах без микрокода, опять таки, какие то механизмы префетча есть, ибо это слишком простая идея чтобы проходить мимо.

#192
(Правка: 18:39) 17:44, 12 июня 2018

=A=L=X=
> Разговор был о том, что конвеер в том числе ускоряет работу с медленной памятью
Что, как тебе уже кучу раз повторили - не верно. Позднее начатая инструкция в любом конвеере будет закончена позднее.
OoE увеличивает среднее количество инструкций за один такт, но он не поможет против медленной памяти, потому что невозможно начать выполнение того, чего ещё не существует.

#193
(Правка: 18:04) 17:55, 12 июня 2018

Delfigamer
> Что, как тебе уже кучу раз повторили - не верно.

Верно. Хотя это и не основная функция - основная функция распараллелить процессы по обработке инструкций внутри процессора, но очень часто в ходе распараллеливания возникали одни и те же грабли и моменты по медленной памяти и их тоже разумеется решали как могли. Ну наскипидарил ты процессор параллельностью - а он всё равно сосьет женерале, потому что память теперь за ним не успевает - чтобы выкручиваться надо усложнить конвеер и так далее.
Просто не читайте русскую статью "конвеер", а идите сразу в английскую "instruction pipelining". Просто одно цепляется за другое постоянно. Начиналось от предвыборки кода инструкции, пришло ко всяким предсказаниям выборок кеша и переходов. Потому что злая память.

#194
18:13, 12 июня 2018

=A=L=X=
> потому что память теперь за ним не успевает - чтобы выкручиваться надо
> усложнить конвеер и так далее.
щито???
тормоза памяти решаются практически одним способом - толстым кэшем. а при наличии толстого кэша можно думать про упреждающее чтение.

Страницы: 112 13 14 1518 Следующая »
ФлеймФорумПроЭкты