Еще раз о Pentium-e и Пентковском

Владимир Мстиславович Пентковский умер 24.12.2012 :(
 
1 2 3
RU Kernel3 #06.04.2009 21:31  @Серокой#06.04.2009 21:27
+
-
edit
 

Kernel3

аксакал

Серокой> Как - чем? Единым регистровый файлом. На многопроцессорной системе просто невыгодно обрабатывать одну и ту же задачу, на передачи по системной шине потеряешь много, а тут всё уютненько крутится в ядре, пусть и заведомо без зависимости по данным.

Т.е. суперскалярный проц проще, чем мнопроцессорная система? ;)
Broken Windows® cures my ills and makes me feel alright... ©  
RU Серокой #06.04.2009 21:34  @Kernel3#06.04.2009 21:31
+
-
edit
 

Серокой

координатор
★★★★
Kernel3> Т.е. суперскалярный проц проще, чем мнопроцессорная система? ;)

Без зависимости по данным? Конечно!
Ну... Оговорюсь: смотря что есть суперскалярность. Если в один поток инструкций мы выделяем арифметические команды, а в другую - ветвления, то безусловно. Если же у нас дробятся алушки, конвейер и тыды - то это уже многоядерность.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
RU Kernel3 #06.04.2009 21:37  @D.Vinitski#06.04.2009 21:24
+
-
edit
 

Kernel3

аксакал

D.Vinitski> Pentium восходит к коду ряда процессоров P5, в отличии от 486!

Я бы даже сказал, что P5 - это и есть Pentium :F Тот, который первый вариант (60/66МГц и особо "точная" плавучка).
Broken Windows® cures my ills and makes me feel alright... ©  
RU Kernel3 #06.04.2009 21:37  @Серокой#06.04.2009 21:34
+
-
edit
 

Kernel3

аксакал

Kernel3>> Т.е. суперскалярный проц проще, чем мнопроцессорная система? ;)
Серокой> Без зависимости по данным? Конечно!

А чё тогда не сделали? :F
Broken Windows® cures my ills and makes me feel alright... ©  
RU Серокой #06.04.2009 21:39  @Kernel3#06.04.2009 21:37
+
-
edit
 

Серокой

координатор
★★★★
Kernel3> А чё тогда не сделали? :F

а кому она нужна, без зависимости-то? ;)
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
CZ D.Vinitski #06.04.2009 21:39  @Kernel3#06.04.2009 21:37
+
-
edit
 

D.Vinitski

филин-стратег
★★
D.Vinitski>> Pentium восходит к коду ряда процессоров P5, в отличии от 486!
Kernel3> Я бы даже сказал, что P5 - это и есть Pentium :F Тот, который первый вариант (60/66МГц и особо "точная" плавучка).

Так при чем тут Пентковский?
 
RU Kernel3 #06.04.2009 21:40  @D.Vinitski#06.04.2009 21:39
+
-
edit
 

Kernel3

аксакал

D.Vinitski> Так при чем тут Пентковский?

Не знаю :)
Broken Windows® cures my ills and makes me feel alright... ©  
RU Kernel3 #06.04.2009 21:41  @Серокой#06.04.2009 21:39
+
-
edit
 

Kernel3

аксакал

Kernel3>> А чё тогда не сделали? :F
Серокой> а кому она нужна, без зависимости-то? ;)

Нуууу :) Чё, Pentium никто не покупал, что ли? :) Или PowerPC 6xx до 620-ого, что ли.
Broken Windows® cures my ills and makes me feel alright... ©  
RU Серокой #06.04.2009 21:43  @Kernel3#06.04.2009 21:41
+
-
edit
 

Серокой

координатор
★★★★
Kernel3> Нуууу :) Чё, Pentium никто не покупал, что ли? :) Или PowerPC 6xx до 620-ого, что ли.

Ну... одним словом, могу сказать, что я не вижу принципиальной сложности разделения инструкций на два потока (с условием того, что один тип инструкций всегда находится в одном потоке) с одновременным выполнением.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
US Mishka #06.04.2009 21:55  @Серокой#06.04.2009 21:34
+
-
edit
 

Mishka

модератор
★★★
Серокой> Без зависимости по данным? Конечно!

Какие чудные результаты, зато иногда случаются! HP машины этим очень славились. Ну и наши СМ-2, а потом и ПС-1001. Как совместишь несколько команд в одно слово, которые не совсем независимы — блеск! :)

Серокой> Ну... Оговорюсь: смотря что есть суперскалярность. Если в один поток инструкций мы выделяем арифметические команды, а в другую - ветвления, то безусловно. Если же у нас дробятся алушки, конвейер и тыды - то это уже многоядерность.

Ну, на уровне микрокода (та же 2900 серия) позволяла делать дешифрацию команд и вычисление адреса в параллель. Во всяком случае, Самсон так и делал. А уж тот факт, что прибавление единички на IBM System/360 при помощи команды LA R1,1(R1) работало быстрее — всем известно (хотя только для 24 бит). Т.е. в этом смысле зачатки суперскалярности были там. Потому как в водопроводе (pipeline) адреса вычислялись вместе с дешифрацией команд. А потом только в АЛУ поступало.
 6.06.0
RU Серокой #07.04.2009 00:14  @Mishka#06.04.2009 21:55
+
-
edit
 

Серокой

координатор
★★★★
Mishka> Какие чудные результаты, зато иногда случаются!
Дык кто б сомневался! Кстати, мне пришла в голову конфигурация многопроцессорной системы, которая проще суперскалярной без зависимости: та, что вообще без кэша! Тогда всё проще некуда, добьавляется только арбитр запроса в память со стороны всех процессоров - и всё.

Mishka> водопроводе (pipeline)
Ну... конвейер- он и есть конвейер, в русской терминологии. ;)
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
US Mishka #07.04.2009 00:22  @Серокой#07.04.2009 00:14
+
-
edit
 

Mishka

модератор
★★★
Серокой> Ну... конвейер- он и есть конвейер, в русской терминологии. ;)
А вот ни фига! Нельзя было средмашу использовать это слово. Как и эВМ. :P Эти слова были закреплены за минприбором, ЕМНИП.
 6.06.0
RU Серокой #07.04.2009 00:27  @Mishka#07.04.2009 00:22
+
-
edit
 

Серокой

координатор
★★★★
Mishka> А вот ни фига! Нельзя было средмашу использовать это слово. Как и эВМ. :P

Э... То есть МЭП создавала ЭВМ, а средмаш - что-то иное, скажем, вычислители? Вот же... Улыбнуло. )
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

AXT

инженер вольнодумец
★☆
ahs>> НЯЗ из линейки настольных интелов от П1 до современных выпадал только П4...
Kernel3> Не. Выпадал как раз П1. Потому что без RISC-ядра и т.д.

:) Вообще-то, если так можно сказать, "RISC-ядро" появилось в 486. А П1 - скорее расшитый 486, чем разработка "с нуля". Особенно показательно, как он исполняет "в параллель" что-нибудь вроде add [esp+10],eax/add [esp+14],ebx :D

ahs>> а коре2 - это как раз таки "широкий" П3,
Kernel3> Тоже не особо. В смысле, Коре/Коре2 ближе в П3, чем к П4, но не более того.

Core/Core 2 - это и есть П3, улучшенный и доработанный. п4 ему вообще не родственник.

Собственно, я бы интеловские x86 классифицировал бы так:

1) Микрокодированные CISC:

8086-80386

2) С RISC-конвейером для арифметических команд:

80486, Pentium, Pentium MMX

3) На архитектуре Pentium Pro (Out-of-Order с декодированием в микрокод)

PPro, PII, PIII, Pentuim M, Core, Core 2, i7.

4) Netburst (OOO с кэшированием микрокода и большой глубиной ООО)

Pentium 4, Pentium D
... так пускай наступает на нас холодным рассветом новый день ...  3.0.83.0.8

