реклама на сайте
подробности

 
 
10 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Архитектрура системы команд 8-разрядного МК, Оценка/Анализ/Архитектура 8-32 разрядного МК
MrYuran
сообщение Jan 19 2009, 13:14
Сообщение #61


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(vitja @ Jan 19 2009, 15:31) *
AVR с ARMом в придачу выполняет команду за один такт/ Счет 6/1 в чью пользу?

Шулерство чистой воды.
1) AVR != x51
2) тот же AVR имеет команды по 2, 3 и даже (о ужас!) 4 цикла.

А мне вот в связи с банками и другой посудой вспомнилась такая фишка от Z80:
там были 2 идентичных набора регистров (включая PC, SP, флаги и т.д.), которые переключались одной командой.
То есть можно было реализовать много(двух)задачность, всего лишь выполняя эту команду по таймеру.
Вот над чем бы подумать. Опять же в контексте многозадачных приложений.

Ещё нынче в моде многоголовость.
8bit Dual (Quad) Core Microcontroller - по-моему, звучит!


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 19 2009, 13:16
Сообщение #62


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(vitja @ Jan 19 2009, 17:12) *
Мультизадачность - для МК это экзотика

Это справедливо только для pic16C54 smile.gif

Если все это позиционируется для SoC, то почему такое отношение к мультизадачности?
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Jan 19 2009, 13:49
Сообщение #63


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



Цитата(vitja @ Jan 19 2009, 17:12) *
Это приведено как пример того что даже ХХ86 не гнушался 8-разрядности и 8-разрядные МК рановато списывать в утиль

ну и бред. 8-разрядная внешняя шина позволяла в те годы зверски уменьшить цену конечного изделия на этом процессоре, оставаясь в рамках 16-ти разрядной вычислительной мощности. откуда взялась связь с МК - неясно.

Цитата(vitja @ Jan 19 2009, 17:12) *
А про команду группового сохранения - это верно - сохранить 16 регистров во внутренней памяти быстрее не получается/плюс такт на команду
Вопрос вот в чем - а нужна ли эта команда?

не. разработчики ядра её так просто по приколу вставили. ага. biggrin.gif

Цитата(vitja @ Jan 19 2009, 17:12) *
Мультизадачность - для МК это экзотика/

да-да! и всякие табуны uCOS, eCOS, FreeFTOS, CTL и прочих многозадачных примочек - это всё из области экзотики и фантазии. biggrin.gif
конечно, раз этого не было в книжках двадцатилетней давности, то этого просто не может быть сейчас.


Цитата(vitja @ Jan 19 2009, 17:12) *
Далее задаем долю операций переключения контекста/ 1% мало - берем 2/ В результате мы сэкономили на этой команде в объеме кода 0.32%
В тактах не выиграли ничего/ Зато усложнили аппаратуру/ Ради чего

ой жжошь!
"1% мало - берём 2" а почему не 5 ? почему не 10? а в военное время и до 80 может подскочить!
а подумать, в какий процессорах есть команды такого типа, а в каких нет? и что даёт эта команда? а зачем такую команду ввели 80286 проц? а что она давала там?
Go to the top of the page
 
+Quote Post
vitja
сообщение Jan 19 2009, 13:54
Сообщение #64


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 3-01-09
Пользователь №: 42 896



Цитата(MrYuran @ Jan 19 2009, 16:14) *
Шулерство чистой воды. 1) AVR != x51

8bit Dual (Quad) Core Microcontroller - по-моему, звучит!


Не AVR = x51 а объем кода М430 в 1.7 раза больше x51
AVR по моим расчетам уступает в объеме кода 8051 на 38%/ но по производительности опережает последний почти в два раза/
если оценивать такты 8051 не по оригиналу а по более современным моделям
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Jan 19 2009, 14:25
Сообщение #65


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



