Magic-1技术概览

    Magic-1是一位名叫Bill Buzbee的朋友采用74系列TTL集成电路和普通电线以纯手工制造的CPU,该CPU使用了200余块74系列集成电路。

    Magic-1的基本架构是单地址,8位和16位操作数。每个进程可以得到128K的地址空间,其中包括32个2K的代码页和32个2K的数据页。每个进程有一个具有64个16位入口的页表,存放在专有的存储区中,并通过一个预处理页表的基指针进行定位。I/O通过内存影射来实现,并且支持现有的外部中断和DMA。位和字节顺序采用大尾数法。

    为了兼容现有的各种语言,Magic-1中存在一组丰富的地址模型和地址生成指令。另外因为作者非常喜欢“比较分支”和“测试分支”,因此它们也占了很大的操作码空间。为了将操作码压缩到8位,Magic-1放弃了清晰的编码,而是使用了大量的微代码。

可见的寄存器

  • A - 累加器。可以定址为8位或16位。这意味着它可以用于很多操作,包括一般的基于寄存器的load/store和内存操作等。
  • B - 通用load/store基址寄存器,在ALU或内存操作中用作源操作数寄存器,在load等操作中用作目标寄存器。
  • C - 技术寄存器,用于块传送和变量移位操作。
  • MSW - ALU标志,包括进位(C)、结果为零(Z)、符号(S)和溢出(V);控制标志,包括模式(M)(0位特权模式,1为用户模式)、允许分页(P)和中断允许(EI)。另外,当出现内存错误时,还会出现一个状态位——数据(D),用来描述错误地址是指向数据页还是指向代码页。
  • DP - 全局数据指针,用于大部分数据引用的基指针。
  • SP - 堆栈指针,每次压入和弹出16位数据。
  • SSP - 特权级堆栈指针,用在特权模式中。
  • PC - 程序计数器
  • PTB - 用户模式中当前进程的页表基指针。特权模式的页表基指针被硬编码为0x0000,当然是相对于特定的页面,而不是物理内存。

控制线路

  • IRQ0、IRQ1、IRQ2、IRQ3、IRQ4、IRQ5 - 外部中断请求,IRQ0具有最高优先级,IRQ5具有最低的优先级。
  • DMA_REQ - 当需要对地址和数据总线进行控制时,向该线路发送该请求,并等待DMA_ACK。这时你可以对总线进行控制,但必须保持DMA_REQ电位,直到完成控制。
  • DMA_ACK - 参见上一条。
  • RESET - 该线路能导致:
    • 内部的内存地址寄存器(MAR)被清零,同时PC被置为0x0000
    • SP清零
    • 进入特权模式
    • 关闭分页
    • 禁用中断
    • 条件标志(C、S、V、Z)被复位
    • IRQ0-IRQ5被复位
    • UARTS复位
    • IDE接口复位

地址模式

    忽略一些特殊目的的指令,累加器(寄存器A)是几乎所有一元操作的源寄存器和目的寄存器,在二元指令中寄存器B被用作第二源寄存器。在内存操作和内存地址生成操作中,寄存器A和寄存器B均可用于源寄存器或目标寄存器。

    Magic-1支持的地址模式包括:

  • Register Indirect with offset
  • Frame local with offset
  • Global with offset
  • Immediate
  • Push
  • Pop

分页

    Magic-1拥有22位物理地址,其中高5位用于选择一个内存页,因此可以有32个内存页;每个内存页的大小固定为2K,因此地址中的低11位用于指定页面中的逻辑地址。因为采用了独立的数据页和代码页,每个进程可以同时拥有32个数据页和32个代码页。

    页表的每个入口都是16位宽,其中低11位用于选择页面,高3位表示页面的属性,其他2位保留。页面的标志包括:

  • P - 页面存在
  • W - 页面可写
  • M - 指出该页是RAM页还是设备页

指令集

    Magic-1指令格式为1字节操作码后跟至多3字节操作数,因此共有256条指令。这些指令包括加载/存储、地址操作、特殊寄存器访问、算术运算、控制流程和系统操作等几类。

    此外,Magic-1还提供了256个微代码,范围从100~1FF,存放在PROM中。

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值