MIKLE

старожил
★☆
AXT> Собственно, я бы интеловские x86 классифицировал бы так:

а перевести?
Модифицированым комплексам модифицированые танки. (С) VooDoo ХАЧУУУ МАТАЦИКЛ!!!!!!  
+
-
edit
 

Kernel3

аксакал

AXT> :) Вообще-то, если так можно сказать, "RISC-ядро" появилось в 486.

Нельзя. "RISC-ядро" - это и есть "декодирование в микрокод".

AXT> А П1 - скорее расшитый 486, чем разработка "с нуля".

Я как бы в курсе.

AXT> Особенно показательно, как он исполняет "в параллель" что-нибудь вроде add [esp+10],eax/add [esp+14],ebx :D

И в чём проблема в данном конкретном случае?

Upd: ан нет, таки есть проблема. Ну, ублюдочный V-pipe, чё с него взять.

AXT> Собственно, я бы интеловские x86 классифицировал бы так:
AXT> 1) Микрокодированные CISC:
AXT> 8086-80386
AXT> 2) С RISC-конвейером для арифметических команд:
AXT> 80486, Pentium, Pentium MMX

В чём RISCовость конвейера-то заключалась? В выполнении некоторых инструкций за такт?

AXT> 3) На архитектуре Pentium Pro (Out-of-Order с декодированием в микрокод)
AXT> PPro, PII, PIII, Pentuim M, Core, Core 2, i7.
AXT> 4) Netburst (OOO с кэшированием микрокода и большой глубиной ООО)
AXT> Pentium 4, Pentium D

Остальное правильно, в принципе.
Broken Windows® cures my ills and makes me feel alright... ©  
Это сообщение редактировалось 07.04.2009 в 19:22

Kernel3

аксакал

AXT>> Собственно, я бы интеловские x86 классифицировал бы так:
MIKLE> а перевести?

х86 CPUs manufactured by Intel :):)
Broken Windows® cures my ills and makes me feel alright... ©  

MIKLE

старожил
★☆
AXT>>> Собственно, я бы интеловские x86 классифицировал бы так:
MIKLE>> а перевести?
Kernel3> х86 CPUs manufactured by Intel :):)

я про поскипаное ниже, изверг
Модифицированым комплексам модифицированые танки. (С) VooDoo ХАЧУУУ МАТАЦИКЛ!!!!!!  

Kernel3

аксакал

MIKLE> я про поскипаное ниже, изверг

Эт чё-нить почитать на тему нужно. Начать хотя бы с Википедии :D
Broken Windows® cures my ills and makes me feel alright... ©  

AXT

инженер вольнодумец
★☆
AXT>> :) Вообще-то, если так можно сказать, "RISC-ядро" появилось в 486.
Kernel3> Нельзя. "RISC-ядро" - это и есть "декодирование в микрокод".

Не, так не годится. 8086 тоже декодировал команды в микрокод. "RISC-ядро" - это декодирование в выполняемый на конвейере микрокод.
А ещё лучше так: "RISC-ядро" - это декодирование в выполняемый на конвейере микрокод, при том, что одновременно может выполняться микрокод нескольких команд программы.

Почему? А потому, что пока в процессоре в один момент времени исполняется одна команда, то всю обработку особых ситуаций, конфликтов доступа к ресурсам и т.п. можно переложить на плечи разработчика микрокода. Обычно так и делают. Соответственно, железо можно делать тупое, а потому простое.
Если же мы хотим исполнять на конвейере микрокод от нескольких команд, то блоку исполнения микрокоманд нужно будет распознавать конфликты между командами (и задерживать исполнение соответствующих микрокоманд), синхронизировать доступ к памяти и уметь производить откат в случае неправильно предсказанных переходов.
То есть, блок исполнения микрокоманд будет выполнять все те же функции, что выполняет ядро RISC-процессора, и его вполне справедливо можно называть "RISC-ядром".

