[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ВН 03 марта 2003 г. 19:33
В ответ на: спасибо за развернутый ответ, если не надоело - продолжу обсуждение отправлено yes 03 марта 2003 г. 17:14

Ну по терминологии кэшевой я спорить не буду. Меня в свое время (не помню даже, что за проц. был) удивил термин n-way set associative cache. Он, этот термин, просто встретился, без объяснения. Я долго пытался понять, что это за зверь. Простой перевод - кэш с n-путевым ассоциативным набором - ничего не дал.
По поводу промахов - правы. Описанная Вами ситуация даст 100% (или очень много) промахов, если, конечно подпрограмма сама не имеет цикла.
А переходы и вызовы снижают эффективность в любой машинке, по моему.
Конечно, в критичных местах их минимизировать надо. Совсем не исключишь, особенно переходы. Циклы на них строятся.
Быстрый же код получается на самом деле трудночитаемым. В 6000 для быстрости еще и, как TI называет, software pipeline использовать приходится. Тоже не способствует читаемости. Т.е., грубо говоря, в одном проходе цикла вычисляется не только текущая итерация, но и подготавливаются и/или частично вычисляются следующие.
По конвейеру. Все же он относится к первому типу, из перечисленных Вами. Хотя абсолютно независимых стадий конвейера не бывает, мне кажется.
Ваш пример с 8 исполняемыми пакетами в одном фетче. Что происходит?
В конвейере в общем-то 3 стадии, а каждой куча подстадий, или фаз, как ТИ зовет. Начинается со стадии чтения фетч пакета из памяти (кэша). Именно с фазы генерации адреса, затем, на следущем цикле (в следующей фазе), отправка этого адреса в память и одновременно генерация адреса следующего пакета, на следующем цикле собственно чтение памяти, одновременно отправка в нее адреса следующего пакета и формирование адреса уже 3-го пакета. На следующем цикле - получение из памяти 1-го пакета, чтение 2-го, отправка адреса 3-го, формирование адреса 4-го. Это 4 фазы стадии чтения пакета из памяти.
К концу этой стадии в ней находятся, как видно, одновременно 4 пакета, но в разных фазах. Затем для первого фетч-пакета начинается стадия дешифрации, состоящая из 2-х фаз, диспетчеризации и декодирования. 1 фетч входит в фазу диспетчеризации, одновременно 2-й поступает в процессор, 3-ий читается, адрес 4-го отправляется в память, формируется адрес 5-го.
Затем фаза декодирования для 1-го.
С фазы декодирования и начинаются отличия для случая одного исполняемого пакета на фетч и для случая нескольких исполняемых на фетч. Можно сказать так, что число фаз декодирования равно числу исполняемых пакетов в фетче.
В случае одного исполняемого на фетч одновременно с декодированием 1-го вступает в фазу диспетчеризации 2-й, соответственно сдвигаются все остальные. Одна фаза декодирования на весь фетч.
В случае нескольких не так.
В фазу декодирования входит только первый исполняемый пакет из 1-го фетча.
На следующем цикле он перезодит в первую исполнительную фазу, а в фазу декодирования переходит 2-й исполняемый из первого фетча и т.д.
Часть конвейера, отвечающая за чтение из памяти тормозится.
До тех пор, пока последний исполняемый пакет из первого фетча не перейдет в фазу декодирования. Т.е. остальные фетчи до этого момента остаются в том же состоянии, что и в момент перехода 1-го фетча в фазу диспетчеризации. Но, одновременно с переходом последнего исполняемого пакета из первого фетч, в фазу диспетчеризации входит 2-й фетч пакет, с соответствующим сдвигом остальных. Причем в это время все, кроме последнего, исполняемые пакеты 1-го фетча находятся в разных фазах исполнения. Т.е. 2-й фетч пакет к этому времени уже готов для диспетчеризации и т.д.
Т.е. получается, все же как для первого типа конвейера, если ограничиться только обобщенными стадиями конвейера - извлечение, исполнение. Исполняется один, извлекается следующий. Я сейчас сознательно не писал про остановку конвейера, связанную с тормозом памяти. Тут, как Вы правильно заметили, от конвейера не зависит. Выше одного места не прыгнешь.
Все это есть в мануале. Вначале чтение TI-шной документации заставляет тихо материться. Потом привыкаешь. Оказывается, что найти можно ответы практически на любые вопросы, только часто искать долго приходится.


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru