Количество конвейеров в процессорах Pentium 3/4

Тема в разделе "WASM.ZEN", создана пользователем Hunter, 25 фев 2005.

  1. Hunter

    Hunter New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    47
    Кто-нибудь располагает информацией о количестве конвейеров в процессорах Pentium 3/4 ? Я знаю, что в первом Pentium было 2 конвейера, а во втором 3 (унаследовано от Pentium Pro). Читал много обзоров по Pentium 4, но ни в одной статье о количестве конвейеров не упоминалось.
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Pentium II - ядро P6 (P Pro) + MMX

    Pentium 3 - ядро P6 (P Pro) + MMX + SSE



    так что кол-во конвееров не изменилось.



    А в Pentium IV конвееров вроде нет совсем :).

    Внутри это RISC просессор, который выполняет не x86 инструкции, а µop'ы.

    Смотри Execution Units and Issue Ports в IA-32 Intel® Architecture Optimization Reference Manual (24896611.pdf)

    Да и остальное об Intel NetBurst® Microarchitecture тоже.
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Hunter

    > "ни в одной статье о количестве конвейеров не упоминалось"



    А говоришь, что знаком с архитектурой P6 :) Почитай Фога, хотя ответа "скоко в граммах вешать" все равно не найдешь. А потому, что только в PPlain\PMMX было всего два параллельных пайпа (U и V) для исполнения инструкций.

    В P6 и NetBurst все совсем не так. К примеру, в NetBurst мопы поступают в execution core из реордер-буфера (ROB) по 4 портам в 8 исполнительных блоков (units) и распределяются по 18 подблокам (subunits). Быстрые блоки (add,sub,logic) буферировать незачем, т.к. они исполняют команды со скоростью их поступления. Супер-медленные (типа fdiv) тоже не имеет смысла, т.к. следующая команда может подождать своего часа и в ROB. Остальные подблоки, у которых throuhput меньше latency - по всей видимости буферированы, но в IA-32 упоминается, что некоторые блоки\подблоки могут разделять одну пайплайн. Поэтому сколько всего этих буферов-пайпов и какова их длина ИМХО мало кому известно и интересно.

    Примерно тоже самое имеет место и в P6 family (см. у Фога раздел 14.4 Out of order execution), т.к. логика работы исполнительного ядра таже - только число портов и исп.блоков другое.



    И насчет 3-х конвейеров PPro\PII ты ИМХО не прав. Видимо ты имеешь ввиду понятие "three-way superscalar, pipelined micro-arhitecture", которое согласно IA-32 просто означает, что "используя параллельную технику, процессор способен в среднем decode, dispatch и complete execution (retire) трех инструкций за один такт ". Никакого отношения к реальному количеству конвейров это понятие ИМХО не имеет.
     
  4. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Если не ошибаюсь то в p6 их было 12.
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Что такое конвеер?

    Представте себе завод :) задача конвеера - транспортировка, а не выполнение операций :derisive:
     
  6. Hunter

    Hunter New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    47
    leo, инфу о трех конвейеров на P6 я же взял не из головы, а читал из каких-то источников. Хотя, может быть, сами авторы в чем-то заблуждались, либо написали "образно". Как известно, в P6 блок декодирования может обрабатывать три инструкции за такт: две простых и одну сложную. А затем параллельно исполнять в исполнительных блоках. Может это и послужило поводом заявить, что в P6 три конвейера ? Но тогда возникает один вопрос: декодируем 3 инструкции за такт, получаем 6 микроопераций (1+1+4). Но число исполнительных блоков отличается. Так сколько же тогда конвейеров в P6 ?



    S_T_A_S_, как это
    ? :)) Вроде бы все современные процы считаются суперскалярными, а суперскалярность подразумевает под собой наличие нескольких конвейеров. Где же истина ? Только не говорите, что "истина где-то рядом" :)))
     
  7. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Да забудь ты про конвееры, как о чем-то целом и количественном, это понятие видимо осталось от PPlain\PMMX



    Конвеер один, это грубо говоря, вся цепочка устройст (декодеров, блоков, и т.д.), которые обрабатывают инструкции, мопы, данные ... вот "конвеер" P6 (статья PC Magazine September 12, 1995)
    Код (Text):
    1.              ------------------------------------
    2.             | Встроенный кэш второго уровня (256 |
    3.             | Кбайт или 512 Кбайт)      |
    4.   |     |        ------------------------------------
    5.   |     |          |      |
    6. Внешняя    Внешняя   Шина   Шина
    7. шина       шина     данных  адреса
    8. данных       адреса  (64 бит  (31 бит)
    9. (64 бит    (36 бит) + ECC,    |            ------------------------          |
    10. + ECC,      |       8 бит)    |          | Буфер упорядочения     | ----------->|
    11. 8 бит)       |          |      |            ---> |обращений к памяти (MOB)| <--->|      |
    12.   |     |          |      |           |      ------------------------       |      |
    13.   |     |     --------------------- <-----                      |      |
    14.   |     |<-> |   Блок интерфейса   |       ------------------------       |      |
    15.   |<--------|--> |    шины         |<---------> |  Кэш данных (8 Кбайт)  |------|----->|
    16.   |     |     ---------------------          ------------------------  <--->|      |
    17.              |               ------------------------       |      |
    18.   -----------------------------------           | Блок интерфейса памяти |------|----->|
    19.  | Блок выборки/декодирования команд |             ------------------------  <--->|      |
    20.  | Кэш команд       Указатель      |                |__________________________  |
    21.  | (8 Кбайт)  <--  на следующую      |                           | |
    22.  |            команду         |        -------         ------------------------   | |
    23.   -----------------------------------        |       |Порт 4 |   Блок памяти данных   |->| |
    24.     |           |            |       |------> ------------------------   | |
    25.     |           |            |       |                   | |
    26.   16-байт буфер       Буфер адреса       |       |        ------------------------   | |
    27.    выравненных       перехода -       |       |Порт 3 |   Блок генерации адреса|  | |
    28.     команд x86          содержит до      |       |------>|         записи       |->| |
    29.        |   |  |       512 элементов         |       |        ------------------------   | |
    30.        |   |  |_______      |            |       |        ------------------------   | |
    31.        |   |__        |_    |            | Стан- |Порт 2 |   Блок генерации адреса|->| |
    32.  ------|------| --------|---------------     | ция-  |------>|         считывания      |    |
    33. |      | Дешифратор команд x86        |  | резер-|       ------------------------     |
    34. |      |      |     |         |  | вуар  |        ------------------------     |
    35. | Простой   Простой   Сложный    Блок    |  | (буфе-|Порт 1 |  Блок целочисленных    |    |
    36. | блок      блок      блок     <->упорядо-|  | ризу- |------>|    операций         |    |
    37. | обработки обработки обработки   чения   |  | ет    |         |_______________________ |<-->|
    38. | (1 микро- (1 микро- (от 1 до 4  команд  |  | 20    |       |  Блок выполнения       |    |
    39. | команда   команда    микро-          |  | мик-  |        |      переходов        |    |
    40. | за такт)  за такт)   команд       |  | роко- |        ------------------------     |
    41. |              за такт)     |  | манд) |         -----------------------     |
    42.  -----------------------------------------   |       |Порт 0 |  Блок целочисленных    |    |
    43.     |   |   | | | |          |       |------>|  операций          |    |
    44.   ----------------------------------------   |       |       |  ----------------------|    |
    45.  |  Таблица псевдонимов регистров      |  |       |       |  Блок целочисленного   |    |
    46.  |     и блок распределения     |  |       |       |  деления        |    |
    47.   ----------------------------------------   |       |       |  ----------------------|    |
    48.               |              |       |       |  Блок сложения с       |    |
    49.               |              |       |       |  плавающей точкой      |    |
    50.               |              |       |       |  ----------------------|<-->|
    51.               |              |       |       |  Блок умножения с      |    |
    52.               |              |       |       |  плавающей точкой      |    |
    53.               |              |       |       |  ----------------------|    |
    54.               |              |       |       |  Блок деления с        |    |
    55.               |              |       |       |  плавающей точкой      |    |
    56.               |              |       |       |  ----------------------|    |
    57.               |              |       |       |  Блок сдвиговых       |    |
    58.               |              |       |       |  операций          |    |
    59.               |              |       |         -----------------------     |
    60.               |              |       |<------------------------------------|
    61.               |              |       |       ------------------------      |
    62.               |              |       |<---- | Буфер восстановления   |<----|
    63.               |              |       |      |  последовательности    |       |
    64.               |              |       |      |  (содержит до 40         |     |
    65.               |              |       |      |  элементов)       |     |
    66.               |               -------       |------------------------|     |
    67.               |              |      |     Массив реальных    |       |
    68.               |<----------------------------------->|        регистров      |     |
    69.               |  В среднем 3 микрокоманды за такт    ------------------------    |
    70.                                         Шины результатов
    71.  
    Как видишь, местами он "растекается" на несколько частей (3 декодера, 5 портов и т.д.), а местами стекается в одно устр-во (reservation station, ROB,RAT ...)
     
  8. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Или вот в цветах радуги, а в P4 устройств ещё больше и несовсем похожи на эти



    [​IMG]
     
  9. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Код (Text):
    1.       Блок упорядоченной обработки
    2.        _______
    3.       |    |  |
    4.       | I1 |  |- Архитектура конвейера P6
    5.       |----|--|
    6.       | I2 |  |   Определение указателя на
    7.       |____|  |   следующую команду.Обращение к
    8.       |    |  |   кэш-памяти команд. Создаетс
    9.       | I3 |  |- буфер команд емкостью 16 байт.
    10.       |____|  |   Команды процессора x86 вырав-
    11.       |    |  |   ниваются перед посылкой в де-
    12.       | I4 |--|   шифраторы.
    13.       |____|  |
    14.       |    |  |- Команды x86 декодируются и
    15.       | I5 |  |   преобразуются в микрокоманды.
    16.       |____|  |
    17.       |    |  |
    18.       | I6 |  |
    19.       |____|__|
    20.       |    |  |   Регистры переименовываются с помощью
    21.       | I7 |  |- таблицы псевдонимов регистров (RAT -
    22.       |____|__|   register alias table).
    23.       |    |  |
    24.       | I8 |  |   Микрокоманды выдаются и запи-
    25.       |    |  |- сываются в станцию-резервуар,
    26.       |____|__|   статус команд записывается в
    27.                   буфер восстановления последо-
    28.                   вательности.
    29.  
    30.       Блок обработки с изменением последовательности
    31.  
    32.        ____ __
    33.       | O1 |  |   Микрокоманды направляются из
    34.       |____|  |__ станции-резервуара в исполни-
    35.       | O2 |  |   тельные блоки.
    36.       |____|__|
    37.       |    |  |
    38.       | O3 |  |__ Микрокоманды выполняются (один
    39.       |____|__|   или более тактов).
    40.  
    41.       Блок вывода
    42.  
    43.        ____ _
    44.       | R1 | |    Результаты становятся доступными
    45.       |____| |    для пересылки в буфер восстанов-
    46.       |    | |    ления последовательности. Прове-
    47.       | R2 | | __ ряются взаимозависимости. Со-
    48.       |____| |    тавляется очередь на удаление
    49.       |    | |    микрокоманд. Обновляется содер-
    50.       | R3 | |    жимое реальных регистров и па-
    51.       |____|_|    мяти.
     
  10. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Вот P4 (статьи ищите там, откуда картинки)



    [​IMG]



    Рис. 4. Общая структура Pentium 4
     
  11. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    [​IMG]



    Рис. 5. Rapid Execute Engine
     
  12. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    [​IMG]



    Рис. 6. Конвейер Pentium 4 по сравнению с предшественниками
     
  13. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    AMD K8 architecture



    [​IMG]
     
  14. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Hunter >




    Суперскалярность - это возможность параллельной обработки? Значит конвеер ни как не влияет, это же просто "транспорт", а влияют execution unit'ы.





    bogrus >




    Гы, мне всегда нравились таие картинки - полёт мысли отдела маркетинга - сразу "понятно", чем длинне конвеер тем лучше :))))))))
     
  15. Hunter

    Hunter New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    47
    S_T_A_S_, конвейер состоит из нескольких ступеней (например декодирование, исполнение и т.д.). К примеру, у P4 на ядре Northwood 20 ступеней, а у Prescott уже 31 :)) Так что конвейер в процессорах - это не просто "транспорт".
     
  16. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    И как разное кол-во стадий влияет на сам смысл транспорта?

    Твой пример как раз этот смысл и показывает - продвижение инструкции от одной стадии выполнения к другой. А выполнением занимаются другие блоки (например декодирование, исполнение и т.д.).
     
  17. Hunter

    Hunter New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    47
    S_T_A_S_, я просто имел ввиду, что конвейер это не какой-то конкретный транспортер, а довольно образное понятие. Т.е. обработка инструкций разбивается на несколько этапов (например, несколько стадий на декодирование, несколько на исполнение и т.д. - количество зависит от модели проца). И совокупность этих этапов и составляет конвейер, т.е. он отражает текущее состояние инструкций в процессе их обработки. Хотя трактовать можно по-разному, смотря с какой стороны смотреть :)))