Цитата(vitja @ Jan 19 2009, 17:54) *
Не AVR = x51 а объем кода М430 в 1.7 раза больше x51
AVR по моим расчетам уступает в объеме кода 8051 на 38%/ но по производительности опережает последний почти в два раза/
если оценивать такты 8051 не по оригиналу а по более современным моделям

не. ну какая настойчивость. smile3046.gif смотрим в книгу видим жопу.
третий раз дают тебе ссылку: http://mcu.caxapa.ru/benchmarks/
там, по практическим, а не чисто умозрительным, результатам видно, что объём кода у MSP430 меньше, чем у 8051.
например, в самом ядрёном случае - арифметические операции с 16-ти разрядными матрицами имеем 825/112 - у MSP430 кода получается меньше в 7.3 раза!
но раз факты опровергают теорию - от них надо избавиться? maniac.gif не так ли?

ощущение, что вы там ни разу в жизни не запускали ни один компилятор, ни разу в жизни не видели симулятора МК

"В третей комнате Николай Степанович увидел отдел изучения меча Зигфрида. Самого меча пока не дастали, но отдел занимался изучением воображаемой модели. Воображаемый Нотунг помещали в магнитное поле, травили кислотами и испытывали на разрыв..." (С) М. Успенский, А. Лазарчук, "Посмотри в глаза чудовищ".
Go to the top of the page
 
+Quote Post
vitja
сообщение Jan 19 2009, 14:38
Сообщение #66


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 3-01-09
Пользователь №: 42 896



Цитата(Mahagam @ Jan 19 2009, 16:49) *
ну и бред. откуда взялась связь с МК - неясно.

разработчики AТMEL так просто по приколу вставили команду группового сохранения регистров/

жжошь!
а зачем такую команду ввели 80286 проц? а что она давала там?

Только как пример того/ что 16-разрядный процессор 8086 работал на 8-разрядной шине как и современные 8-разрядные МК/

Они приколись по полной - ввели команду группового восстановления регистров/
в 80286 эти команды ввели без приколов/ а по причине необходимости поддержки мультизадачности

Типовой МК работает с таймером (1 обработчик прерывания) плюс интерфейсы (еще 1 или более обработчиков)
В каждом из них сохраняют контекст одной или большим числом команд/ Доля этих команд в общем объеме кода
программы минимальна и даже в военное время не превышает 2%/ Как сделать больше я не знаю / Научите

Сообщение отредактировал vitja - Jan 19 2009, 14:46
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 19 2009, 14:54
Сообщение #67


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(vitja @ Jan 19 2009, 20:38) *
В каждом из них сохраняют контекст одной или большим числом команд/ Доля этих команд в общем объеме кода
программы минимальна и даже в военное время не превышает 2%/ Как сделать больше я не знаю / Научите

В АРМах команды группового сохранения/загрузки регистров используются почти при каждом вызове процедуры даже в однозадачной программе. При этом сохраняюся в стеке 3..5..10 регистров. В ARM7 эта команда гораздо более универсальна в отличие от 80286. При желании этой командой можно максимально быстро копировать одну область памяти в другую, в 2..3 раза быстрее чем другим способом. Вы знаете слишком поверхностно системы команд. Поэтому все приводимые цыфры и большинство данных вами оценок архитектур необъективны. Глупости конкретные. С таким пониманием темы лучше от неё сразу отказаться.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Jan 19 2009, 15:00
Сообщение #68


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



Цитата(vitja @ Jan 19 2009, 18:38) *
Только как пример того/ что 16-разрядный процессор 8086 работал на 8-разрядной шине как и современные 8-разрядные МК/

