-
- тот же AVR/XMega, только добавлены 4 новые команды: LAS, LAC, LAT, XCH. - argus98(19.09.2017 12:25)
- LAS, LAC, LAT, XCH - это ХМеговские команды и есть, а в AVRxt/AVRrc их нет. Тайминги AVRxt по сравнению с ХМеговскими где-то на такт получше (EICALL, SBIx, ST -R, STD), а где-то на такт похуже (большинство LD). MBedder(137 знак., 19.09.2017 16:05 - 16:16)
- "AVRxt == AVR 2016 and onwards. This variant is based on AVRe and AVRxm. Closer related to AVRe, but with improved timing."(с) Например в XMega-A4 никаких LAS итп - нет. Совсем argus98(19.09.2017 19:52 - 20:03)
- Ох, не бережете вы траффик. Вот тот же файл, но в 68 раз меньше. Ale3000(20.09.2017 11:41)
- Я ориентировался на AVR Instruction Set Manual из корневого поста - там они есть MBedder(19.09.2017 20:14)
- "AVRxt == AVR 2016 and onwards. This variant is based on AVRe and AVRxm. Closer related to AVRe, but with improved timing."(с) Например в XMega-A4 никаких LAS итп - нет. Совсем argus98(19.09.2017 19:52 - 20:03)
- В некоторых командах число тактов уменьшили, в некоторых увеличили. Совокупный итог сложно предсказать. - Evgeny_CD(19.09.2017 15:31)
- Дурацкие команды, никому ненужные. Если уж добавлять, то можно было бы придумать что-то более ценное. Например, сложение регистровых пар (для ускорения int-арифметики). - Ксения(19.09.2017 12:31)
- Ну почему же "никому ненужные"? Для манипуляции битами в памяти - весьма полезны. - argus98(19.09.2017 12:45)
- Компилятор их все равно не использует, а если на ассемблере кодить, то одна лишь XCH может оказаться полезной, тогда как остальные едва ли найдут применение - часто ли бывает нужно при чтении из памяти, обнулять ее содержимое, а тем паче забивать Ксения(428 знак., 19.09.2017 14:28)
- Вопрос в растактовке таких команд. Возможно, получилось бы слишком много тактов, и на это плюнули. - Evgeny_CD(19.09.2017 14:35)
- Операции (целочисленного) сложения и вычитания обычно реализуются не сложнее копирования. Хотя я сама не в курсе, как им удается переносить переполнение за тот же такт. Но ведь в обычный сумматор как-то с поразрядным переносом справляется, не Ксения(22 знак., 19.09.2017 15:21)
- "Схема ускоренного переноса". - LightElf(19.09.2017 15:29)
- Ага, именно она. Вот я и дивлюсь, что ее для пары регистров сделать не смогли, чтобы преодолеть недостаток 8-битности - складывание целых чисел по частям. Тем более что такое (парное) складывание с константой есть, и за тот же самый такт! - Ксения(19.09.2017 15:44 - 15:47)
- Чтобы по два регистра складывать нужно либо 16-битное ALU либо два такта. - LightElf(19.09.2017 16:14)
- Ну так и сделать тогда 16-битное ALU. :) Если только для сложения и вычитания, то разве это трудно? - Ксения(19.09.2017 16:20)
- Вот и получается, что Atmel надо было делать AVR16, а не ставить все на AVR32 (и успешно просрать). Причем, уверен, гейтов бы добавилось немного, скорее маркетологи зарубили. - Evgeny_CD(19.09.2017 16:23)
- Примерно так. Но я бы предложила регистры 16 бит, а инструкции - 32 бита. С тем расчетом, чтобы константа целиком в команде помещалась. Разве что регистр адреса можно было бы оставить 32-битным. Кстати, именно так оно устроено и сейчас в AVR - Ксения(92 знак., 19.09.2017 20:24)
- Фишка современных архитектур - Cortex, AVR32 - 16 битые команды (переменной длины). Плотность кода сильно выше. Эффективность кешей малого размера тоже. - Evgeny_CD(19.09.2017 20:36)
- Плевать на плотность кода! На то и RISC, чтобы все команды были одинакового размера. А по нынешнему времени flash экономить глупо - от увеличения его вдвое цена контроллера почти не меняется, остается в пределах статистического разброса. Например, Ксения(82 знак., 19.09.2017 20:51)
- Пока не вылезем за 64кБ, а потом на 8-битниках начинаются пляски со страницами, кривыми регистрами и извратными адресациями. - LightElf(19.09.2017 20:57)
- Не кБ, а килоИнструкций! :) Т.е. счетчик команд считает не байтами, а командами. Поэтому адресное пространство не станет меньше от увеличения длины инструкций вдвое. Оно и сейчас в AVR так - счет команд идет словами. Это чуточку неудобно только в Ксения(56 знак., 19.09.2017 21:28)
- Не принципиально. - LightElf(20.09.2017 12:15)
- Не кБ, а килоИнструкций! :) Т.е. счетчик команд считает не байтами, а командами. Поэтому адресное пространство не станет меньше от увеличения длины инструкций вдвое. Оно и сейчас в AVR так - счет команд идет словами. Это чуточку неудобно только в Ксения(56 знак., 19.09.2017 21:28)
- Пока не вылезем за 64кБ, а потом на 8-битниках начинаются пляски со страницами, кривыми регистрами и извратными адресациями. - LightElf(19.09.2017 20:57)
- Плевать на плотность кода! На то и RISC, чтобы все команды были одинакового размера. А по нынешнему времени flash экономить глупо - от увеличения его вдвое цена контроллера почти не меняется, остается в пределах статистического разброса. Например, Ксения(82 знак., 19.09.2017 20:51)
- Фишка современных архитектур - Cortex, AVR32 - 16 битые команды (переменной длины). Плотность кода сильно выше. Эффективность кешей малого размера тоже. - Evgeny_CD(19.09.2017 20:36)
- Кодировка инструкций AVR 32 бита не потянет, а смена архитектуры (как мы видим на примере AVR32) не находит поддержки у пользователей - пугает их. Поэтому надо развивать AVR до AVR16, что в каких-то частностях возможно, не нарушая совместимости. Ксения(566 знак., 19.09.2017 18:40)
- AVR16 уже есть, называется dsPIC/PIC24 - MBedder(19.09.2017 19:22)
- Нет, надо то же, но от Атмела :) - Evgeny_CD(19.09.2017 19:31)
- И получить на выходе HCS12 :) Кстати, приятный был камушек, тепло вспоминаю - LightElf(19.09.2017 19:07)
- Регистров у него мало. Тогда как AVR хорош ка раз тем, что регистров у него много - 32 шт., что позволяет многое считать прямо на регистрах, не обращаясь к памяти. - Ксения(19.09.2017 19:45 - 19:49, ссылка)
- Но контекст переключать запаришься. HCS12 зато адресует первые 256 байт памяти короткими командами. И да, 16-битная арифметика присутствует. - LightElf(19.09.2017 20:38)
- Так контекст и не переключают. :) А в прерывании спасают в стеке не все регистры, а только те, которые используются. - Ксения(19.09.2017 20:47)
- Ну это кто как. - LightElf(19.09.2017 20:59)
- Так контекст и не переключают. :) А в прерывании спасают в стеке не все регистры, а только те, которые используются. - Ксения(19.09.2017 20:47)
- Но контекст переключать запаришься. HCS12 зато адресует первые 256 байт памяти короткими командами. И да, 16-битная арифметика присутствует. - LightElf(19.09.2017 20:38)
- Ога. За время исполнения инструкции можно было успеть чайкУ попить :)) - MBedder(19.09.2017 19:23)
- Да ладно, нормально там все. В среднем три такта на инструкцию. Но инструкции заметно жирнее чем у AVR. Например прибавить к 16-битному регистру 16-битный непосредственный операнд - два такта. Прибавить к тому же 16-битному регистру 16-битный LightElf(66 знак., 19.09.2017 20:48 - 20:53)
- Регистров у него мало. Тогда как AVR хорош ка раз тем, что регистров у него много - 32 шт., что позволяет многое считать прямо на регистрах, не обращаясь к памяти. - Ксения(19.09.2017 19:45 - 19:49, ссылка)
- AVR16 уже есть, называется dsPIC/PIC24 - MBedder(19.09.2017 19:22)
- Примерно так. Но я бы предложила регистры 16 бит, а инструкции - 32 бита. С тем расчетом, чтобы константа целиком в команде помещалась. Разве что регистр адреса можно было бы оставить 32-битным. Кстати, именно так оно устроено и сейчас в AVR - Ксения(92 знак., 19.09.2017 20:24)
- Вот и получается, что Atmel надо было делать AVR16, а не ставить все на AVR32 (и успешно просрать). Причем, уверен, гейтов бы добавилось немного, скорее маркетологи зарубили. - Evgeny_CD(19.09.2017 16:23)
- Ну так и сделать тогда 16-битное ALU. :) Если только для сложения и вычитания, то разве это трудно? - Ксения(19.09.2017 16:20)
- Чтобы по два регистра складывать нужно либо 16-битное ALU либо два такта. - LightElf(19.09.2017 16:14)
- Ага, именно она. Вот я и дивлюсь, что ее для пары регистров сделать не смогли, чтобы преодолеть недостаток 8-битности - складывание целых чисел по частям. Тем более что такое (парное) складывание с константой есть, и за тот же самый такт! - Ксения(19.09.2017 15:44 - 15:47)
- "Схема ускоренного переноса". - LightElf(19.09.2017 15:29)
- Операции (целочисленного) сложения и вычитания обычно реализуются не сложнее копирования. Хотя я сама не в курсе, как им удается переносить переполнение за тот же такт. Но ведь в обычный сумматор как-то с поразрядным переносом справляется, не Ксения(22 знак., 19.09.2017 15:21)
- Вопрос в растактовке таких команд. Возможно, получилось бы слишком много тактов, и на это плюнули. - Evgeny_CD(19.09.2017 14:35)
- Компилятор их все равно не использует, а если на ассемблере кодить, то одна лишь XCH может оказаться полезной, тогда как остальные едва ли найдут применение - часто ли бывает нужно при чтении из памяти, обнулять ее содержимое, а тем паче забивать Ксения(428 знак., 19.09.2017 14:28)
- Ну почему же "никому ненужные"? Для манипуляции битами в памяти - весьма полезны. - argus98(19.09.2017 12:45)
- LAS, LAC, LAT, XCH - это ХМеговские команды и есть, а в AVRxt/AVRrc их нет. Тайминги AVRxt по сравнению с ХМеговскими где-то на такт получше (EICALL, SBIx, ST -R, STD), а где-то на такт похуже (большинство LD). MBedder(137 знак., 19.09.2017 16:05 - 16:16)
- Кажись, это новые микрочиповские тиньки ATtiny417/814/816/817. Но я не уверена. Читайте обсуждение тут => - Ксения(18.09.2017 22:33, ссылка)
- В Элитане типа доступны для заказа ATTINY816-SFR@MICROCHIP, рабочий диапазон от минус 40 до +125°С - AU08(19.09.2017 04:51, ссылка)
- Цены, кстати, относительно неплохие. - Evgeny_CD(19.09.2017 09:35)
- Да, так и есть! В Atmel AVR Instruction Set Manual [OTHER] указана инструкция Store Indirect and PreDecrement (стр. 26), которая выполняется за 1 такт только AVRxt архитектурой. В мануале на ATtiny417/817 на стр. 471 именно это и указано! Вложено. Evgeny_CD(18.09.2017 22:47)
- Читал. Это единственное толковое место, которое гуглится по AVRxt - Evgeny_CD(18.09.2017 22:35)
- В Элитане типа доступны для заказа ATTINY816-SFR@MICROCHIP, рабочий диапазон от минус 40 до +125°С - AU08(19.09.2017 04:51, ссылка)
- тот же AVR/XMega, только добавлены 4 новые команды: LAS, LAC, LAT, XCH. - argus98(19.09.2017 12:25)