Как программный счетчик в регистре 15 отображает конвейер? - PullRequest
0 голосов
/ 08 февраля 2019

Мне задан вопрос, который гласит:

"ARM помещает счетчик программ в регистр r15, делая его видимым для программиста. Кто-то, пишущий о ARM, заявил, что это разоблачило конвейер ARM.Что он имел в виду и почему? "

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

открытый конвейер означает тот, где программист должен рассмотреть конвейер, и я не согласен с тем, что смещение значения r15 отличается от константы кодирования.

Делая ПКвидимый программисту, да, какой-то фрагмент ранней детали реализации был «выставлен» как архитектурная странность, которую необходимо поддерживать в будущих реализациях.

Это не стоило бы комментировать, если смещениекоторый был спроектирован в архитектуре, был нулевым - не было бы никакой оптимизации для простых 3-этапных конвейеров, и все были бы не мудрее.

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

Проблема с новыми хитростямиЭто то, что людям нравится писать о них вопросы, и эти вопросы легко сформулировать плохо.Они также игнорируют тот факт, что, даже если конвейер является 3-ступенчатым, требуется только один «особый случай», чтобы затворы требовали вычисления смещения (даже если эти затворы не потребляют энергию для обычной работы).

Наличие ПК относительных инструкций довольно распространено.Использование кодировок, оптимизированных для реализации, для того, как рассчитывается предложение, также распространено - например, IBM 650

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

0 голосов
/ 08 февраля 2019

Это не совсем то, о чем они, вероятно, говорят, так это о том, что счетчик программ на две команды опережает выполнение команды.Но это не означает, что это две или три глубокие трубы, если они когда-либо были.На этом этапе он ничего не раскрывает, так же, как тень MIPS в ветвях.Есть учебник MIPS и есть реальность.

Ничего волшебного в трубопроводе нет, это компьютерная версия конвейера.Вы можете построить автомобиль на месте и привести двигатель, колеса, колеса и т. Д. К автомобилю.Или вы можете провести машину через конвейер и иметь станцию ​​для дверей, станцию ​​для колес и так далее.У вас одновременно строится много машин, и количество машин, выходящих из здания, каждые несколько минут, но это не значит, что новая машина собирается за несколько минут.Это просто означает, что самый медленный шаг занимает несколько минут, спереди назад он занимает примерно столько же времени.

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

ваш учебник будет использовать такие термины, как извлечение, декодирование, выполнение.Таким образом, если вы выбираете инструкцию в 0x1000, затем в 0x1004, а затем в 0x1008, надеясь, что код работает линейно без ветвей, тогда, когда 0x1004 выбирается, 0x1000 декодируется, когда 0x1008 выбирается, тогда 0x1004 являетсяв зависимости от того, будет ли оно декодировано, а 0x1000 может быть выполнено.так что можно подумать, что при выполнении 0x1000 счетчик программ выбирает 0x1008, что говорит мне, как работает конвейер.Ну, я не могу иметь конвейер глубиной 10000 и иметь счетчик программ, который команда видит как любой адрес, который мне нравится, относительно адреса этой инструкции. Я мог бы иметь 0x1000 для инструкции в 0x1000 и иметь конвейер глубиной 12345.Это всего лишь определение, возможно, в какой-то момент истории оно появилось из-за реального дизайна и реального канала, или его всегда можно было так определить.

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

Проблема учебника с конвейерами (не говоря уже о том, что это не реально) заключается в том, что, скажем, у нас кончаются двигатели v8, у нас на конвейере 12 грузовиков, мы строим грузовики на этой линии в течение некоторого периода времени, затем мы строим автомобили сv6-х годов.Двигатели идут на медленной лодке, как только они закончат их строить, но у нас есть готовые детали для автомобилей, поэтому давайте уберем грузовики с линии и начнем линию, так как за N шагов на конвейере машины не выходят на другой конецздания, как только первая машина доедет до конца, то новая машина каждые несколько минут.Нам пришлось промыть конвейер.когда вы выполняете инструкцию 0x1000, 0x1004, 0x1008 и т. д. Если вы можете сохранить конвейер более эффективным, но то, что из 0x1004 является ветвью к 0x1100, может иметь инструкцию 0x1008 и 0x100c в канале, поэтому мы должны сброситьтруба начинает выборку с 0x1100, и требуется некоторое количество тактов, прежде чем мы снова завершим выполнение инструкций, затем в идеале мы выполняем один за такт после этого до следующей ветки.Так что, если вы читаете классический учебник по предмету, в котором используется mips или образовательный предшественник, у них есть это понятие тени ветви или какого-либо другого подобного термина, инструкция после ветви всегда выполняется.поэтому вместо удаления N инструкций из канала вы сбрасываете N-1 инструкции и получаете дополнительные часы для получения следующей инструкции после перехода в конвейер.Вот как работает mips по умолчанию, но когда вы покупаете реальное ядро, вы можете отключить его и не выполнять инструкцию после перехода.Это отличная иллюстрация для учебника, и она, вероятно, была реальной и, вероятно, реальной для создания классных уроков по компьютерной инженерии.Но используемые в настоящее время конвейеры не ждут так долго, чтобы увидеть, что канал будет пустым и может начать извлекать раньше и иногда получать более одного такта, а не сбрасывать весь канал.Если это когда-либо было сделано, то в настоящее время оно не дает MIPS каких-либо преимуществ по сравнению с другими проектами и не дает нам возможности ознакомиться с их конвейером.

...