Introducing the new experimental Architecture inspired by ARMv8-A and Intel x86-64 - FISC
HomeDesignVHDLVirtual MachineLLVMStandalone ToolsTestbench KernelOperating System

Overview

What is FISC

FISC, which stands for Flexible Instruction Set Computer, is a set of multiple computer architectures with a main focus around the CPU - Central Processing Unit architecture design.

The final goal of this project is to subsequently create a classical computational system including Memory and I/O which can be used in multiple environments and implementations, such as FPGAs, ASICs and Virtual Machines.

The GitHub page for the complete project can be found here: github.com/FISC-Project

Important: The project is still under development.


How is the project organised

FISC can be more accurately described as a collection of multiple projects rather than a single project.

It essentially comprises the entire environment and ecosystem being designed for the CPU.

This means an execution environment was required to be developed in addition to the CPU.  In other words, FISC is the combination of the design of the Instruction Set, Microarchitecture and the tools being created for it such as an LLVM C compiler, assembler, disassembler, debugger and of course a  Virtual Machine developed both in VHDL and C++.

Motivations

This achievement was developed for a multitude of reasons.

The main motive was due to my personal need of developing a computer of my own. The desire of creating a machine that is close to what can be called a Turing Machine, is what truly motivated me to choose this project.

The secondary reason was due to the fact that this project is actually a final year singleton project that is being developed for the University of South Wales, in which I am taking the course of MEng. Computer Systems Engineering.

The final reason was to experiment by introducing a new kind of CPU architecture that comes close to the modern ARM and Intel architectures. This was done by combining some of the best features of both RISC and CISC worlds.

The name

As a soon to be engineer and programmer, it is common knowledge that we are perhaps one of the worst at naming things. FISC was named due to the fact that the CPU architecture is influenced by both ARM (RISC) and Intel (CISC).

Since this design shares some features of both worlds, the CPU was named FISC - Flexible Instruction Set Computer.

A more appropriate name would be appreciated if you happen to have a creative mind.

About me

My name is Miguel Santos, I'm a 3rd year student studying MEng. Computer Systems Engineering at the University of South Wales in the UK.

All I can say about me is that my favourite hobby is to program C and C++.

Specifications

The first iteration of this project develops a very simple R/CISC architecture and yet powerful design. In this first version, some of the specifications (both ISA and Microarch specs) can be found on the following table.

Specification name Description
Architecture type RISC with CISC features (mostly RISC)
Datapath width 64 bits
Core count Single core (1 core)
Computing model Von Neumann
Scalar and Vectorized (SISD on General purpose registers + SIMD on FPU)
In order execution
Stack + Register-Register + Register-Memory Machine
Thread count 1 thread
Pipeline depth 5 stages (IF/ID/EX/MEM/WB)
Pipeline schedule Static In-Order Single issue
Decode mechanism Microcoded (CISC feature)
Register count 32 GPR (General Purpose Registers); 13 SCR (Special Control Registers); Each register is 64-bits with some exceptions on the SCR
Branch Prediction support No
Prefetching and Predecoding support No
Cache count L1 only (this will vary in the future)
L1 Instruction Cache size 2KiB (subject to change)
L1 Instruction Size properties Set Associative, 2 Way, 32 Sets, 32 byte data block (2 x 32 x 32 = 2048 bytes = 2 KiB)
L1 Data Cache size 2 KiB (subject to change)
L1 Data Cache properties Set Associative, 2 Way, 32 Sets, 32 byte data block (2 x 32 x 32 = 2048 bytes = 2 KiB)
Virtual Memory support Yes
Virtual Memory TLB Cache size TO DETERMINE
Floating Point Unit support Yes
Interrupts and Exceptions support Yes
Instruction count 112 (including pseudo-instructions)
Arithmetic and Logic
Branching
Load and Store
FPU
CPU Status Control
Interrupts
Virtual Memory

The ISA - Instruction Set Architecture

Complete set of instructions
Instruction formats
Registers
Memory and data specifications
CPU Modes, flags and permissions
Condition codes for branching
Function calling conventions
(COMING SOON...)
Virtual Memory table structure
(COMING SOON...)

The Microarchitecture

High level design of the Microarchitecture

First pipeline stage: Fetch

Second pipeline stage: Decode

Third pipeline stage: Execute

Fourth pipeline stage: Memory Access

Fifth and last pipeline stage: Writeback

The Projects

FISC is composed of the following independent subprojects. (click on the GitHub and FISC logos to access both project pages)

The design of the CPU architecture itself.
A VHDL implementation of FISC.
A C++ Windows / Linux program that emulates the CPU.


An LLVM compiler backend that generates machine code for the FISC CPU.


A collection of programs that run on both implementations, such as benchmarks and user applications.


A set of important tools used for all implementations that are not related to LLVM, i.e. basic Assembler, Debugger, etc.
Future projects

Contact

You can email me at: santosmiguel25@gmail.com

You can also get in touch on GitHub: github.com/miguelangelo78

And LinkedIn: linkedin.com/in/miguelacs