В 80486 всё работает именно так.

AXT>> А П1 - скорее расшитый 486, чем разработка "с нуля".
Kernel3> Я как бы в курсе.

А некоторые писатели в эту тему - нет :D

Kernel3> Upd: ан нет, таки есть проблема. Ну, ублюдочный V-pipe, чё с него взять.

Э, тут смешнее. Ведь пара mov [esp+10],eax/mov [esp+14],ebx таки исполняется за один такт. Я намекал на то, что и в 486, и в П1 команды такого типа разворачиваются в микрокод (в 486 - три команды, в П1 может быть и две), а разработчики не стали делать логику для проверки конфликтов параллельного доступа в память для таких вот пачек в несколько микрокоманд.
У 486 этих проблем не может быть в принципе, там же одна кишка. :)

Мне кажется, это достаточно убедительный пример перетаскивания целых блоков из 486 в П1. Если бы П1 делали с нуля, этот момент могли бы решить иначе.

Kernel3> В чём RISCовость конвейера-то заключалась? В выполнении некоторых инструкций за такт?

См. выше. Инструкция за такт - это просто дополнительная плюшка.
Раз у нас большинство часто используемых команд можно декодировать в одну микрокоманду, а одну микрокоманду исполнить на конвейере за такт - так почему бы не сделать декодер, обрабатывающий такую команду за такт?
и получить в результате одну CISC команду за такт?
... так пускай наступает на нас холодным рассветом новый день ...  3.0.83.0.8
Это сообщение редактировалось 08.04.2009 в 00:51

AXT

инженер вольнодумец
★☆
MIKLE> а перевести?

На какой язык? :D Русский программистский? Русский литературный? Русский разговорный? Русский матерный помехозащищённый? :s36:

Шучу. В формат форума нормальное объяснение не влезет, а так стоит прочесть следующее (ну и далее по ссылкам):

http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80
http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%B4

и т.д.

Фактический материал там так себе, много обычного для википедии гона, но основные понятия изложены приемлемо.
... так пускай наступает на нас холодным рассветом новый день ...  3.0.83.0.8

Mishka

модератор
★★★
AXT> :) Вообще-то, если так можно сказать, "RISC-ядро" появилось в 486. А П1 - скорее расшитый 486, чем разработка "с нуля". Особенно показательно, как он исполняет "в параллель" что-нибудь вроде add [esp+10],eax/add [esp+14],ebx :D

И как?

AXT> Core/Core 2 - это и есть П3, улучшенный и доработанный. п4 ему вообще не родственник.

Ну, там доработки не слабые для SMP, которые раньше были на внешнем кристале.

AXT> Собственно, я бы интеловские x86 классифицировал бы так:
AXT> 1) Микрокодированные CISC:
AXT> 8086-80386
AXT> 2) С RISC-конвейером для арифметических команд:
AXT> 80486, Pentium, Pentium MMX

Хм, странная классификация — они тоже микрокодированные.

AXT> 3) На архитектуре Pentium Pro (Out-of-Order с декодированием в микрокод)
AXT> PPro, PII, PIII, Pentuim M, Core, Core 2, i7.

Тоже микрокодированные.

AXT> 4) Netburst (OOO с кэшированием микрокода и большой глубиной ООО)
AXT> Pentium 4, Pentium D

И несколькими конвейерами с попыткой предсказать ветвление и разгона ветвей заранее, ИМХО.
 3.0.53.0.5
Это сообщение редактировалось 08.04.2009 в 07:26

Mishka

модератор
★★★
AXT>> Собственно, я бы интеловские x86 классифицировал бы так:
MIKLE> а перевести?

С одной стороны, микрокод — тоже программа. С другой стороны, очень не похожая на обычные. Вот представь, что у тебя есть 70 устройств, работающих в параллель. И битики в микрокоде определяют, какие устройства будут участвовать в следующей операции и что будут эти устройства делать. Вот возьми, примеру, колбасо резку, подталкиватель колбасы и подкладчик бумажки. Все устройства независимы. И попытайся заставить их заработать вместе.
 3.0.53.0.5
