besm6 / micro-besm

Replica of micro-BESM computer
MIT License
26 stars 5 forks source link

features and futures #2

Open mrp149 opened 7 years ago

mrp149 commented 7 years ago

одна старая идея о которой мы не знали в 1986, которую я пытался протокнуть в фу, и которую можно изобразить здесь очень изящно - это ПАЛкод альфа

sergev commented 7 years ago

Это что такое?

mrp149 commented 7 years ago

wikipedia: PALcode is Alpha machine code, running in a special mode that also allows access to internal registers specific to the particular Alpha processor implementation. It is thus somewhere between the role of microcode and of a hardware emulator. http://download.majix.org/dec/palcode_dsgn_gde.pdf

mrp149 commented 7 years ago

проблема микрокода - сложно писать, а палкод дает очень сильное облегчение, тк как это нормалльней команды (а.к.а. экстракоды)

sergev commented 7 years ago

Я посмотрю, не знал раньше про такой метод. Но по большому счёту я не думаю, что имеет смысл сильно погружаться в доработку микрокода.

Этот вопрос обобщается до более фундаментального: что мы хотим получить от имеющейся реализации. Её ценность в том, что она функционально достаточно полная и качественно отлаженная. Доработав её в области внешней шины адрес/данные, внешних прерываний и периферии можно получить вполне законченный и практичный девайс (плату FPGA) уровня Raspberry Pi. И дальше уже заниматься софтом: компилятор, юникс и т.д. Это подход №1: не менять имеющийся микрокод (по возможности).

Подход №2: попробовать улучшить дизайн (и архитектуру) на основе имеющегося микрокода. Тут много направлений: нужен кэш, аппаратный умножитель, убрать теги, вместо них ввести дополнительные биты защиты на уровне страниц, и т.п.

Подход №3: реализовать эту же архитектуру на основе совершенно другой микроархитектуры. Например как конвейерный RISC-процессор. Каждая команда выполняется за 1 такт. Сложные команды типа стековых на стадии Fetch разбивать на две элементарных. Ну и так далее, тут огромный простор.

mrp149 commented 7 years ago

Да я эту трудность вижу и собственно написал здесь arbiter suspend cases · Issue #3 · besm6/micro-besm

mrp149 commented 7 years ago

Подход №2: попробовать улучшить дизайн (и архитектуру) Принципиальный вопрос: свёртки надо оставлять? как нестранно, это сильно помогает при оладке. Биг-О (оракл ака сан) сделал в последнем процессоре имитацию свёртки, правда, хранит он ее отдельно и ключ (тэг) программно управляем.

Подход №3: реализовать эту же архитектуру на основе совершенно другой микроархитектуры. как альернатива всегда есть хот-спот метод, Ява доказала, что в большенстве случаев, это работает очень эффективно.

sergev commented 7 years ago

Принципиальный вопрос: свёртки надо оставлять?

Перенести биты тега в таблицу приписки. То есть не каждое слово будет иметь отдельный признак команды/числа/бэсм6, а страница в целом. Большинство битов тега заменяются на режимы доступа страницы: разрешение чтения/записи/выполнения. Бит программной интерпретации тега не нужен. Единственный существенный бит тега, который нужен по делу, это РЭ (режим эмуляции). Он требуется для переключения в режим БЭСМ-6 и обратно. Но он вполне может работать для страницы в целом. Нельзя будет в отной странице смешивать код или данные от 48-битного и 64-битного режимов, но это и не требуется.

как альернатива всегда есть хот-спот метод

Я имею в виду μ-op translation, как это реализовано во всех современных x86 процессорах. Тем более что команды микро-БЭСМ гораздо проще транслируются в микрооперации RISC чем x86.

mrp149 commented 7 years ago

Нет, не принципиально, с ними возникают трудности, которые достаточно сложно компенсировать удобствами в отладке.

sergev commented 7 years ago

Вот интересная аппаратная платформа для реализации микро-БЭСМ на FPGA: https://circuitmaker.com/Projects/Details/Konstantin-Dimitrov-6/Configum-FPGA-module-in-PLCC-68

mrp149 commented 7 years ago

Выглядит неплохо! Из схематики я понял что fpga может usb , плюс всего, то что память в самом fpga 576k и ddr sram  IS43R86400D-5BLI    = 512M (64M x 8) AD/DA не суть, но можно и что-то прикрутить из апликаций  (AD5592RBCPZ-1-RL7) Есть что-то такое у Avnet но 1/8 памяти и 3/4 fpga размер of LX16 Avnet Spartan-6 LX9 MicroBoard https://www.xilinx.com/products/boards-and-kits/1-3i2dfk.html  $86

Avnet Spartan-6 LX9 MicroBoard The low-cost Spartan-6 FPGA LX9 MicroBoard is the perfect solution for designers interested in exploring the Mic...

sergev commented 6 years ago

Я прихожу к мысли, что микро-БЭСМ имела бы смысл в формате Ардуино. Примерно так: http://www.aloriumtech.com/xlr8/

Только добавить внешнюю память SRAM, карточку микро-SD и разъем для Wi-Fi/Bluetooth ESP32.

x86128 commented 6 years ago

И типа такого корпуса сделать. low-power-mini-itx-pc-gaming-computer-with-intel-core-i5-4200u-max-2-6ghz-cpu

mrp149 commented 6 years ago

Сергей, как это видится? навесить доп память на xlr8 @DIO?там стоит Altera-Max10, ее-то хватит? From: Serge Vakulenko Sent: Wednesday, February 7, 2018 5:07 PM Subject: Re: [besm6/micro-besm] features and futures (#2)

Я прихожу к мысли, что микро-БЭСМ имела бы смысл в формате Ардуино. Примерно так: http://www.aloriumtech.com/xlr8/Только добавить внешнюю память SRAM, карточку микро-SD и разъем для Wi-Fi/Bluetooth ESP32.

sergev commented 6 years ago

Альтеры Max10 хватит с хорошим запасом. Я сейчас экспериментирую на плате DE10-Lite: https://www.altera.com/solutions/partners/partner-profile/terasic-inc-/board/de10-lite-board.html

На ней как раз имеется внешняя SDRAM. Можно просто повторить эту часть схемы. Код Verilog для работы с периферией на этой плате можно подсмотреть в проекте MIPSfpga: https://github.com/MIPSfpga/mipsfpga-plus/tree/master/boards/de10_lite