да вы просто из страны эльфов! откуда вам знать какой разрядности и сколько шин внутрях у МК? это внешняя шина имеет ограничения по разрядности. что там внутрях - известно только производителям. внутрях кристалла к ядру может подходить а) 8-ти разрядная шина команд б) 8-и разрядная шина данных из памяти в) 8-и разрядная шина данных для записи в память. в итоге за 1 такт мы а) читаем команду б) получаем данные из памяти в) пишем результат предыдущих вычислений в память. МК остаётся 8-и разрядным. но эти его 8 разрядов ничего общего с внешними 8-ю разрядами 8086 не имеют. ибо по внешней шине за 1 такт происходит только одна транзакция.

Цитата(vitja @ Jan 19 2009, 18:38) *
Они возможно по приколу/ а в 80286 по причине необходимости поддержки мультизадачности

это вы высосали из пальца. что бы вы не сосали что-нибудь ещё, приведу пример.
пример прост: имеем понятное ограничение - одно обращение к памяти за такт (память - внешняя). имеем задачу - сохранить в стеке 10 регистров
вариант а) 10 раз мы читаем команду PUSH, 10 раз пишем в стек. итого 10 байт кода, 20 обращений к памяти
вариант б) 1 раз прочитали PUSHALL, 10 раз записали в стек. итого - 1 байт кода, 11 обращений к памяти.
эффективно? безусловно. но эта команда становится эффективной по скорости только в случае если данные и команды лежат в одной физической памяти. в случае с МК это уже не так критично.

Цитата(vitja @ Jan 19 2009, 18:38) *
Типовой МК работает с таймером (1 обработчик прерывания) плюс интерфейсы (еще 1 или более обработчиков)
В каждом из них сохраняют контекст одной или большим числом команд/ Доля этих команд в общем объеме кода
программы минимальна и даже в военное время не превышает 2%/ Как сделать больше я не знаю / Научите

а если на процессор валятся 20000 прерываний в секунду? если он из одного прерывания еле успевает переползать в обработчик следущего? есть ли смысл оптимизировать ядро для быстрого сохранения/восстановления контекста?
ARM7 умеет сохранять в стек одной командой произвольные регистры, что не только полезно в обработчике прерываний, но и просто при вызове функций.
Go to the top of the page
 
+Quote Post
vitja
сообщение Jan 19 2009, 15:15
Сообщение #69


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 3-01-09
Пользователь №: 42 896



Цитата(Mahagam @ Jan 19 2009, 17:25) *
1 ////ну какая настойчивость. смотрим в книгу видим жопу.
2/// там, по практическим, а не чисто умозрительным, результатам видно, что оарифметические операции с 16-ти разрядными матрицами имеем 825/112 - у MSP430 кода получается меньше в 7.3 раза!

1/ У Чехова в записках станционного смотрителя - написано не так "смотрю в книгу, а вижу фигу"/
Однако это было написано в прошлом веке/ интернета тогда не было/ а книга даже 81 года для Вас это библиографическая редкость
/Вы только Wiki читаете - кладезь Ваших знаний
2/ Сравнение проводилось на не вычислительных задачах обработки 8-разрядных данных поэтому такие результаты//
И вообще сравнение проводилось не ради сравнения/ а ради выявления и оценки влияния архитектурных особенностей
системы команд 8-разрядного МК на затраты кода и тактов на реализацию операторов ЯВУ по весу их употребления в типовых программах

// в конце позволю себе пофантазировать
Сейчас есть мониторы/ 3D графика/ Inet с его анонимностью/
Но вдруг появились теле-мониторы не с графикой а с материальной передачей информации
Сидишь себе за таким теле-монитором (чатишься)/ а тут тебе в ответ не словом/ а /// та так что чатится уже не захочется
Однако я бы бросил перчатку/ а результат - как у Черной речки / это там в 600-стах километрах от Москвы
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Jan 19 2009, 15:58
Сообщение #70


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



vitja
давайте вы не будете словоблудить когда по существу темы сказать нечего.
вам не нравится арифметика? смотрим результаты теста по switch/case по восьмиразрядной переменной. и опять у MSP430 выигрыш в 209/178 = 1.17 раза по объёму кода. неужто незаметно, что ваша оценка не то что бы хромает - она вообще в корне не верна! вы вообще сверялись с практическими данными?