+
-
edit
 

Kernel3

аксакал

Kernel3>> Нельзя. "RISC-ядро" - это и есть "декодирование в микрокод".
AXT> Не, так не годится. 8086 тоже декодировал команды в микрокод. "RISC-ядро" - это декодирование в выполняемый на конвейере микрокод.

Я имел ввиду, что "RISC-ядро" - это декодирование именно в RISC-микрокод. Для параллельной работы нескольких исполнительных устройств. Т.е. именно PPro и дальше.

AXT> То есть, блок исполнения микрокоманд будет выполнять все те же функции, что выполняет ядро RISC-процессора, и его вполне справедливо можно называть "RISC-ядром".
AXT> В 80486 всё работает именно так.

А в чём отличие от предыдущих?

AXT> Э, тут смешнее. Ведь пара mov [esp+10],eax/mov [esp+14],ebx таки исполняется за один такт. Я намекал на то, что и в 486, и в П1 команды такого типа разворачиваются в микрокод (в 486 - три команды, в П1 может быть и две), а разработчики не стали делать логику для проверки конфликтов параллельного доступа в память для таких вот пачек в несколько микрокоманд.

Ну, о забивании на зависимости по данным я уже писал.

AXT> У 486 этих проблем не может быть в принципе, там же одна кишка. :)

У П1 тоже можно от них избавиться. Тем же методом. Там V-pipe отключался при желании :F

AXT> Мне кажется, это достаточно убедительный пример перетаскивания целых блоков из 486 в П1. Если бы П1 делали с нуля, этот момент могли бы решить иначе.

Ну, дык, да. С другой стороны, добавили предвыборку инструкций и предсказание переходов.
Broken Windows® cures my ills and makes me feel alright... ©  

AXT

инженер вольнодумец
★☆
AXT>> Особенно показательно, как он исполняет "в параллель" что-нибудь вроде add [esp+10],eax/add [esp+14],ebx :D
Mishka> И как?

Сначала весь микрокод от первой команды (3 такта), потом от второй (3 такта, но на одну микрокоманду всё-таки есть перекрытие). И это при том, что одна команда идёт в U-pipe, вторая в V-pipe, можно было бы всё сделать за 3 такта!


AXT>> 2) 80486, Pentium, Pentium MMX
Mishka> Хм, странная классификация — они тоже микрокодированные.

Так ведь все x86 микрокодированные, это не показатель. В 486 появился конвейер для микрокоманд, раньше его не было. Это очень серьёзное изменение.

AXT>> 3) На архитектуре Pentium Pro (Out-of-Order с декодированием в микрокод)
AXT>> PPro, PII, PIII, Pentuim M, Core, Core 2, i7.
Mishka> Тоже микрокодированные.

Прошу читать внимательнее, я об этом написал :) В PPro появилось неупорядоченное исполнение и общий пул исполнительных устройств (которого, кстати, у AMD нету до сих пор, в Атлонах каждый вычислительный блок привязан к своему каналу декодера команд).

AXT>> 4) Netburst (OOO с кэшированием микрокода и большой глубиной ООО)
AXT>> Pentium 4, Pentium D
Mishka> И несколькими конвейерами с попыткой предсказать ветвление и разгона ветвей заранее, ИМХО.

В смысле, исполняет обе ветки условного перехода? Такой слух действительно ходил в своё время, но - нет. Всегда исполняется только одна трасса, это проверено.
А вот предсказатель переходов у него и правда очень хороший, его даже AMD-шники хвалили, как это ни удивительно. У них агрегатец похуже получился.

Исторически первый предсказатель переходов (среди x86) появился в П1, но совсем тупенький (не умел предсказывать чередующиеся последовательности).
... так пускай наступает на нас холодным рассветом новый день ...  3.0.83.0.8
09.04.2009 13:06, Kernel3: +1: Грамотный товарищ
1 2 3

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru