|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.07.2013, 01:00 | #1 | |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
Конвейер микропроцессора
Всем добрый вечер! (а точнее быть ночи )
Прошу прощения, у меня просто возникли небольшие непонятки. С назначением конвейера и того как он работает (на общем уровне) я разобрался. Но вот непонятен один момент, процитирую отрывок из книги (идет пояснение о блоке предсказания правильного перехода, речь о микропроцессоре Pentium): Цитата:
И почему нам приходится при встрече оператора ветвления очищать конвейер? (если не берем в учет блок предсказания правильного перехода, допустим мы рассматриваем микропроцессор i486). Что вообще значит очистить? Ведь там у нас находятся команды на разной стадии исполнения. Т.е. очистить - потерять результаты выполнения предыдущих команд и вообще все предыдущие 5 команд. Или это я что-то не понял? Есть свои некие домыслы по этому поводу, но просто боюсь что они неверны и глупы Спасибо! Последний раз редактировалось Базиля; 08.07.2013 в 01:07. |
|
08.07.2013, 02:55 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
потому что очистив конвейер он начинает снова наполнятся с нуля, потому некоторое время(несколько тактов, помоему это число равно количеству ступеней конвейера) его преимущества не используются.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
08.07.2013, 09:50 | #3 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Автор этой книжки, написал глупость. Дело в том, что всё зависит от размера конвейера. В 386-х процессорах, конвейер был 4-х уровневым. В современных компьютерах, конвейер имеет 20 уровней и более. Собственно, в конвейере, любая команда выполняестя за один такт процессора.
А то, что описал атор, это не конвейер, а кеш.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
08.07.2013, 11:00 | #4 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Например, есть код из 5 команд исполняющихся за 4 процессорных такта и переход, занимающий три такта, после которого идут еще 5 команд по 4 такта. - при работе конвейера, первые 5 команд исполняются за 8 тактов + переход. на некоторых процессорах переход тоже включается в общий конвейер, иногда с отставанием на один такт, а на других - выполняется вне конвейера. т.е. до момента окончания перехода проходит 8, 9 или 11 тактов. - следующие 5 команд начинают заполнять конвейер и тоже выполняются за 8 тактов. т.е. получаем: - если переход полностью включается в конвейер (возможно только в случае безусловного перехода), то выполнение кода продлится 16 тактов - если переход смещен в конвейере на такт - за 17 тактов - если переход не включается в конвейер (во многих процессорах так и бывает в случае условного перехода - для принятия правильного решения требуется чтобы все флаги были актуальны для данной команды) - за 19 тактов - если вместо перехода используется трехтактовая команда и конвейер не прерывается - 14 тактов - если конвейер не используется - 43 такта. т.е. видно, что переход увеличивает время работы конвейера, что снижает эффективность кода. з.ы. это приблизительная модель. частности нужно смотреть для конкретного процессора.
Правильно поставленная задача - три четверти решения.
|
|
08.07.2013, 11:14 | #5 | |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
Цитата:
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
|
08.07.2013, 11:24 | #6 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Да я и не спорю... Но для понимания принципа сгодится, а дальше уже будет проще...
Правильно поставленная задача - три четверти решения.
|
08.07.2013, 15:42 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
они снижают шанс обнуления конвейера, но все же не на 100%.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
08.07.2013, 17:22 | #8 | ||||||
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
Спасибо за ответы
Пепел Феникса Цитата:
Smitt&Wesson Цитата:
Поправьте если я не прав, но ведь конвейер это новшество 486? DiemonStar Цитата:
Цитата:
Цитата:
Цитата:
Как там происходит обработка команд перехода? Последний раз редактировалось Базиля; 08.07.2013 в 17:29. |
||||||
08.07.2013, 22:55 | #9 | |||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Цитата:
Как Вы считаете, регулярно откатываясь на несколько инсртукций назад и многократно повторяя один и тот же фрагмент кода - это эффекктивный режим работы? Цитата:
У нас есть несколько последовательных команд. Пусть их 4: 1. команда до условного перехода, 2. команда условного перехода, 3. команда, которая выполняется по истинному условию, 4. команда, которая выполняется по ложному условию. Очевидно, что если мы выполняем команду 3, а в результате вычисления 2 условие оказалось ложным, нам следует очистить конвейер от результатов работы команды 3. |
|||
08.07.2013, 23:08 | #10 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
- конвейер выборки из памяти в процессорах 8086-80386, - конвейер выполнения инструкций в суперскалярных процессорах (от Pentium и выше). |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определение типа микропроцессора (TASM) | -danger- | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 24.11.2013 20:58 |
Конвейер рендеринга. | Warn | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 1 | 16.12.2011 09:51 |
Ленточный конвейер.... | dj-Oleg | Помощь студентам | 2 | 03.11.2011 15:57 |
Shell на C(Конвейер) | l1pton17 | Общие вопросы C/C++ | 0 | 01.11.2010 22:01 |
тестирование микропроцессора на быстродействие | swatkiev | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 16.09.2010 08:20 |