Project

General

Profile

Task #5345

[arch] Notes to the existing architecture models and templates

Added by Alexander Kamkin almost 6 years ago. Updated almost 6 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Andrei Tatarnikov
Category:
-
Target version:
Start date:
10/14/2014
Due date:
% Done:

100%

Estimated time:
Detected in build:
svn
Published in build:
141018

Description

Замечания по моделям:

  1. Переименовать simple_vliw в vliw-demo (вместо подчеркивания лучше использовать минус).
  2. Переименовать demo в cpu-demo.
  3. Переместить все другие архитектуры в microtesk-internals (не только для планируемой поставки; в основном проекте должны быть только отлаженные и задокументированные модели).
  4. В модели cpu-demo переименовать Add в ADD и т.д.
  5. В модели cpu-demo написать коментарии.
  6. В коментариях для модели vliw-demo вместо "operation" использовать "instruction" (это касается и других моделей; не нужно терминологию языка nML распространять на все вокруг).
  7. Какие параметры передаются в float? Если разрядность мантиссы и порядка, то для SINGLE нужно передавать 23 и 8 (не помешал бы комментарий).
  8. В модели vliw-demo закомментирован вызов SignalException - нужно раскомментировать (без поддержки исключений инструмент мало кому нужен).
  9. Нет комментариев для многих инструкций (MUL, SLL и др.) - либо комментарии есть у всех инструкций, либо их нет ни у одной инструкции (если комментарии повторяют код на nML, смысла в них нет).
  10. Заводятся, но нигде не используются алиасы PC и SP - нужен ли SP?
  11. Название константы REGS неадекватно - лучше использовать что-то вроде REG_INDEX_SIZE (размер индекса регистра в битах).
  12. Спецификацию SW лучше записать через конкатенацию в левой части присваивания.
  13. Не хватает комментариев для "тонких" моментов: BRANCH = 1, JMPADDR = ..., GPR[0] = 0.
  14. Вместо числа 8 в CIA = CIA + 8 лучше написать 2 * INSTRUCTION_SIZE, где INSTRUCTION_SIZE - размер кода инструкции в байтах.
  15. Комментарии-разделители должны иметь размер 80, а не 79.
  16. Синтаксис syntax = format("%s, %s;", c1.syntax, c2.syntax) не соответствует тому, что пишется в шаблонах. Названия инструкций для записи в шаблонах берутся из op или format?
  17. В модель cpu-demo добавить простейшие инструкции с плавающей точкой.

Замечания по шаблонам:

  1. Предлагаю придерживаться конвенций Google: class VLIWDemo -> class VliwDemo.
  2. Представляется неправильным то, что классы всех шаблонов названы одинаково (VLIWDemo, ArmDemo и т.д.) - названия шаблонов должны быть разными и отражать их содержание.
  3. Думаю, имеет смысл для каждой архитектуры выделить базовый шаблон (VliwDemoTemplate, CpuDemoTemplate, ArmTemplate и т.д.).
  4. Нужно избавиться от странного метода initialize.
  5. В шаблонах (для cpu-demo и vliw-demo) не хватает комментариев (label, trace, location и т.д.).
  6. Отсутствуют "комбинаторные" шаблоны.
  7. Отсутствуют шаблоны на исключения.

History

#1

Updated by Andrei Tatarnikov almost 6 years ago

Изменения и комментарии

Замечания по моделям:

  1. Переименовано: simple_vliw -> arch/demo/vliw (vliw.nml)
  2. Переименовано: demo -> arch/demo/cpu (cpu.nml)
  3. Неотлаженные модели перенесены в microtesk-internals
  4. Переименовал операции (r2619)
  5. Добавил комментарии в cpu.nml и сделал небольшой рефакторинг (r2690).
  6. Использую термин "instruction" вместо "operation" (r2670)
  7. Да, размер мантиссы и порядка (бит знака добавляется наявно). Сделано в r2703. Комментарий добавлен.
  8. Сейчас поддерживается конструкция: exception("IntegerOverflow"); Она печатает в лог (консоль) соответствующее сообщение (r2679)
  9. Убрал комментарии, повторяющие код
  10. Удалил SP и дописал комментарий для PC (r2669)
  11. Переименовал REGS -> REG_INDEX_SIZE (r2628)
  12. Сделано (r2674)
  13. Добавил комментарии (r2675)
  14. Использую константу INSTRUCTION_WORD_SIZE (r2657)
  15. Комментарии-разделители 80 символов: сделано (r2617)
  16. Функции для описания инструкций и режимов адресации в шаблонах берутся из сигнатур соответствующих op'ов и mode'ов (формат в аттрибутах syntax не учитывается), потому возможны несоответствия. В дальнейшем это можно будет улучшить, но анализ формата в syntax - это относительно трудоёмкая задача. Пока изменил синтаксис на: format("%s; %s;", c1.syntax, c2.syntax). Т.е. разделил инструкции в длинном слове точкой с запятой.
  17. cpu-demo был задуман как совсем маленький пример (код заимствован из документации по Sim-nML). Он работает с 8-битными данными. Если добавлять туда FP, придется делать много изменений (все должно стать 32-битным). А иллюстрация работы с плавающей точкой есть в примере vliw-demo, думаю этого должно быть достаточно.

Замечания по шаблонам:

  1. Сделал (r2671)
  2. Лучшие имена для классов шаблонов CPU (r2681) и VLIW (r2683, r2700, r2701).
  3. Сделаны базовые шаблоны для CPU (r2681) и для VLIW (r2682).
  4. Избавился от метода initialize и атрибута is_executable - r2708.
  5. Работаю над шаблонами CPU: r2691, r2692, r2694 и шаблонами VLIW - здесь, я считаю, все нормально (кое-что добавил), а в целом всё разжевывается в простом примере CPU (он для этого и сделан) и дублировать я не вижу смысла.
  6. Добавил пример для VLIW combinatorics.rb (r2702) и в примере features.rb для CPU появилась соответствующая секция. Но проблема: генераторы последовательностей работают плохо. Во всяком случае у меня пока не получилось сделать, то что мне хотелось. Нужно review фичи. Создан таск #5403.
  7. Шаблон на исключения: datagen_int_cases.rb - вызывает exception("IntegerOverflow")
#2

Updated by Andrei Tatarnikov almost 6 years ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100
  • Published in build set to 141018

Also available in: Atom PDF