24‐point summary of the Magic 1 computer architecture - retrotruestory/M1DEV GitHub Wiki
Note
All annotations marked as NOTE are comments straight from Bill
Below is the 24-point summary of the Magic 1 computer architecture:
- The architecture is based on a one-address model, where one operand is implicit, simplifying instruction design.
Note
Yes, it started off that way - but I expanded it somewhat. In a true one-address accumulator model, register A would be involved in nearly all instructions. However, for more efficiency I added B and C registers. C is pretty limited, but B acts as an added accumulator for loads/stores as well as limited arithmetic using the “lea” instruction.
- The system supports data operations in 8-bit and 16-bit widths, offering computational flexibility.
- Each process has a virtual address space with a capacity of up to 128KB.
- The virtual address space is divided into 32 data pages and 32 code pages, each sized at 2KB.
- The physical address space primarily uses a 22-bit address; however, when considering device mappings, it effectively uses 23-bit.
- Each process uses a dedicated page table consisting of 64 entries, each 16-bit in size.
- The page table is stored in separate memory and is accessed via a base pointer allocated for each process.
- Memory implementation is realized through memory mapping, where peripheral devices share the same address space as main memory.
- The system supports external interrupts, allowing rapid response to hardware events.
- Direct Memory Access (DMA) is integrated, enabling direct data transfers without CPU intervention.
Note
Technically yes, but the only usage of the DMA model is the front panel. More sophisticated CPUs will allow devices to use DMA mode to transfer data to and from devices.
- The processor employs a microcode-driven control mechanism for fine-tuned instruction sequencing and optimization of performance.
- There is a balanced trade-off between simplicity (one-address architecture) and performance (additional registers and complex addressing modes).
- The design includes both atomic operations and complex data manipulation, supporting efficient parallel and multi-threaded computing.
Note
Magic-1 doesn’t currently do multi-threading, but it could. I added a special atomic instruction, ldclr.8 a,(b), that could be used to build a semaphore to guard critical regions in code. Perhaps some day I’ll use it.
- Sophisticated scheduling of microcode instructions allows the system to adapt to various programming paradigms.
- The system's memory management unit (MMU) efficiently handles virtual-to-physical address translations.
- Hardware-level support for concurrency ensures effective multitasking and high throughput under multiple process loads.
- The architecture integrates specialized control units to manage IO devices and system buses.
- The instruction set architecture (ISA) is optimized for modern high-level programming languages, facilitating efficient translation of high-level code into hardware operations.
- The system is designed to balance the simplicity of hardware logic with the complexity required by modern applications.
- Dedicated registers and specialized addressing modes enhance the speed and accuracy of operations.
- The architecture anticipates flexible memory management, which is crucial for implementing multiprocessing.
- Microcode scheduling technologies allow the system to adapt to changing workloads.
- The system design considers data security aspects through strict management of the memory address space.
- The overall compromise between theoretical elegance and practical implementation ensures future development and enables deployments in modern computing systems.
This summary provides a detailed technical overview highlighting both the strengths of the Magic 1 architecture and its constructive compromises.