|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Где проходит граница между RISC и CISC?
Author |
Message |
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
По моему немного не так. У ARM-а команды:
mcr 15, 0, r0, cr2, cr0, {0}
add r0, r1, r1, lsl #3
ldr r0, [r1, r2, lsl #2]
голову сломаешь, как будто ты не программу пишешь, а трогаешь руками внутренности процессора.
Одноклеточные команды у X86
mov ax, bx
mul cx
lodsw
stosd
push 12
|
30 Apr 2013 07:25 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
mul далеко не одноклеточная.
|
30 Apr 2013 09:32 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Я слово "одноклеточная" понял как "без аргументов".
|
30 Apr 2013 10:05 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вот это ты в самую точку попал! Но зато это так упрощает схемотехнику!
И я в принципе говорю о самодельном процессоре, хотя Шаос несколько неверно
обозначил тему как RISC vs CISC.
Вот я делал прикидку работы с АЛУ в 4-битном варианте...
Здесь я прикидывал систему команд, как более привычную нам и похожую на 8080.
То есть, для выполнения операции, скажем, сложения это работает так, (в мнемониках 8080):
Так вот, чтобы реализовать все эти ADD, ADC, и т.д. приходится заюзать много кодов операции из 16 возможных и вводить префиксы... И я вот думаю - а если сделать чисто по RISC - принципам? На входы S0-S3 прицепить ещё один регистр - регистр операции - S. Тогда все возможные операции АЛУ выполняются аппаратно типовой операцией записи в регистр. И рассмотренный выше код будет выглядеть как:
_________________ iLavr
|
30 Apr 2013 11:57 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Я делал такой код команды:
2 бита. Аргумент 1 (регистр A, регистр ADDR, регистр DATA, константа)
2 бита. Аргумент 2 (регистр A, регистр ADDR, регистр DATA, регистр IP)
2 бита. Код АЛУ (сложение, NAND, OR, ROR)
2 бита. Результат (регистр A, регистр ADDR, регистр DATA, регистр IP)
2 бита. Условие (без условий, С, NC, Z)
Остальные биты - константа.
Причем, из этих команд можно отобрать нужные и записать в ПЗУ. Тогда код команды сократится.
И команда выполняется за два такта. Первый такт собственно сама команда, второй такт вычисляется IP = IP + 1.
Только если в первом такте был изменен IP, второй такт не выполняется
А если условие не соответствует флагам, не выполняется первый такт.
|
30 Apr 2013 12:07 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
У меня обращение в память не вырисовывается за одинаковое число тактов со всеми командами...
Для этого нужен один здоровый 12-битный регистр...
А с ним приходиться общаться через 4-битную внутреннюю магистраль.
Поэтому я и предложил Шаосу архитектуру 16х16 или 32х32.
Когда размер регистра и размер шины адреса совпадают, то RISC архитектуру
сделать довольно просто.
PS. Это, кстати, и есть, на мой взгляд, причина того, что 4-битники все делают в основном на 256 байт памяти.
_________________ iLavr
Last edited by Lavr on 30 Apr 2013 13:43, edited 1 time in total.
|
30 Apr 2013 12:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22703 Location: Silicon Valley
|
|
30 Apr 2013 12:29 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В оригинале фраза, на которую я ссылаюсь, звучала вот в таком контексте:
| | | | Quote: Главными требованиями архитектуры RISC являются: 1. Любая операция должна выполняться за один такт. 2. Система команд должна содержать минимальное количество наиболее часто используемых команд одинаковой длины. 3. Операции обработки данных реализуются только в формате регистр-регистр. Обмен между регистрами и памятью выполняется только командами загрузки-записи. В дальнейшем эти требования были несколько смягчены. Выполнение команды за один такт стало трактоваться, как загрузка конвейера команд в темпе "команда за такт". Набор команд современных RISC-процессоров возрос. Незыблемым для архитектуры RISC остается только требование: обработка данных ведется только командами в формате регистр-регистр. Среди других особенностей RISC архитектур следует отметить: - наличие достаточно большого файла РОН–ов (32 и более регистров), - для обработки используются трехадресные регистровые команды, - команды регистр/память используются только для загрузки (Ld) РОН из памяти и сохранения (ST) содержимого РОН в памяти, - как следствие упрощения команд, использование аппаратной, а не микропрограммной логики выполнения команд. ... Позднее было отмечено, что наиболее значимая характеристика RISC в разделении инструкций для обработки данных и обращения к памяти — обращение к памяти идёт только через инструкции load и store, а все прочие инструкции ограничены внутренними регистрами. Это упростило архитектуру процессоров: позволило инструкциям иметь фиксированную длину, упростило конвейеры и изолировало логику, имеющую дело с задержками при доступе к памяти, только в двух инструкциях. В результате RISC-архитектуры стали называть также архитектурами load/store. | | | | |
_________________ iLavr
|
30 Apr 2013 16:17 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Сейчас у X86 процессоров (их 64-битных потомков) то же куча регистров
RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15
и они почти равнозначны (почти POH). Кстати они 64 бита, т.е. их объем в байтах такой же как у ARM
И трехадресные команды то же проскакивают.
IMUL EAX, EBX, 10 ; EAX = EBX*10
LEA EAX, [EBX+ECX*8] ; EAX = EBX+ECX*8
|
30 Apr 2013 18:05 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
под "одноклеточностью" я подразумевал их элементарность. Т.е. пересылка из регистр в регистр - одноклеточная. Сложение 2 регистров, разрядность которых совпадает с разрядностью АЛУ - тоже. А вот относительный переход, который требует вычисления адреса уже нет. Ну а у умножения там вообще целая вереница микрокода.
|
30 Apr 2013 21:43 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Относительный переход, это же сложение IP с константой. Если IP совпадает с разрядностью АЛУ, то тоже должно быть просто.
|
01 May 2013 03:14 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Я тут подумал, что Pentium 4 1.4 ГГц с конвеером длиной 20 стадий, выполняет одиночную команду со скоростью 70 Мгц. То есть время от загрузки из памяти до выполнения.
|
01 May 2013 04:10 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22703 Location: Silicon Valley
|
|
01 May 2013 08:17 |
|
|
Who is online |
Users browsing this forum: No registered users and 4 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
|
|