170 likes | 284 Views
The proposed ISA experimentation tool is designed for COE-308 to enhance understanding of Instruction Set Architecture (ISA) and architecture design through hands-on experience. Unlike existing assemblers that lack support for ISA modifications and performance metrics, this tool enables full definition of ISAs, datapath components, and instruction execution flows. It allows students to simulate program execution, measure performance metrics, and explore trade-offs in design, facilitating deeper learning of ISA complexities, performance issues, and memory architectures.
E N D
Educational Computer Architecture Experimentation Tool Dr. Abdelhafid Bouhraoua
Needs • COE-308 course material is mainly centered around ISA and Design. • COE-308 course material focuses on: • Performance issues around the ISA. • Design of the Datapath and Control • Simple Memory Architecture • Existing tools are mainly assemblers • Need an ISA/Datapath/Memory Experimentation tool
Existing Capabilities • MIPS Instruction Set Assembler • SPIM, DLX and others • SPIM and DLX • Enable programming assignments only • No support for ISA modification • No Performance Measurement • No Datapath design trade-offs experimentation capabilities • Others • Very advanced research tools that are less suitable for entry-level education purpose
General Requirements • Ability to fully define ISAs • Hardware elements • Instruction Sets • Ability to describe instruction execution flow. • Ability to define internal datapath blocks • Ability to simulate execution of sample programs • Ability to measure performances metrics (execution time)
Defining ISAs • Define Hardware elements and characteristics visible at the programmer level • Registers • Operations • Execution flow • Define Instruction Set • Instructions • Instruction Description • Automatic Generation of the Assembler and Simulator for the target machine • Includes syntax check • Includes execution traces • Includes measurement of certain metrics and execution statistics
Fixed Choices • Single Execution Unit • No Floating Point Unit (at the beginning) • Two separate Instructions and Data Memory Access Buses • Single Execution Mode • No privileged/supervisor mode support • Single Instruction Set • No Dual instruction set support • Single Hardware Interrupt
Organization • Organized as Several Areas: • Objects Area • Instruction Set Area • Datapath Area • Assembler Area • Simulator Area Each Area is linked to the others through the use of its defined parameters in the definition of the other area parameters Example: A Register, defined in the Objects area can be referenced in the definition of an instruction in the Instruction Set Area
Defining the Objects • Execution Unit • Clock Cycles per Instruction • Single Clock Cycle per Instruction • Multiple Clock Cycles per Instruction • Pipelined/non-pipelined • Pipeline stages • Number of Operands per instruction • 1, 2 or 3 operands per instruction • Registers • Single or Array • If Array define its indexes (From k to n+k) • Size (number of bits) • Label • Operations • Select Operations used by Instruction Set from a set of predefined operations (+, -, x, shift, and, or, …) • Define new operations as combination of existing operations
Defining the Instruction Set • Mnemonics • Label • Number of Variants • Addressing Modes • Addressing mode selection for every variant • Possible Operands Selection for every operand from the list of already defined registers or addressing modes • Description • Cycle per Cycle • Select operation (from list of defined operations) • Use non-visible (to the programmer) temporary registers or hardware functional blocks (defined in datapath area) in description
Defining the Datapath • Use Existing Hardware Blocks from Library • ALU • Register File • Muxes • Customize the blocks • Size • Define new blocks using hierarchical definitions • Define block Connections • Text Definition • Possible Definition of Buses • Buses can be Tristate • Map Objects to Hardware Blocks
The Assembler • Choose the Syntax for representing • Instruction line • Comment • Data Definition • Static Memory Allocation • Every Addressing Mode used in the ISA • Choose Policy for Program location in Memory • Editor for writing programs • Assembler translates text programs into object code referencing Instruction Descriptions of Instruction Variants
The Simulator • Executes object code • Uses a flat memory model • Define Address Boundaries (for debugging) • Detects (during execution) • Structural Conflicts • Dependencies • Contradictory Definitions • Integrates measurement of important metrics • Code density • Execution Time • Program Size
Summary • Provides the students with a powerful experimentation tool • Designed to Show the dependenciesthat exist between: • The Instruction Set • The Operations • The Hardware Elements • The Datapath • Suitable for Pipelined and Non-pipelined Architectures • COE-308 and COE-205 (Computer Organization) as well
Usage • Assignments can be: • Given an Instruction set; define a possible implementation (with provided guidelines) • Given a given datapath; define a suitable instruction set • Evaluate the performances of two different implementations of the same Instruction Set
Aspect • Toolset composed of multiple interacting independent software module • Some are GUI-based • Some are Text/Command Line based • Define/Use Existing language to describe: • Instruction Set (Assembly side) • Datapath • Data Entry • Probes
Extension of Usage • Extra module for Verilog/VHDL generation • Generation of Datapath Unit Verilog model • Generation of Control Unit Verilog model • Generation of Testbench Verilog Model • Generation of Memory Verilog model (to accept programs) • Interface between assembler and Verilog Model
Conclusion Computer Architecture Experimentation Toolset for ISA/Processor Design and Education. Easily Realizable if developed in modules (each module developed as a Senior Project) If Possible: Collaboration with ICS department (software intensive) project. Web-based Interface ?