nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 19 Apr 2024 16:56



Reply to topic  [ 28 posts ]  Go to page 1, 2  Next
Где проходит граница между RISC и CISC? 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
6502 - он более RISC-оватый как-бы!

Кто знает, насколько в принципе для RISC-процессоров справедлив вот такого типа постулат:
"...все основные операции выполняются преимущественно между регистрами,
загрузка значения из памяти и запись результата в память - операции, выполняемые
через привелегированный регистр...
"?

Там, где я это читал, давалась общая характеристика RISC-процессоров, и отмечалось,
что эти положения со временем стали более размыты.

То есть, если подойти буквально - то в память и из памяти грузим через аккумулятор.
Регистры загружаются из аккумулятора и операции - только между аккумулятором и регистром.

Несколько неприятное ограничение, но, на мой взгляд, весьма упрощает схемотехнику.

_________________
iLavr


29 Apr 2013 06:47
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
Упрощает схемотехнику и хоронит производительность.

В 6502 кстати грузить из памяти можно в любой регистр, что положительно выделяет его перед 8080

LDA, LDX, LDY


29 Apr 2013 09:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
vinxru wrote:
Упрощает схемотехнику и хоронит производительность.
В 6502 кстати грузить из памяти можно в любой регистр, что положительно выделяет его перед 8080

LDA, LDX, LDY

Не соглашусь на повод производительности... если бы это было так однозначно -
давно бы сделали из этого практический вывод.

Что касается 6502, то регистров ОН у него всего-то раз, два и... три... :lol: :o
Что бы их не грузить?

А когда здоровенный файл РОН, что характерно для RISC-архитектуры, то
призадумаешься...

_________________
iLavr


29 Apr 2013 09:50
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
У ARM-а можно данные грузить в любой регистр
ldr рег, смещение

У AVR то же
ld рег, смещение

У x86 то же
mov рег, [смещение]

У PDP 11 то же
mov рег, смещение

А у упомянутого 8080
lda смещение
mov b, a
или
lxi h, смещение
mov b, m


29 Apr 2013 10:11
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
vinxru wrote:
А у упомянутого 8080
lda смещение
mov b, a
или
lxi h, смещение
mov b, m

Ну вот это и реализуется весьма просто аппаратно... об чем я и веду речь.

А упомянутый 8080 делают CISC-ом, собственно, инструкции, работающие
с псевдо-регистром М, как считается.

_________________
iLavr


29 Apr 2013 10:31
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
vinxru wrote:
У ARM-а можно данные грузить в любой регистр
ldr рег, смещение

У AVR то же
ld рег, смещение

У AVR только старшие 16, а младшие 16 нельзя.


29 Apr 2013 19:30
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
16 регистров для приема значений, это не 1. Это больше чем в x86, больше чем в 6502 :) На такое ограничение можно не обращать внимания.


29 Apr 2013 23:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Обсуждение немного в сторону уехало, а я поинтересовался изначально:
Кто знает, насколько в принципе для RISC-процессоров справедлив вот такого типа постулат:
"...все основные операции выполняются преимущественно между регистрами,
загрузка значения из памяти и запись результата в память - операции, выполняемые
через привелегированный регистр...
"?

_________________
iLavr


30 Apr 2013 01:31
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
Я и сказал, что это не совсем так.

"...все основные операции выполняются преимущественно между регистрами, загрузка значения из памяти и запись результата в память - операции, выполняемые через привелегированный регистр..."

Это справедливо только для очень древних процессоров, типа 8080, которые RISC-ом не являются, так как содержат сложные команды на основе микрокода (PUSH, POP, LHLD, SHLD, XTHL...)

Правильнее:

- арифметические операции выполняются преимущественно между регистрами

- загрузка значения из памяти и запись результата в память командами не выполняющими арифметических действий.

- а в остальном максимальная ортогональность команд.


30 Apr 2013 03:49
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
А как же "выполнение команд за нормированное минимальное время (1 такт например)" и "оверлап выполнения команд (сохранение результата команды N-1, выполнение команды N и загрузка команды N+1)"?


30 Apr 2013 05:11
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
ИМХО
- Конвеер сейчас есть во всех процессорах. Даже 286, 1801ВМ2 уже имеют конвеер в 2 команды.
- Любой процессор стремится выполнить команду за минимум тактов и тайминги известны.
- И наоборот, команды умножения в ARM-е работают значительно больше такта. И я подозреваю, что это микрокод.


30 Apr 2013 05:25
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
ИМХО основное отличие лагерей CISC и RISC в идеологии.

RISC. Мы делаем минимум команд, все команды примерно одной длины, работают с одинаковыми регистрами, выполняют простейшие действия. Что бы процессор получился проще, что бы потреблял меньше энергии, что бы проще было жить программистам.

Но на выходе получаем не самую большую производительность и разряженный машинный код.

С этим борются, добавляя чуть чуть микрокода, еще одну (более компактную) систему команд.

CISC. Машинный код - надо максимально сжать. Для этого часто используемые последовательности команд объединить в одну команду. Ага, нужно считать CRC32, пожалуйста, вот вам команда crc32. Сочетания регистров, которые не используются (или есть альтернатива), выкинуть. Надо оставить минимальное кол-во способов сделать что-то. Например lodsb, losw, mul. Команды условного перехода в 99% случаев ограничиваются 128 байтами, значит ограничить смещение. Часто используемые команды должны иметь более короткие опкоды.

В общем CISC - это заархивирвоанный RISC. :) Часто встречающиеся команды в словарь. (Тем более, что внутри современных X86 сидит RISC)

И в итоге мы получаем тысячи команд разной длины, очень толстый микрокод, очень сложную железную оптимизацию.

Всё это работает быстро, но ждет кучу энергии.

В советском процессоре 1801ВМ1 микрокод (этот самый разархиватор) занимал почти половину площади кристалла. Но там перед инженерами стояла лишь одна цель, выполнять программы PDP11. Или расстрел :)) Их можно понять.


30 Apr 2013 06:02
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
vinxru wrote:
В общем CISC - это заархивирвоанный RISC. :)
...
В советском процессоре 1801ВМ1 микрокод (этот самый разархиватор) занимал почти половину площади кристалла.

А мне кажется, что 1801ВМ1 гораздо ближе к RISC, чем к CISC:
- практически все регистры универсальные, даже стек
- методы адресации одинаковые для всех регистров
- система кодирования команд похожа на другие RISC-процессоры

Единственное, что не похоже: каждая команда выполняется за фиг-знает-какое количество тактов. От 8 до 50 и выше!
Видимо, сказывается отсутствие конвеера. Но даже ВМ2 и ВМ3, где он есть, не за один такт команды выполняют. Да и невозможно это с мультиплексируемой шиной адрес/данные.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


30 Apr 2013 06:23
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
А как же название? RISC - Restricted (Reduced) Instruction Set Computer (компьютер с сокращённым набором команд). CISC - Complex Instruction Set Computer (компьютер с комплексным набором команд). Т.е. если команд мало и они "одноклеточные" то это RISC. И наоборот.

Забавно, но есть еще MISC и URISC. И про последний тут уже обсуждалось: процессор с одной командой (частный случай URISC - OISC).


30 Apr 2013 06:25
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
Ну а четыре десятка команд (если не учитывать модификации для работы с байтом) - это Reduced? Сколько команд имеют современные RISC-процесоры?

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


30 Apr 2013 07:04
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 28 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 19 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.