|
производительность 8051 котроллеров |
|
|
|
 |
Ответов
|
Apr 6 2006, 02:56
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(vladec @ Apr 3 2006, 08:17)  Ошибочное мнение что при одинековом быстродействии RISC архитектура дает большую производительность чем CISC архитектура (как у 51), все с точностью до наоборот. Просто RISC архитектура позволяет получить большее быстродействие легче и с меньшими аппаратными затратами. Ну во первых, C51 это чистый RICS, можно даже сказать эталон RISC процессора. Во вторых RISC архитектура максимально эффективно приспособлена для работы в режиме прерываний и переключения задач. В третьих быстродействие и производительность это синонимы. Если Вы имели в виду сравнение производительности на одинаковых тактовых частотах, то здесь взависимости от задач в равной степени может победить и RISC и CISC. Если в системе часто происходят прерывания, то победит RISC, а CISC в свою очередь может попасть в ступор и тратить все свое время лишь на переключение между задачами. Мало прерываний - однозначно победит CISC. Ну и последнее RISC архитектура позволяет максимально разогнать тактовую частоту, поскольку команды короткие и исполнительная логика соответственно простая. Быстродействие же получается не всегда за счет тактовой частоты. Мое мнение таково: По сабжу - C51 даже Cygnal на своих 100Mhz с 50MIPS по производительности один из аутсайдеров, и на задачах 32х битной целочисленной арифметики отстанет от 8-ми разрядной AVRки @16Mhz с актуальными ~10MIPS раз эдак в 10.
|
|
|
|
|
Apr 6 2006, 03:01
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(defunct @ Apr 6 2006, 08:56)  Цитата(vladec @ Apr 3 2006, 08:17)  Ошибочное мнение что при одинековом быстродействии RISC архитектура дает большую производительность чем CISC архитектура (как у 51), все с точностью до наоборот. Просто RISC архитектура позволяет получить большее быстродействие легче и с меньшими аппаратными затратами.
Ну во первых, C51 это чистый RICS, можно даже сказать эталон RISC процессора. Ну уж батенька, что-то вы не то тут сказанули, или описались.
--------------------
Пасу котов...
|
|
|
|
|
Apr 6 2006, 03:10
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Andy Mozzhevilov @ Apr 6 2006, 05:01)  Ну уж батенька, что-то вы не то тут сказанули, или описались. Я писал эмулятор оного и архитектуру его знаю прекрасно. Но, конечно же, если Вы меня сможете переубедить ссылкой на документ от Intel'а где сказано, что C51 это CISC, тогда я заберу свои слова обратно. Цитата Приводится пиковая производительность различных 8-разрядных микроконтроллеров: С8051F120-123 up to 100MIPS C8051F124-127 50 Other SiLabs 25 ATmega128 16 M77C32 10 DS80C310 8,25 MCS1210 8,25 T89C51RB2 6,67 MIPSы разные бывают. К примеру 16 битное сложение: A(R1:R0) = A(R1:R0)+B(R2:R3) C51: XCH A, R0 ADD A, R2 XCH A, R0 XCH A, R1 ADDC A, R3 XCH A, R1 AVR: ADD R0, R2 ADC R1, R3 Простейшее сложение и то первый тратит 6 инструкций, второй всего две. При работе с 32-х битными данными разница еще более существенная. И выливаются те 100MIPS в реальных (полезных) 5MIPS.
|
|
|
|
|
Apr 6 2006, 04:10
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(defunct @ Apr 6 2006, 09:10)  Цитата(Andy Mozzhevilov @ Apr 6 2006, 05:01)  Ну уж батенька, что-то вы не то тут сказанули, или описались.
Я писал эмулятор оного и архитектуру его знаю прекрасно. Ну какой же это RISС. Длина команд может быть 1 2 или 3 байта. Работа напрямую с внутренней памятью, когда для RISC характерна load-store архитектура и работа с данными через регистровый файл. Тот же AVR для достижения своей RISС-овости имеет 16-битную длину команды, чтобы эффективно паковать в нее инструкции. Вот выдержка с сайта интела по отличительным признакам CISC-RISK: A different line, derived from CISC, is represented by the RISC (Reduced Instruction Set Computing) processors introduced in the 1980s, which are characterized mostly by how they differ from CISC processors. The instructions are of fixed length, and of a regular format. Operations are performed on registers only, of which a larger number are available than on CISC processors. The only memory operations are load and store. The hardware in RISC processors is simpler in principle than in CISC ones, because a RISC architecture relies more on the compiler for sequencing complex operations. Цитата Но, конечно же, если Вы меня сможете переубедить ссылкой на документ от Intel'а где сказано, что C51 это CISC, тогда я заберу свои слова обратно. Неплохо бы также увидеть ссылку на документ интела, где сказано, что x51 это RISC.
--------------------
Пасу котов...
|
|
|
|
|
Apr 6 2006, 05:50
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Andy Mozzhevilov @ Apr 6 2006, 11:10)  Цитата(defunct @ Apr 6 2006, 09:10)  Цитата(Andy Mozzhevilov @ Apr 6 2006, 05:01)  Ну уж батенька, что-то вы не то тут сказанули, или описались.
Я писал эмулятор оного и архитектуру его знаю прекрасно. Ну какой же это RISС. Длина команд может быть 1 2 или 3 байта. Работа напрямую с внутренней памятью, когда для RISC характерна load-store архитектура и работа с данными через регистровый файл. Тот же AVR для достижения своей RISС-овости имеет 16-битную длину команды, чтобы эффективно паковать в нее инструкции. Вот выдержка с сайта интела по отличительным признакам CISC-RISK: A different line, derived from CISC, is represented by the RISC (Reduced Instruction Set Computing) processors introduced in the 1980s, which are characterized mostly by how they differ from CISC processors. The instructions are of fixed length, and of a regular format. Operations are performed on registers only, of which a larger number are available than on CISC processors. The only memory operations are load and store. The hardware in RISC processors is simpler in principle than in CISC ones, because a RISC architecture relies more on the compiler for sequencing complex operations. Вообще-то, тут спор из серии является ли тот или иной чип МК или DSP. Вон MSP430, про него явно указано фирмой производителем, что он RISC, 27 инструкций (в комбинациях способов адресации, ессно, их больше получается). Тем не менее операции регистр-память (и даже память-память - копирование) и разная длина инструкций присутствуют в полный рост. Правда, разная длина инструкций там отчасти обусловлена тем, что в опкоде могут храниться длинные литералы (полные адреса), сам опкод имеет структуру регулярную. Насколько мне всегда было известно, 51-й - это CISC.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 6 2006, 06:45
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата Andy Mozzhevilov @ Apr 6 2006, 11:10) Ну какой же это RISС. Длина команд может быть 1 2 или 3 байта. Работа напрямую с внутренней памятью, когда для RISC характерна load-store архитектура и работа с данными через регистровый файл. Тот же AVR для достижения своей RISС-овости имеет 16-битную длину команды, чтобы эффективно паковать в нее инструкции. Обычный RISC. Тут дело не в длине команды. load/store и работа с памятью напрямую - это одно и тоже. Чтение-модификация-запись - немного другое, но оно и не важно. если уж идти по такому пути SRAM в C51 можно считать большим регистровым файлом, а с внешней памятью он работает с помощью load/store. Все команды (кроме mul/div) выполняются не дольше 2х машинных циклов. CISCом его может сделать не длина команды в 3 байта и даже не трехоперандовая команда cjne (у AVR кстати есть команды длиной 4 байта), а всего лишь две команды mul ab и div ab которые выполняются "микропрограммным" путем. Если принебреч этими двумя командами или сделать их аппаратно, что в новых вариантах ядра C51 уже сделано, то чип становится классическим представителем RISC. Регистровые банки, быстрый переход на обработчик прерывания, небольшой (всего 111 меньше чем у AVR) набор команд. если идти по пути подсчета байт в команде, то AVR явно бъет C51 своими 4х байтными командами. Цитата(dxp @ Apr 6 2006, 07:50)  Вообще-то, тут спор из серии является ли тот или иной чип МК или DSP. Вон MSP430, про него явно указано фирмой производителем, что он RISC, 27 инструкций (в комбинациях способов адресации, ессно, их больше получается). Тем не менее операции регистр-память (и даже память-память - копирование) и разная длина инструкций присутствуют в полный рост. Правда, разная длина инструкций там отчасти обусловлена тем, что в опкоде могут храниться длинные литералы (полные адреса), сам опкод имеет структуру регулярную. Насколько мне всегда было известно, 51-й - это CISC. Спор действительно как раз из той серии. И не было бы никаких проблем если бы Intel классифицировал свой чип сам.
|
|
|
|
|
Apr 6 2006, 11:23
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(defunct @ Apr 6 2006, 16:15)  Цитата Andy Mozzhevilov @ Apr 6 2006, 11:10) Ну какой же это RISС. Длина команд может быть 1 2 или 3 байта. Работа напрямую с внутренней памятью, когда для RISC характерна load-store архитектура и работа с данными через регистровый файл. Тот же AVR для достижения своей RISС-овости имеет 16-битную длину команды, чтобы эффективно паковать в нее инструкции. Обычный RISC. Тут дело не в длине команды. load/store и работа с памятью напрямую - это одно и тоже. Не могу согласиться. Архитектура 51-го никаким боком не подходит под RISC. Даже Мелкочип свои PIC-и осторожно называл RISC-like. Вот не самое плохое определение RISC: (Reduced Instruction Set Computer) A computer architecture that reduces chip complexity by using simpler instructions. RISC compilers have to generate software routines to perform complex instructions that were previously done in hardware by CISC computers. In RISC, the microcode layer and associated overhead is eliminated. RISC keeps instruction size constant, bans the indirect addressing mode and retains only those instructions that can be overlapped and made to execute in one machine cycle or less. The RISC chip is faster than its CISC counterpart and is designed and built more economically. Проверяем 51-й: -- Проще набор инструкций. Соглашаться или нет - дело вкуса, однако по здравому размышлению я бы соглашаться не стал. Инструкций в 51-м много, и они сильно разномастные, неструктурированные. Просто из "большого набора" возможных CISC-инструкций выбраны те, которые наиболее употребительны в embedded-приложениях, чтобы общее количество не превышало 256 (один байт кода команд). Что явно не RISC. Про AJMP размусоливать не буду, на мой взгляд, это явный ляп разработчиков, ненужная по жизни команда, которая зазря съедает множество кодов. Здесь я бы добавил такой характерный признак: из набора RISC команд выброшены те, которые удобны для программирования на ассемблере, но неудобны при написании компиляторов ЯВУ. При таком уточнении 51-й - совершенно точно не RISC, его система команд явно создавалась с заботой об ассеблерщиках. Для настоящего RISC-а писать программы на ассемблере должно быть мучением и мазохизмом. В идеале - брэйнфак с одной командой.  Для 51-го это условие не выполняется, для него вполне приятно на ассемблере писать. -- Отсутствует микрокодирование команд. Насколько мне известно, в оригинальном 51-м оно имело место быть. По крайней мере, когда я пытался заказать в МЭП-е советский клон i8044 (это 51-й с SDLC), разработчики сразу же сказали что будут делать с микрокодом, да еще хотели растактовку сделать не на 12 клоков, а на 16 -- Постоянный размер команд. В 51-м этот наиболее характерный признак RISC отсутствует, размер команд переменный. -- Нет косвенной адресации. На мой взгляд, не самый важный признак, но все же: в 51-м она есть, однако... -- В определении об этом забыли, но вообще-то RISC должен любую команду выполнять за 1 такт, что неверно для 51-го. Имхо, поэтому PIC и не называли настоящим RISC-ом, хотя по другим признакам он подходит. Еще у старых PIC-ов система команд тоже оптимизировалась для ассемблерного написания программ, а не для ЯВУ.
|
|
|
|
|
Apr 7 2006, 00:07
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=AK= @ Apr 6 2006, 13:23)  Проверяем 51-й: Хорошо, давайте проверим. Заодно чтобы проверять было легче, возьмем для сравнения AVR ибо RISC. Цитата -- Проще набор инструкций. Соглашаться или нет - дело вкуса Набор инструкций C51 проще чем AVR, AVR - RISC, следовательно C51 этому параметру удовлетворяет. Цитата -- Отсутствует микрокодирование команд. Насколько мне известно, в оригинальном 51-м оно имело место быть. По крайней мере, когда я пытался заказать в МЭП-е советский клон i8044 (это 51-й с SDLC), разработчики сразу же сказали что будут делать с микрокодом, да еще хотели растактовку сделать не на 12 клоков, а на 16  Про выполненение команд микропрограммно, я уже отмечал. Да в оригинальном C51 есть микропрограммыный блок управления, но он обусловлен лишь несовершенством технологий на то время. Наличие усовершенствованных однотактовых ядер C51 говорит о том, что сегодня система команд C51 - удовлетворяет параметрам RISC. А если из оригинала убрать div/mul то и оригинальный C51 процессор удовлетворяет этому параметру. Неужели только из-за пары команд стоит переводить процессор в класс CISC процессоров, которые совсем не предназначены для решения задач, которые решают МК. Битовый CISC процессор звучит по крайней мере глупо. Цитата -- Постоянный размер команд. В 51-м этот наиболее характерный признак RISC отсутствует, размер команд переменный. Размер команды практически постоянный 1/2 байт. 3 байта относится только к тем командам где работа производится с 16-битным адресом или 16-битными данными. Исключение, такое же как и в других RISC процессорах, где исп. команды дальнего (far) вызова и перехода. Цитата -- Нет косвенной адресации. На мой взгляд, не самый важный признак, но все же: в 51-м она есть, однако... В AVR есть косвенная адресация, и даже косвенный вызов, более того есть даже косвенная адресация со смещением, если следовать этому правилу, то AVR - не RISC, а все знают что он RISC, следовательно по аналогии C51 удовлетворяет и этому параметру. Цитата -- В определении об этом забыли, но вообще-то RISC должен любую команду выполнять за 1 такт, что неверно для 51-го. Имхо, поэтому PIC и не называли настоящим RISC-ом, хотя по другим признакам он подходит. Еще у старых PIC-ов система команд тоже оптимизировалась для ассемблерного написания программ, а не для ЯВУ. Неправда! В определении RISCа нет ограничений в 1 такт, есть ограничение в 1-2 цикла. У PIC'а цикл исполнения команды - 4 такта, у C51 - 12, невелика разница. А насчет якобы оптимизации системы команд PIC'a для якобы "удобства написания программ на ассемблере" я могу сказать лишь: PIC ассемблер - наиболее "козий" и неудобный в использовании из всех с которыми мне доводилось работать. Мое мнение таково - практически любой 8 битный MK это RISC, как минимум по двум причинам - 1. система команд (как даже вы заметили для C51) сокращена напомню ваши слова: Цитата Просто из "большого набора" возможных CISC-инструкций выбраны те, которые наиболее употребительны в embedded-приложениях Когда что-то оставляют, а все остальное выбрасывают - это называется сокращение "reduction" не так ли? Так вот для C51 из CISC навыбрасывали столько всего, что от CISC осталось меньше инструкций, чем напихано в современных RISC процессорах. Да и ставить C51 в одну шеренгу с современными CISC - P4/AMD64 просто смешно. 2. быстрая реакция на прерывания (основная особенность характерная для всех RISC процессоров). Про регистровые банки, которые способствуют быстрому пререключению задач характерной для RISC вы в своем сравнении почему-то забыли. А ведь по этому параметру C51 гораздо ближе к RISC чем тот же AVR. Еще разок повторюсь: хотите считать C51 CISCом вопреки здравому смыслу - Аминь.
|
|
|
|
|
Apr 7 2006, 09:10
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(defunct @ Apr 7 2006, 09:37)  Набор инструкций C51 проще чем AVR, AVR - RISC, следовательно C51 этому параметру удовлетворяет. В качестве контраргумента: набор команд PIC намного проще и меньше, чем у 51-го, и все равно микрочип называет его "недо-RISC". Если следовать Вашей логике, это дает основания называть 51-й "недо-недо-RISC", или, что короче, "не-RISC". Однако спорить на таком уровне аргументации я могу разве что для смеха. Я уже указывал, что, с моей точки зрения, для RISC-а важной являеется цель, ради которой его система команд "уменьшена", а не само по себе количество команд. И для RISC цель эта одна: переложить заботы "микропрограммирования" сложных команд на компилятор ЯВУ. У 51-го же набор команд оптимизировался совсем не для этого. Еще пример, процессор Ignite фирмы PTSC. У него код команд вообще 6-битный (или даже 5-битный, запамятовал). И что, кто-нибудь называет его RISC-ом? Ни в коем случае, под определение RISC он не подходит, цели преследовались другие. Этот процессор относится к классу MISC - "компьютер с минимальным набором команд", но никак не RISC. Цель, поставленная при проектировании, а также совокупность использованных приемов, вот что главное. Приколотил, скажем, Лютер к двери церкви свои 10 (или сколько там) тезисов, каждый сам по себе возражений ни у кого не вызовет, так что - на этом основании всех надо записать лютеранами? Цитата(defunct @ Apr 7 2006, 09:37)  Мое мнение таково - практически любой 8 битный MK это RISC, как минимум по двум причинам - 1. система команд (как даже вы заметили для C51) сокращена Название RISC, к сожалению, выбрано неудачно. Оно производит ложное впечатление, что в сокращении набора команд и состоит сущность RISC, что стоит чуть уменьшить число команд - и проц можно записывать в RISC-и. Отсюда и рождаются подобные высказывания. Но это неверно. Цитата(defunct @ Apr 7 2006, 09:37)  2. быстрая реакция на прерывания (основная особенность характерная для всех RISC процессоров). Ну никаким боком это к RISC-ам не относится, совершенно ортогональное свойство. Cтоит заметить, что RISC-и вообще говоря как раз медленно реагируют на прерывания, поскольку должны сохранять в стеке свои здоровенные регистровые файлы, а потом восстанавливать их. Лучше всего на прерывания реагируют стековые процессоры определенного вида, т.к. им для сохранения-восстановления контекста вообще ничего делать не надо. Цитата(defunct @ Apr 7 2006, 09:37)  Про регистровые банки, которые способствуют быстрому пререключению задач характерной для RISC вы в своем сравнении почему-то забыли. А ведь по этому параметру C51 гораздо ближе к RISC чем тот же AVR. Потому что банки эти - вовсе не прерогатива RISC-ов, а как раз-таки наоборот, вовсю использовались именно в CISC-ах, в том числе в таком типичном CISC-е как 51-й
|
|
|
|
|
Apr 7 2006, 23:39
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=AK= @ Apr 7 2006, 12:10)  По поводу вышесказанно спорить просто не хочу т.к. бесполезно. А вот насчет последнего утверждения позвольте в корне несогласиться. Цитата Цитата(defunct @ Apr 7 2006, 09:37)  2. быстрая реакция на прерывания (основная особенность характерная для всех RISC процессоров).
Ну никаким боком это к RISC-ам не относится, совершенно ортогональное свойство. Cтоит заметить, что RISC-и вообще говоря как раз медленно реагируют на прерывания, поскольку должны сохранять в стеке свои здоровенные регистровые файлы, а потом восстанавливать их. Лучше всего на прерывания реагируют стековые процессоры определенного вида, т.к. им для сохранения-восстановления контекста вообще ничего делать не надо. Во первых, напомню, что любой процессор первым делом при запросе на прерывание, дожидается завершения выполения текущей команды. У CISC команды могуть быть и 12-ти и 20-ти и более байтовыми, соответсвенно колоcсальные временнЫе затраты уходят не только на их испольнение, но и на выборку. Следовательно как минимум в этой фазе CISC уступает RISCу по скорости реакции на IRQ. Во вторых, процессор (RISC), имеющий в своем распоряжении много регистров, может вообще ничего не сохранять в стеке (кроме адреса возврата), т.к. регистров предостаточно, и каждая задача может использовать исключительно свой набор регистров. Если компиляторы не используют эту возможность, значит они гнилые. Цитата Цитата(defunct @ Apr 7 2006, 09:37)  Про регистровые банки, которые способствуют быстрому пререключению задач характерной для RISC вы в своем сравнении почему-то забыли. А ведь по этому параметру C51 гораздо ближе к RISC чем тот же AVR.
Потому что банки эти - вовсе не прерогатива RISC-ов, а как раз-таки наоборот, вовсю использовались именно в CISC-ах, в том числе в таком типичном CISC-е как 51-й  Извините, но "не смешите тапочки" ;>
|
|
|
|
|
Apr 8 2006, 01:48
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(defunct @ Apr 8 2006, 09:09)  Во первых, напомню, что любой процессор первым делом при запросе на прерывание, дожидается завершения выполения текущей команды. У CISC команды могуть быть и 12-ти и 20-ти и более байтовыми, соответсвенно колоcсальные временнЫе затраты уходят не только на их испольнение, но и на выборку. Следовательно как минимум в этой фазе CISC уступает RISCу по скорости реакции на IRQ. Неубедительно. CISC не обязан иметь длинные команды в системе команд. Некоторые CISC-и имеют такие команды, другие - нет. CISC, выполняющий любые команды за 1 такт, не станет от этого RISC-ом. Цитата(defunct @ Apr 8 2006, 09:09)  Во вторых, процессор (RISC), имеющий в своем распоряжении много регистров, может вообще ничего не сохранять в стеке (кроме адреса возврата), т.к. регистров предостаточно, и каждая задача может использовать исключительно свой набор регистров. Если компиляторы не используют эту возможность, значит они гнилые. Это не решение. Оно годится только для очень простых приложений, где количество задач у уровней вложения прерывания ограничено каким-то смешным минимумом, обязательно статическим. Для динамически создаваемых задач этот довод вообще не в кассу. В общем случае решение есть только одно - сливать регистры в стек. И здесь RISC-и ковыляют далеко позади многих других.
|
|
|
|
|
Apr 8 2006, 08:47
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=AK= @ Apr 8 2006, 04:48)  Цитата(defunct @ Apr 8 2006, 09:09)  Во первых, напомню, что любой процессор первым делом при запросе на прерывание, дожидается завершения выполения текущей команды. У CISC команды могуть быть и 12-ти и 20-ти и более байтовыми, соответсвенно колоcсальные временнЫе затраты уходят не только на их испольнение, но и на выборку. Следовательно как минимум в этой фазе CISC уступает RISCу по скорости реакции на IRQ.
Неубедительно. CISC не обязан иметь длинные команды в системе команд. Некоторые CISC-и имеют такие команды, другие - нет. CISC, выполняющий любые команды за 1 такт, не станет от этого RISC-ом. CISC не может выполнять команды быстрее RISC'a, т.к. команды сложные. Если же он выполняет команды за 1 такт, то это значит, что как минимум у него есть конвеер, который при обработке запроса на прерывание придется сбросить. Цитата Цитата(defunct @ Apr 8 2006, 09:09)  Во вторых, процессор (RISC), имеющий в своем распоряжении много регистров, может вообще ничего не сохранять в стеке (кроме адреса возврата), т.к. регистров предостаточно, и каждая задача может использовать исключительно свой набор регистров. Если компиляторы не используют эту возможность, значит они гнилые.
Это не решение. Оно годится только для очень простых приложений, где количество задач у уровней вложения прерывания ограничено каким-то смешным минимумом, обязательно статическим. Для динамически создаваемых задач этот довод вообще не в кассу. В общем случае решение есть только одно - сливать регистры в стек. И здесь RISC-и ковыляют далеко позади многих других. Тут без коментариев.
|
|
|
|
|
Apr 8 2006, 10:41
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(defunct @ Apr 8 2006, 18:17)  CISC не может выполнять команды быстрее RISC'a, т.к. команды сложные, Сложные команды нельзя выполнять за один такт? Обоснование не представите? За один такт можно выполнять сколь угодно сложные команды, это не вопрос. Вопрос состоит только и исключительно в том, что неэкономно тратить железо на то, чтобы воплотить все сложные команды за один такт. Поскольку в средней программе они встречаются относительно редко, а кремния требуют относительно много. Экономнее выполнить их за несколько тактов (что часто делается в CISC, а также в некоторых недо-RISC-ах), или вообще их не иметь в системе команд (что характерно не только для RISC, но и для таких "экономических" CISC-ов, как, например, 51-й) . Цитата(defunct @ Apr 8 2006, 18:17)  если же он выполняет команды за 1 такт, то это значит, что как минимум у него есть конвеер, который при обработке запроса на прерывание придется сбросить. Конвеер равно фиолетово относится как к CISC-ам, так и к RISC-ам. То есть, и там и там он может быть или не быть. В RISC-ах конвеер встречается чаще. Неплохая статья: http://arstechnica.com/cpu/4q99/risc-cisc/rvc-1.html 1. RISC was not a specific technology as much as it was a design strategy that developed in reaction to a particular school of thought in computer design. It was a rebellion against prevailing norms--norms that no longer prevail in today's world. 2. "CISC" was invented retroactively as a catch-all term for the type of thinking against which RISC was a reaction. 3. We now live in a "post-RISC" world, where the terms RISC and CISC have lost their relevance (except to marketing departments and platform advocates). In a post-RISC world, each architecture and implementation must be judged on its own merits, and not in terms of a narrow, bipolar, compartmentalized worldview that tries to cram all designs into one of two "camps."
|
|
|
|
|
Apr 8 2006, 13:46
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(defunct @ Apr 8 2006, 20:55)  Цитата За один такт можно выполнять сколь угодно сложные команды, это не вопрос. Распишите (хотя бы для себя на листочке) по шагам как должно быть построено железо, чтобы сделать за 1 такт команду: например, чтение (пусть будет 128-битного, хотя здесь неважно пусть разрядность будет равна разрядности шины данных) слова из памяти, умножение на слово в регистре и запись удвоенного по разрядности результата обратно в память. (для CISC такая команда вполне возможна). Это чем-то отличается от команды умножения с операндами в регистрах? То есть, по-вашему, регистры чем-то принципиально отличаются от памяти? Так же точно и сделаю за один такт, как делается на регистрах. Гарвардская архитектура, слова в памяти данных 256-разрядные, шина данных тоже, обращение возможно к половине слова (128 разрядов) или к целому слову. Для чистоты мысленного эксперимента при этом регистров как таковых вообще не буду иметь, и при этом пусть любая ячейка памяти может использоваться так же, как в привычных нам процах используется аккумулятор. Чтоб совсем не было сомнений, что это CISC, вместо умножения предлагаю сделать команду извлечения квадратного корня. Для простоты и устрашения, делать буду табличным методом, для 256-разрядных операндов. Раззудись плечо, размахнись рука, ресурсы-то по условию задачи даны немеряные!
|
|
|
|
|
Apr 8 2006, 14:01
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=AK= @ Apr 8 2006, 16:46)  Это чем-то отличается от команды умножения с операндами в регистрах? То есть, по-вашему, регистры чем-то принципиально отличаются от памяти? Конечно. Хотя бы тем, что операция чтения из памяти как минимум требует одного такта (хотя в действительности может быть больше). В то время как регистры могут быть непосредственно подключены к входам и выходу АЛУ. Для выполнения такой команды потребуется на мой взгляд как минимум 4 цикла обращения к памяти (хотя может быть и больше). Цитата Так же точно и сделаю за один такт, как делается на регистрах. Ну давайте Вы вначале сделаете набросок, а потом расскажете, какой длины получился у Вас конвеер. Я вас не тороплю с ответом. Не подумайте, что я проигнорировал Ваш вопрос. Цитата Сложные команды нельзя выполнять за один такт? Обоснование не представите? Дело в том, что я нигде не утверждал, что сложные команды нельзя выполнить за 1 такт. Я сказал лишь: Цитата CISC не может выполнять команды быстрее RISC'a, т.к. команды сложные. Если же он выполняет команды за 1 такт, то это значит, что как минимум у него есть конвеер, который при обработке запроса на прерывание придется сбросить. т.е. CISC, при некоторой длине конвеера, может обеспечить фактическое время выполнения команды - 1 такт, может и быстрее 0.5 такта и т.п., но при запросе на прерывание конвеер сбросится, что приведет к потере сразу множества команд находящихся на разной стадии исполнения. И не нужно забывать, что фактическое время совсем несоизмеримо с реальным временем выполнения команды. Цитата(Andy Mozzhevilov @ Apr 7 2006, 12:12)  Самый рисковый риск - это Z80  )), а также все производные от него кролики. Смайлик заметил, но для полноты картины Z80 это не МК, а МП.
|
|
|
|
Сообщений в этой теме
andron86 производительность 8051 котроллеров Mar 31 2006, 08:26 elserge Этот спец наверное до конца не дослушал. Да, MCS-5... Mar 31 2006, 08:41 andron86 Цитата(elserge @ Mar 31 2006, 09:41) Этот... Mar 31 2006, 08:59  Andy Mozzhevilov Цитата(andron86 @ Mar 31 2006, 14:59) Цит... Mar 31 2006, 09:07 andron86 Спасибо elserge!
А всё таки, можно где нибудь... Mar 31 2006, 08:48 Charley Цитата(andron86 @ Mar 31 2006, 13:48) Спа... Apr 3 2006, 11:46  Alexandr Цитата(Charley @ Apr 3 2006, 15:46) Есть ... Apr 3 2006, 13:32 Andy Mozzhevilov Цитата(andron86 @ Mar 31 2006, 14:26) Воп... Mar 31 2006, 08:49 spf Цитата(Andy Mozzhevilov @ Mar 31 2006, 14... Apr 3 2006, 12:58 elserge ЦитатаА всё таки, можно где нибудь независимое сра... Mar 31 2006, 08:56 elserge Смотря с чем сравнивать! Ведь есть и 32-bit MC... Mar 31 2006, 09:05 aforestman Из практического опыта.
Philips P89LPC922 (ядро 2 ... Mar 31 2006, 09:33 =AK= Интересно было бы найти объективное сравнение прои... Mar 31 2006, 09:58       dxp Цитата(defunct @ Apr 6 2006, 13:45) CISCо... Apr 6 2006, 07:43        defunct Цитата(dxp @ Apr 6 2006, 09:43) Если речь... Apr 6 2006, 08:13        Stanislav Цитата(=AK= @ Apr 6 2006, 15:23) ...Для н... Apr 6 2006, 19:30        Evgeny_CD Цитата(=AK= @ Apr 6 2006, 15:23) ...В иде... Apr 6 2006, 19:52                 =AK= Цитата(defunct @ Apr 8 2006, 23:31) Цитат... Apr 8 2006, 23:25                  defunct Цитата(=AK= @ Apr 9 2006, 02:25) Не согла... Apr 9 2006, 09:01                   =AK= Цитата(defunct @ Apr 9 2006, 18:31) Ок, в... Apr 9 2006, 10:08                    defunct ЦитатаНу ладно, пусть будет SRAM. Скажем, для 50МГ... Apr 9 2006, 11:05                     =AK= Цитата(defunct @ Apr 9 2006, 20:35) Цитат... Apr 9 2006, 11:51                      defunct Цитата(=AK= @ Apr 9 2006, 14:51) Что Вы п... Apr 9 2006, 14:12         Andy Mozzhevilov Цитата(defunct @ Apr 7 2006, 06:07) Мое м... Apr 7 2006, 09:12 andron86 Спасибо Charley!
Более менее понятная расклад... Apr 3 2006, 11:59 vladec 51 контроллер, это типичнейший представитель CISC ... Apr 6 2006, 06:30 defunct Цитата(vladec @ Apr 6 2006, 08:30) 51 кон... Apr 6 2006, 06:58 bialix на самом деле CISC от RISC отличается набором возм... Apr 6 2006, 07:18 defunct Цитата(bialix @ Apr 6 2006, 09:18) на сам... Apr 6 2006, 07:32 andron86 Кстати, для более осмысленного спора 3 странички с... Apr 7 2006, 05:25 Kopa Прочитал топик и решил высказать свое мнение
что ... Apr 7 2006, 08:11 Evgeny_CD Народ, а не проще "заезд" устроить:
* 5... Apr 8 2006, 10:01 _Bill Цитата(Evgeny_CD @ Apr 8 2006, 13:01) Нар... Jun 3 2006, 19:08 =AK= Читайте, думайте:
http://www.microprocessor.sscc.r... Apr 10 2006, 00:23 defunct Цитата(=AK= @ Apr 10 2006, 03:23) Отвечат... Apr 10 2006, 09:44 Jevys Если говорить о производительности 8051, то 8051 в... Apr 27 2006, 06:07 _Bill Цитата(andron86 @ Mar 31 2006, 11:26) Воп... May 2 2006, 09:30 mse ЦитатаЕсли взять тот же SiLabs, то его производите... Jun 3 2006, 08:32
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|