Actions
Task #5345
closed[arch] Notes to the existing architecture models and templates
Start date:
10/14/2014
Due date:
% Done:
100%
Estimated time:
Detected in build:
svn
Published in build:
141018
Description
Замечания по моделям:
- Переименовать
simple_vliw
вvliw-demo
(вместо подчеркивания лучше использовать минус). - Переименовать
demo
вcpu-demo
. - Переместить все другие архитектуры в microtesk-internals (не только для планируемой поставки; в основном проекте должны быть только отлаженные и задокументированные модели).
- В модели
cpu-demo
переименоватьAdd
вADD
и т.д. - В модели
cpu-demo
написать коментарии. - В коментариях для модели
vliw-demo
вместо "operation" использовать "instruction" (это касается и других моделей; не нужно терминологию языка nML распространять на все вокруг). - Какие параметры передаются в
float
? Если разрядность мантиссы и порядка, то дляSINGLE
нужно передавать 23 и 8 (не помешал бы комментарий). - В модели
vliw-demo
закомментирован вызовSignalException
- нужно раскомментировать (без поддержки исключений инструмент мало кому нужен). - Нет комментариев для многих инструкций (
MUL
,SLL
и др.) - либо комментарии есть у всех инструкций, либо их нет ни у одной инструкции (если комментарии повторяют код на nML, смысла в них нет). - Заводятся, но нигде не используются алиасы
PC
иSP
- нужен лиSP
? - Название константы
REGS
неадекватно - лучше использовать что-то вродеREG_INDEX_SIZE
(размер индекса регистра в битах). - Спецификацию
SW
лучше записать через конкатенацию в левой части присваивания. - Не хватает комментариев для "тонких" моментов:
BRANCH = 1
,JMPADDR = ...
,GPR[0] = 0
. - Вместо числа
8
вCIA = CIA + 8
лучше написать2 * INSTRUCTION_SIZE
, гдеINSTRUCTION_SIZE
- размер кода инструкции в байтах. - Комментарии-разделители должны иметь размер 80, а не 79.
- Синтаксис
syntax = format("%s, %s;", c1.syntax, c2.syntax)
не соответствует тому, что пишется в шаблонах. Названия инструкций для записи в шаблонах берутся изop
илиformat
? - В модель
cpu-demo
добавить простейшие инструкции с плавающей точкой.
Замечания по шаблонам:
- Предлагаю придерживаться конвенций Google:
class VLIWDemo
->class VliwDemo
. - Представляется неправильным то, что классы всех шаблонов названы одинаково (
VLIWDemo
,ArmDemo
и т.д.) - названия шаблонов должны быть разными и отражать их содержание. - Думаю, имеет смысл для каждой архитектуры выделить базовый шаблон (
VliwDemoTemplate
,CpuDemoTemplate
,ArmTemplate
и т.д.). - Нужно избавиться от странного метода
initialize
. - В шаблонах (для
cpu-demo
иvliw-demo
) не хватает комментариев (label
,trace
,location
и т.д.). - Отсутствуют "комбинаторные" шаблоны.
- Отсутствуют шаблоны на исключения.
Updated by Andrei Tatarnikov about 10 years ago
Изменения и комментарии¶
Замечания по моделям:
- Переименовано: simple_vliw -> arch/demo/vliw (vliw.nml)
- Переименовано: demo -> arch/demo/cpu (cpu.nml)
- Неотлаженные модели перенесены в microtesk-internals
- Переименовал операции (r2619)
- Добавил комментарии в cpu.nml и сделал небольшой рефакторинг (r2690).
- Использую термин "instruction" вместо "operation" (r2670)
- Да, размер мантиссы и порядка (бит знака добавляется наявно). Сделано в r2703. Комментарий добавлен.
- Сейчас поддерживается конструкция: exception("IntegerOverflow"); Она печатает в лог (консоль) соответствующее сообщение (r2679)
- Убрал комментарии, повторяющие код
- Удалил SP и дописал комментарий для PC (r2669)
- Переименовал REGS -> REG_INDEX_SIZE (r2628)
- Сделано (r2674)
- Добавил комментарии (r2675)
- Использую константу INSTRUCTION_WORD_SIZE (r2657)
- Комментарии-разделители 80 символов: сделано (r2617)
- Функции для описания инструкций и режимов адресации в шаблонах берутся из сигнатур соответствующих op'ов и mode'ов (формат в аттрибутах syntax не учитывается), потому возможны несоответствия. В дальнейшем это можно будет улучшить, но анализ формата в syntax - это относительно трудоёмкая задача. Пока изменил синтаксис на: format("%s; %s;", c1.syntax, c2.syntax). Т.е. разделил инструкции в длинном слове точкой с запятой.
- cpu-demo был задуман как совсем маленький пример (код заимствован из документации по Sim-nML). Он работает с 8-битными данными. Если добавлять туда FP, придется делать много изменений (все должно стать 32-битным). А иллюстрация работы с плавающей точкой есть в примере vliw-demo, думаю этого должно быть достаточно.
Замечания по шаблонам:
- Сделал (r2671)
- Лучшие имена для классов шаблонов CPU (r2681) и VLIW (r2683, r2700, r2701).
- Сделаны базовые шаблоны для CPU (r2681) и для VLIW (r2682).
- Избавился от метода initialize и атрибута is_executable - r2708.
- Работаю над шаблонами CPU: r2691, r2692, r2694 и шаблонами VLIW - здесь, я считаю, все нормально (кое-что добавил), а в целом всё разжевывается в простом примере CPU (он для этого и сделан) и дублировать я не вижу смысла.
- Добавил пример для VLIW combinatorics.rb (r2702) и в примере features.rb для CPU появилась соответствующая секция. Но проблема: генераторы последовательностей работают плохо. Во всяком случае у меня пока не получилось сделать, то что мне хотелось. Нужно review фичи. Создан таск #5403.
- Шаблон на исключения: datagen_int_cases.rb - вызывает exception("IntegerOverflow")
Updated by Andrei Tatarnikov about 10 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
- Published in build set to 141018
Actions