что касается библиографических редкостей - у меня на столе лежит "MICROCOMPUTERS/MICROPROCESSORS hardware, software and applications" на русском. издана в 1979. оригинал аж 1976 года. ничего кроме "энтомологического" интереса "а как оно тогда было, когда двухядерников не было" не вызывает.
Go to the top of the page
 
+Quote Post
vitja
сообщение Jan 19 2009, 18:02
Сообщение #71


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 3-01-09
Пользователь №: 42 896



Цитата(Mahagam @ Jan 19 2009, 18:00) *
1 пример прост: а) 10 раз мы читаем команду PUSH, 10 раз пишем в стек. итого 10 байт кода, 20 обращений к памяти
вариант б) 1 раз прочитали PUSHALL, 10 раз записали в стек. итого - 1 байт кода, 11 обращений к памяти.

2 ARM7 умеет сохранять в стек одной командой произвольные регистры, что полезно ... при вызове функций.


1. Я тоже иногда ошибаюсь и передергиваю понятия.
Однако при разделенных шинах команд и данных (в МК, как правило, это так)
Мы будем иметь 10 команд PUSH и только 10 тактов на их выполнение, а Вас почему то 11. Неувязочка получилась.

Опа!!!
2. Я так ждал, что кто нибудь это скажет. Вы первый. Поздравляю.
Именно. Я всегда считал, что одной из проблем регистровой архитектуры, несмотря на их шустрость (обработка 2 операндов за такт),
являются накладные расходы на загрузку и выгрузку регистров при вызове процедуры.
Я для расчетов брал цифру 2 (1 - входной операнд и 1 - результат).
По Вашему мнению какая цифра этих затрат будет ближе к действительности.

Однако на этот вопрос ответил заранее GetSmart - поэтому не напрягайтесь, от 3 до 10, ++++
(в среднем можно принять 5 туда и 5 обратно при каждом вызове процедуры доля которых в среднем составляет 18%)
Срочно делаю перерасчет числа тактов для AVR.

Сообщение отредактировал vitja - Jan 19 2009, 18:03
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Jan 19 2009, 18:30
Сообщение #72


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



Цитата(vitja @ Jan 19 2009, 22:02) *
1. Я тоже иногда ошибаюсь и передергиваю понятия.
Однако при разделенных шинах команд и данных (в МК, как правило, это так)
Мы будем иметь 10 команд PUSH и только 10 тактов на их выполнение, а Вас почему то 11. Неувязочка получилась.

