Egghead.page Logo

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.