Amiga 1000 Chip RAM vs Fast RAM Memory Allocation Explained
The Commodore Amiga 1000 utilizes a unique memory architecture managed by the Exec kernel to distinguish between Chip RAM, accessible by both the CPU and custom chips, and Fast RAM, reserved exclusively for the CPU. This article explores the hardware limitations of the original 256KB configuration, the role of the Agnus chip in memory addressing, and how the operating system prioritizes memory allocation to optimize performance during multitasking and graphics processing.
The Architecture of Amiga Memory
The Amiga 1000, released in 1985, introduced a hybrid memory system that was revolutionary for its time. At the heart of this system is the custom chip known as Agnus, which acts as the address bus master. In the stock configuration, the Amiga 1000 shipped with 256KB of RAM. All of this memory was classified as Chip RAM. This designation means the memory is accessible by the Motorola 68000 CPU and the custom graphics and sound chips simultaneously. The allocation is managed physically by the bus arbitration logic within Agnus, which interleaves CPU access cycles with DMA cycles required for video display and audio playback.
Defining Chip RAM and Fast RAM
To understand allocation, one must distinguish the two memory types. Chip RAM is shared memory. Because the custom chips need to read sprite data, bitmaps, and audio samples directly from memory to generate output, the CPU must wait when the video beam is active. This contention slows down CPU access during active display periods. Fast RAM, conversely, is memory that the custom chips cannot access. It is connected directly to the CPU bus without interference from the video hardware. While the base Amiga 1000 motherboard did not include Fast RAM, the architecture supported it via expansion ports. When present, Fast RAM allows the CPU to execute code and store data at full speed without waiting for the video beam refresh cycle.
Exec Kernel Memory Management
The allocation of these memory types is logically handled by the Exec
kernel, the core of the AmigaOS. Exec maintains a linked list of
available memory regions. When a program requests memory, it specifies
the required type using flags such as MEMF_CHIP or
MEMF_FAST. The memory manager scans the available list to
find a suitable block. If a program requests Chip RAM for graphics
buffers, Exec allocates from the lower 2MB of address space accessible
by the custom chips. If the request is for general computation, Exec
prioritizes Fast RAM to ensure maximum CPU throughput. If Fast RAM is
exhausted or unavailable, the system falls back to allocating from Chip
RAM, accepting the performance penalty.
Physical Limitations and Expansion
The original Amiga 1000 hardware limits Chip RAM to 512KB maximum due to the addressing capabilities of the original Agnus chip. Since the stock unit came with 256KB, users often installed memory expansions to reach the 512KB limit or to add Fast RAM via sidecar expansions. The system manages these additions by mapping them into the address space during boot. Kickstart, the Amiga’s ROM-based operating system initializer, detects the memory configuration and builds the initial memory lists for Exec. This ensures that even with heterogeneous memory configurations, the operating system can efficiently route data to the correct physical memory based on the needs of the running software.