Author |
Working on a new Alpha Emulator... |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on June 23 2017 12:42 |
|
|
I thought I'd add this here.
I have recently starting writing my own Alpha AXP emulator (a 21264). The ones out there are great, but many of them were not designed to be multithreaded, and have this kind of hack threading into the implementation. The one I'm writing, will be as accurate an implementation of the 21264 as I can make it. It will be able to execute 4 instructions simultaneously, just like the real CPU. I'm also going to take a page out of the alternative meaning of the acronym RISC (Relegate Important Stuff to Compilers). I have seen quite a bit of other code that has tried to best-guess the compile, but using masks and shifts and whatnot (it also make debugging harder). We'll see how far I get, but I'm having a ball writing it (I always said, that if I were not writing code for my job, I'd do it as a hobby -- so that's what I'm doing).
~Jon. |
|
Author |
RE: Working on a new Alpha Emulator... |
John Manger
Member

Posts: 63
Location: nr Heathrow, Middlesex, UK
Joined: 18.03.10 |
Posted on September 09 2017 02:50 |
|
|
It sounds very interesting.
Any word on progress ? Got it booting as an Alpha yet ?
John M |
|
Author |
RE: Working on a new Alpha Emulator... |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on September 28 2017 13:59 |
|
|
Not booted yet. There is quite a bit of coding to be implemented, I have parts of the instruction, integer, floating-point, and data cache implemented and tested (the IEEE floating point instructions passed 100% of the IEEE test cases). I have not yet, introduced threads (and each CPU will require 9 of them). The system interface is also not yet implemented. The system interface contains all the devices associated with a computer system (disk, memory, network, console, etc. - each being yet another thread). I am hoping to have it booted from the SROM (pre-console system) in the next few months.
I you want to see what I have done, thus far, you can go to GitHub and search for DECemu.
~Jon. |
|
Author |
RE: Working on a new Alpha Emulator... |
goodbyespy
Member
Posts: 19
Location: Saint Petersburs, Russia.
Joined: 17.11.17 |
Posted on February 26 2018 02:17 |
|
|
Hello Jonathan! Can I help you with anything? |
|
Author |
RE: Working on a new Alpha Emulator... |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on March 15 2018 18:58 |
|
|
I don't have first boot, yet. But I do have the following:
1) An XML coded configuration file has been created.
2) An Excel spreadsheet that can generate Alpha instructions, including branches.
3) A utility to take a CSV output from #2 and generate binary code in SROM format.
4) An Alpha AXP 21264 Emulator, CPU only. Does not have a system, so no disks or memory.
5) The CPU emulator does the following:
5a) Load in configuration file.
5b) Create and initialize CPU data structure.
5c) Create 1 Cbox, 1 Mbox, 1 Ibox, 4 Ebox, and 2 Fbox threads
5d) Cbox initializes the CSRs from a file (defined in configuration)
5e) Cbox initializes IPRs for Mbox, Fbox, Ebox, and Ibox
5f) Cbox loads in instructions from the SROM (generated in step #3) into Icache
5g) Cbox sets PC to first instruction in step #5f
5h) Cbox set CPU state to Running, causing all the other threads to execute
5i) Ibox reads first 4 instructions from Icache
5j) For each of these Ibox decodes each instruction and performs branch prediction
5k) Each instruction is inserted it on IQ or FQ prior to decoding the next instruction
5l) Ibox signals either the Ebox or Fbox that it has an instruction to execute
5m) Ibox determines if there are any instructions that can be retired (in instruction order)
5n) Ibox also determines if there was a branch mispredict or event and rolls back speculative execution
5o) Ebox or Fbox determines if all the registers for any queued instruction are ready
5p) If 5m is true, then instruction is dequeued and executed
So, it is able to simultaneously, decode instructions, perform speculative execution of up to 6 instructions simultaneously, and retire them in instruction order. It has room for up to 80 instructions inflight at anyone time. It is also ready to perform memory access simultaneously with instruction execution. There are still a few things not yet implemented, such as memory barriers, scoreboarding IPR access, and performance counters. But when it attempts to load a memory reference, it does call through the Mbox and Cbox to request memory from the system. I'm not sure how fast it is, as I have logging functionality turned on.
I'm going to finish the not yet implemented items above and then start on the system component, which will be based on the typhoon/tsunami chipset.
~Jon.
Edited by JonathanBelanger on March 15 2018 18:58 |
|
Author |
RE: Working on a new Alpha Emulator... |
gtackett
Member
Posts: 9
Location: Virginia Piedmont
Joined: 06.02.08 |
Posted on March 19 2018 07:36 |
|
|
Sounds exciting. Having an aging DS10 at home that I hope to replace with an emulator some day, I wish I knew enough and had the time to be of help, but I clearly don't. I do want to follow you progress, though. Good luck! |
|
Author |
RE: Working on a new Alpha Emulator... |
goodbyespy
Member
Posts: 19
Location: Saint Petersburs, Russia.
Joined: 17.11.17 |
Posted on April 06 2018 08:12 |
|
|
Hello Jonathan! I've cloned a new Alpha Emulator and now I am trying to compile it under FreeBSD 10.3 and 11.1 stable. I am correcting Makefile to compile a new Alpha Emulator under FreeBSD. |
|
Author |
RE: Working on a new Alpha Emulator... |
goodbyespy
Member
Posts: 19
Location: Saint Petersburs, Russia.
Joined: 17.11.17 |
Posted on April 12 2018 08:07 |
|
|
Hello Jonathan! I am trying to compile a new Alpha Emulator. Well, some source files has "bad" symbols, like 0x96, 0xBD, 0x97, 0x92, 0x93, 0x94. For example AXP_21274_Dchip.h has 0x96, 0x97, 0x92, 0x93 and 0x94 symbols. To compile under FreeBSD 10.3 stable I have replaced this symbols. After that I have compiled only one source file AXP_21264_CPU.c and I've got next errors:
cc AXP_21264_CPU.c -D_AXP_COMPILER_PRESENT_=1 -I ../comutl -I ../system -I ../cpu -D__x86_64__=1
In file included from AXP_21264_CPU.c:32:
In file included from ../cpu/AXP_21264_CPUDefs.h:30:
In file included from ../comutl/AXP_Configure.h:43:
../comutl/AXP_Utility.h:95:18: error: __int128 is not supported on this target
typedef unsigned __int128 u128; /* 16 bytes (128 bits) in length */
^
../comutl/AXP_Utility.h:100:9: error: __int128 is not supported on this target
typedef __int128 i128; /* 16 bytes (128 bits) in length */
^
In file included from AXP_21264_CPU.c:32:
In file included from ../cpu/AXP_21264_CPUDefs.h:31:
In file included from ../cpu/AXP_21264_CPU.h:100:
../cpu/AXP_21264_CboxDefs.h:68:10: fatal error: 'AXP_21264_to_System.h' file not found
#include "AXP_21264_to_System.h"
^
3 errors generated.
Can you help me with advice?
~Oleg
Edited by goodbyespy on April 13 2018 05:42 |
|
Author |
RE: Working on a new Alpha Emulator... |
goodbyespy
Member
Posts: 19
Location: Saint Petersburs, Russia.
Joined: 17.11.17 |
Posted on April 14 2018 05:55 |
|
|
Hello Jonathan! I have moved on the X86_64 (FreeBSD into virtualbox on MAC) and compiled one source file. I've got:
cc -c AXP_21264_CPU.c -D_AXP_COMPILER_PRESENT_=1 -I ../comutl -I ../system -I ../cpu
In file included from AXP_21264_CPU.c:32:
In file included from ../cpu/AXP_21264_CPUDefs.h:31:
In file included from ../cpu/AXP_21264_CPU.h:100:
../cpu/AXP_21264_CboxDefs.h:68:10: fatal error: 'AXP_21264_to_System.h' file not found
#include "AXP_21264_to_System.h"
^
1 error generated.
I couldn't found header file AXP_21264_to_System.h.
~Oleg |
|
Author |
RE: Working on a new Alpha Emulator... |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on August 11 2018 09:18 |
|
|
goodbyespy wrote:
I couldn't found header file AXP_21264_to_System.h.
~Oleg
Hi Oleg,
I have obsoleted that particular header file and replaced it with one in the cpu source files and one in the system source files. Please pull a more recent update from GitHub (it should compile, but I have made some changes that may cause compiler issues).
~Jon. |
|
Author |
RE: Working on a new Alpha Emulator... |
malmberg
Moderator
Posts: 530
Joined: 15.04.08 |
Posted on July 16 2019 08:14 |
|
|
Found an emulator on GitHUB with DECaxp.
I recommend that you change the configuration XML input file to use https://libvirt.org/formatdomain.html format.
This will make your emulator configurable by standard emulation and cloud management tools, many of them free and quite nice.
It looks like various parts of libvirt will work in a Cygwin environment.
For Linux, my target runtime environment would be under the LXD container project. This is how I run SimH/VAX now.
|
|
Author |
RE: Working on a new Alpha Emulator... |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on July 20 2019 07:22 |
|
|
I was actually thinking about going over to using JSON format. I'll have to look into this. It really depends upon what is available in libvirt to assist in my emulator. Right now, I'm on a bit of a hiatus, to clear my mind (I was spending too much time in the weeds and missing the bigger picture). I'm actually redesigning the caching architecture (I think I can make it more efficient and faster).
~Jon. |
|
Author |
RE: Working on a new Alpha Emulator... |
SysMan-One
Member
Posts: 1
Joined: 29.01.14 |
Posted on October 04 2019 09:29 |
|
|
Hi There!
What is a reason to use XML-shit instead of TXT ? |
|
Author |
RE: Working on a new Alpha Emulator... |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on January 20 2020 17:03 |
|
|
I used XML because I can read in a configuration as a document and not have to parse everything. Part of the reason to go over to JSON format is that I can have a schema that can validate the configuration file and generate more reasonable error messages.
BTW: After a siesta where I write an SDL compiler and started a BLISS one, I'm back to working on the AXP. I also moved the project over to GitLab, as GitHub was going to charge me because I was using GIT-LFS.
~Jon. |
|
Author |
RE: Working on a new Alpha Emulator... |
akhfar
Member
Posts: 5
Joined: 03.05.20 |
Posted on May 05 2020 19:42 |
|
|
how about SImh Alpha Emulator?? |
|
Author |
RE: Working on a new Alpha Emulator... |
malmberg
Moderator
Posts: 530
Joined: 15.04.08 |
Posted on May 09 2020 21:59 |
|
|
http://mailman.trailing-edge.com/pipermail/simh/2016-October/015894.html appears to be the last post about SimH Alpha. |
|