ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
26375 Топик полностью
Ксения (17.04.2005 00:59, просмотров: 1) ответил anonimus на Ксения, что ж Вы-то не присоединились ко всем, кто тут меня атакует? :-))
CISC vs RISC CISC vs RISC Если присмотреться к RISC-архитектуре хотя бы на примере ATMEL AVR, то можно заметить за один такт любую команду выполнить не удается. Обращения к подпрограммам и выходы из них требуют два такта вместо одного. И это понятно почему - все операции с памятью по определению будут работать дольше, чем чисто регистровые. Есть еще ряд команд, которые реализовать на один такт не удается, поскольку они очевидно более "трудоемкие". А значит сама идея измельчить инструкции до "простых" операций является в чем-то порочной. И порок этот заключается в том, что образуется "прокрустово ложе": либо придется непроизводительно растягивать время быстрых операций, либо смириться с тем операции бывают более быстрые и более медленные. Если смириться с неизбежным, то у RISC-архитектуры остается только одно "преимущество" - одинаковая длина всех команд. Но полноте! Преимущество ли это? Конечно перескок вперед считать легче. Но кому? Компилятору! А значит прок от этого очень небольшой - только в реализации "перескоков через следующего" вместо обычных "прыжков знаю куда". На практике же, более емкие команды ассемблера, которые имеются в CISC-архитектуре, куда УДОБНЕЕ для программирования. Особенно на ассемблере (что немаловажно при работе с МК). В самом деле, программа работает в основном с памятью и отсутствие в инструкциях процессора таких операций, как "положить число в память" и отсутствие возможности использовать хранящихся в памяти операнды в арифметических операциях, делает использование RISC-архитектуры неудобной. Даже если это делает компилятор языка высокого уровня, то и в этом случае имеются существенные недостатки - избыточный расход памяти и тягомотный код, в котором все равно приходится разбираться, когда работаешь с отладчиком в режиме трассировки. Остается только последний аргумент в пользу RISC-архитектуры - ее якобы большее быстродействие. Это преимущество действительно имеет место, если считать скорость на команды, но становится сомнительным, если считать на ту работу, которую от процессора ждут. Возьмем для примера такую тривиальную вещь, к прибавление числа (константы) у числу, лежащему в памяти. RISC-архитектура: LDI регистр базы, адрес памяти LD регистр1, регистр базы MOV регистр2, константа ADD регистр1, регистр2 ST регистр базы, регистр1 CISC-архитектура: MOV [адрес памяти], константа Даже если единственная CISC-команда окажется в 5 раз медленнее, чем RISC-команда, то все равно одна удобнее уже только тем, что понятнее и короче.