Home | Slides (.tar.gz)

Porting Linux to the Digital Alpha

A presentation given at the Boston Computer Society Linux & Unix User Group meeting, March 15, 1995.

Jim Paradis / paradis@sousa.amt.tay1.dec.com
Principal Software Engineer, Alpha Migration Tools Group / Digital Equipment Corporation

The slides from this talk are available here in the file slides.tar.gz

What is Linux/Alpha?

Why Linux/Alpha?


Project Goals

Linux/Alpha should be:
Small
Minimal runtime on 1-2 floppies, full system on 340Mb disk
Text-only system in 8Mb memory, X-based system in 16Mb memory
Cheap
Linux/Alpha will be distributed under GPL (ftp://ftp.dec.com/pub/DEC/Linux-Alpha)
DEC may develop added-value components for sale (e.g. high-performance X servers), but a fully functional system will be free.
Compatible
Source-compatible with Linux/Intel
Investigating binary compatibility options with Linux/Intel
Fast
Should not unduly hamper CPU performance
It's an Alpha; what can I say?

Our port vs. Linus' port


Hardware Support

DEC 2000 AXP/DECpc 150 AXP (aka Jensen)
Adaptec 1742 SCSI
Floppy, keyboard, text-mode VGA
DECchip Evaluation Boards
Floppy, keyboard, text-mode VGA
Digital AXPpci/33 Motherboard
Floppy, keyboard, text-mode VGA
Coming Soon:
Adaptec 1542 SCSI
NCR 53C810 SCSI
Care to contribute? 8-)

Alpha vs. Intel

Similarities:
Little-endian
Support 32-bit integers & pointers
Paged memory management
Differences:
RISC vs. CISC
Alpha does not have byte/word memory access instructions
OSF PAL supports 7 interrupt levels, Intel has two (cli/sti)
Intel has segmented as well as paged memory management
Alpha has lighter-weight procedure-call mechanism than Intel
Alpha has more register context to save than Intel. Intel has more non-register context to save than Alpha.

Linux/Alpha: Design Decisions


Technical Challenges

Kernel - context switching
Intel gets complete switch by calling task gate
OSF PAL switches minimal context, OS must switch rest. Most context lives in task_struct or on kernel stack.
Memory Management
Alpha 3-level page table "wastes" 2 pages per process; significant with big (8K) pages and small memory (8Mb system has only 1024 pages!) We have an answer 8-)
Memory-management algorithms were portable, but implementations were not. We had to "rewrite" much of memory.c, keeping the algorithms but varying the details (Linus redid the memory management in 1.2 to make the code more general).
File System
Executable loading, mostly detail work
Other than that, filesystem worked flawlessly from the beginning!
Device Drivers
Bus access on Intel is straightforward (inb/outb, bus memory is physical memory)
Bus access on Alpha requires glue logic in both hardware and software ("magic swizzles")
Many PC devices come with Intel initialization code in onboard BIOS. Intel PCs, of course, will run this code before Linux boots. Alpha PCs won't.
DMA engines operate differently on PC-class systems and on Alpha systems
Problems need to be solved only once; other drivers "should" fall into place

Project Status


Future Directions

Home | Slides (.tar.gz)