никакой неувязочки. в тех МК, в которых шина для внешней памяти наружу не выходит (или выходит редко, или архитектура закрытая) команд множественного сохранения обычно и не наблюдается. (AVR, MSP430, PIC`и всякие), ибо выигрыша по скорости не получается вовсе.
а вот ядра ARM7/9, I80286 и выше обычно рассчитаны на жизнь с внешней памятью. посему минимум 1 такт придётся потратить на выборку этой команды. соответственно и все растактовки приведены для варианта с внешней памятью. и в этом случае эта команда ох как ускоряет работу.


Цитата(vitja @ Jan 19 2009, 22:02) *
Именно. Я всегда считал, что одной из проблем регистровой архитектуры, несмотря на их шустрость (обработка 2 операндов за такт),
являются накладные расходы на загрузку и выгрузку регистров при вызове процедуры.

а тут вуаля - и вылазит такой чмыримый вами MSP430. smile.gif
нааааапример:
нужно в прерывании инкрементировать 16-ти разрядный счётчик
код типа
// Timer A0 interrupt service routine.
void timera_isr(void) __interrupt[TIMERA0_VECTOR]
{
time_counter++;
}

выливается в две команды:

INC &time_counter
RETI.

никаких сохранений в стек, никаких доставаний из стека, никаких запоротых регистров. лепота.
а потом удивляются, как это так - по оценкам он должен уступать древнему 8051, а он, засранец такой, ещё и выигрывает солидно.
Go to the top of the page
 
+Quote Post
vitja
сообщение Jan 19 2009, 18:54
Сообщение #73


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 3-01-09
Пользователь №: 42 896



Цитата(Mahagam @ Jan 19 2009, 18:58) *
vitja
1 смотрим результаты теста по switch/case по восьмиразрядной переменной. и опять у MSP430 выигрыш в 209/178 = 1.17 раза по объёму кода. неужто незаметно, что ваша оценка не то что бы хромает - она вообще в корне не верна! вы вообще сверялись с практическими данными?

2 что касается библиографических редкостей - у меня на столе лежит "MICROCOMPUTERS/MICROPROCESSORS hardware, software and applications" на русском. издана в 1979. оригинал аж 1976 года. ничего кроме "энтомологического" интереса "


1. Как только Вы взяли тест для 8-разрядных данных (что ближе к теме), то с 7.3 опустились до 1.17.
Наверное можно найти еще какой-нибудь тест, где будет еще меньше.
Но этого делать не будем по причине того,
а) что единичные тесты не представительны. Выборка для оценки должна быть гораздо больше.
б) что я оцениваю не конкретные М430, 8051 и пр. и никого не хочу обижать.
Я на их примере оцениваю архитектуру системы команд - 0, 1, 2-адресной, переменной или фиксированной длины, регистровой, стековой или с командами память-память, я оцениваю в конечном счете влияние архитектурных особенностей системы команд на эффективность процессора.
Пока все.

2. Об этом я уже писал. Описания, справочники, инструкции к программным системам, наверное, издавались и тогда.
Я говорю о нетленке. Это Дейкстра, Бэкус, Кнут, Вирт, Хоар, Ритчи и др. А свою книгу убери со стола.
Хотя возможно ее можно использовать как подставку или как крышку.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 19 2009, 18:56
Сообщение #74


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Mahagam @ Jan 20 2009, 00:30) *
никаких сохранений в стек, никаких доставаний из стека, никаких запоротых регистров. лепота.
а потом удивляются, как это так - по оценкам он должен уступать древнему 8051, а он, засранец такой, ещё и выигрывает солидно.

С 51-ым незнакомы?! smile.gif У него будет ровно такой же код. Только адрес переменной ограничен 8 битами.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
vitja
сообщение Jan 19 2009, 19:22
Сообщение #75


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 3-01-09
Пользователь №: 42 896



Цитата(Mahagam @ Jan 19 2009, 21:30) *
в МК, в которых шина для внешней памяти наружу не выходит выигрыша по скорости не получается вовсе.
а вот ядра ARM7/9, I80286 и выше обычно рассчитаны на жизнь с внешней памятью. посему минимум 1 такт придётся потратить.

вылазит MSP430. и выливается в две команды:
INC &time_counter
RETI.


По первому договорились. Ты прав больше. Я имел в виду только МК (с внутренней память), а ты говоришь о более общем случае - использование процессором внешней памяти.

По второму. Мне очень нравится система команд PDP 11 и ее развитие в М430.
Своей концептуальностью, ортогональностью и даже "простотой", нет вывертов и ограничений, как у других.

А пример дополнил бы - выливается в 2 команды, 6 байт и 6 тактов плюс еще такты на само прерывание.
Если на один такт ошибся извини.
Я бы тоже самое мог написать на 8051 (от ATMEL, в нем говорят байтовые команды выполняются за один такт).
Получил бы те же команды, только байтов на 3 меньше, а тактов, наверное столько же.

А может ну их эти байты.
Будем писать все только на Си и закроем глаза на то, какой ущербный машинный код при этом получается.
Go to the top of the page
 
+Quote Post

10 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 11:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01521 секунд с 7
ELECTRONIX ©2004-2016