Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Кто знает, насколько в принципе для RISC-процессоров справедлив вот такого типа постулат:
" ...все основные операции выполняются преимущественно между регистрами, загрузка значения из памяти и запись результата в память - операции, выполняемые через привелегированный регистр..."?
Там, где я это читал, давалась общая характеристика RISC-процессоров, и отмечалось,
что эти положения со временем стали более размыты.
То есть, если подойти буквально - то в память и из памяти грузим через аккумулятор.
Регистры загружаются из аккумулятора и операции - только между аккумулятором и регистром.
Несколько неприятное ограничение, но, на мой взгляд, весьма упрощает схемотехнику.
_________________ iLavr
|
29 Apr 2013 06:47 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Упрощает схемотехнику и хоронит производительность.
В 6502 кстати грузить из памяти можно в любой регистр, что положительно выделяет его перед 8080
LDA, LDX, LDY
|
29 Apr 2013 09:38 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Не соглашусь на повод производительности... если бы это было так однозначно -
давно бы сделали из этого практический вывод.
Что касается 6502, то регистров ОН у него всего-то раз, два и... три...
Что бы их не грузить?
А когда здоровенный файл РОН, что характерно для RISC-архитектуры, то
призадумаешься...
_________________ iLavr
|
29 Apr 2013 09:50 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
У ARM-а можно данные грузить в любой регистр
ldr рег, смещение
У AVR то же
ld рег, смещение
У x86 то же
mov рег, [смещение]
У PDP 11 то же
mov рег, смещение
А у упомянутого 8080
lda смещение
mov b, a
или
lxi h, смещение
mov b, m
|
29 Apr 2013 10:11 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну вот это и реализуется весьма просто аппаратно... об чем я и веду речь.
А упомянутый 8080 делают CISC-ом, собственно, инструкции, работающие
с псевдо-регистром М, как считается.
_________________ iLavr
|
29 Apr 2013 10:31 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
У AVR только старшие 16, а младшие 16 нельзя.
|
29 Apr 2013 19:30 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
16 регистров для приема значений, это не 1. Это больше чем в x86, больше чем в 6502 На такое ограничение можно не обращать внимания.
|
29 Apr 2013 23:44 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Обсуждение немного в сторону уехало, а я поинтересовался изначально:
Кто знает, насколько в принципе для RISC-процессоров справедлив вот такого типа постулат:
"...все основные операции выполняются преимущественно между регистрами, загрузка значения из памяти и запись результата в память - операции, выполняемые через привелегированный регистр..."?
_________________ iLavr
|
30 Apr 2013 01:31 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Я и сказал, что это не совсем так.
"...все основные операции выполняются преимущественно между регистрами, загрузка значения из памяти и запись результата в память - операции, выполняемые через привелегированный регистр..."
Это справедливо только для очень древних процессоров, типа 8080, которые RISC-ом не являются, так как содержат сложные команды на основе микрокода (PUSH, POP, LHLD, SHLD, XTHL...)
Правильнее:
- арифметические операции выполняются преимущественно между регистрами
- загрузка значения из памяти и запись результата в память командами не выполняющими арифметических действий.
- а в остальном максимальная ортогональность команд.
|
30 Apr 2013 03:49 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
А как же "выполнение команд за нормированное минимальное время (1 такт например)" и "оверлап выполнения команд (сохранение результата команды N-1, выполнение команды N и загрузка команды N+1)"?
|
30 Apr 2013 05:11 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
ИМХО
- Конвеер сейчас есть во всех процессорах. Даже 286, 1801ВМ2 уже имеют конвеер в 2 команды.
- Любой процессор стремится выполнить команду за минимум тактов и тайминги известны.
- И наоборот, команды умножения в ARM-е работают значительно больше такта. И я подозреваю, что это микрокод.
|
30 Apr 2013 05:25 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
ИМХО основное отличие лагерей CISC и RISC в идеологии.
RISC. Мы делаем минимум команд, все команды примерно одной длины, работают с одинаковыми регистрами, выполняют простейшие действия. Что бы процессор получился проще, что бы потреблял меньше энергии, что бы проще было жить программистам.
Но на выходе получаем не самую большую производительность и разряженный машинный код.
С этим борются, добавляя чуть чуть микрокода, еще одну (более компактную) систему команд.
CISC. Машинный код - надо максимально сжать. Для этого часто используемые последовательности команд объединить в одну команду. Ага, нужно считать CRC32, пожалуйста, вот вам команда crc32. Сочетания регистров, которые не используются (или есть альтернатива), выкинуть. Надо оставить минимальное кол-во способов сделать что-то. Например lodsb, losw, mul. Команды условного перехода в 99% случаев ограничиваются 128 байтами, значит ограничить смещение. Часто используемые команды должны иметь более короткие опкоды.
В общем CISC - это заархивирвоанный RISC. Часто встречающиеся команды в словарь. (Тем более, что внутри современных X86 сидит RISC)
И в итоге мы получаем тысячи команд разной длины, очень толстый микрокод, очень сложную железную оптимизацию.
Всё это работает быстро, но ждет кучу энергии.
В советском процессоре 1801ВМ1 микрокод (этот самый разархиватор) занимал почти половину площади кристалла. Но там перед инженерами стояла лишь одна цель, выполнять программы PDP11. Или расстрел ) Их можно понять.
|
30 Apr 2013 06:02 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 859
|
А мне кажется, что 1801ВМ1 гораздо ближе к RISC, чем к CISC:
- практически все регистры универсальные, даже стек
- методы адресации одинаковые для всех регистров
- система кодирования команд похожа на другие RISC-процессоры
Единственное, что не похоже: каждая команда выполняется за фиг-знает-какое количество тактов. От 8 до 50 и выше!
Видимо, сказывается отсутствие конвеера. Но даже ВМ2 и ВМ3, где он есть, не за один такт команды выполняют. Да и невозможно это с мультиплексируемой шиной адрес/данные.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
30 Apr 2013 06:23 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
А как же название? RISC - Restricted (Reduced) Instruction Set Computer (компьютер с сокращённым набором команд). CISC - Complex Instruction Set Computer (компьютер с комплексным набором команд). Т.е. если команд мало и они "одноклеточные" то это RISC. И наоборот.
Забавно, но есть еще MISC и URISC. И про последний тут уже обсуждалось: процессор с одной командой (частный случай URISC - OISC).
|
30 Apr 2013 06:25 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 859
|
Ну а четыре десятка команд (если не учитывать модификации для работы с байтом) - это Reduced? Сколько команд имеют современные RISC-процесоры?
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
30 Apr 2013 07:04 |
|
|