1 Page Register
分为Address Register和Description Register,在“存管系统”起效后使用。
Kernel和User态各有8组Register,分别完成8页的“物理---逻辑”地址映射。
比如,代码中对Address Register有如下的声明:
Kernel User
1447 KISA0 = 172340 1451 UISA0 = 177640
1448 KISA6 = 172354 1452 UISA1=177642
其实,这些Address Register是连续编址的,比如,以Kernel为例:
KISA0 = 172340 KISA1 = 172342 KISA2 = 172344
KISA3 = 172346 KISA4 = 172350 KISA5 = 172352
KISA6 = 172354 KISA7 = 172356
由于KISA0和KISA6使用较多,故进行了定义。而其他的Address Register也可以通过这KISA0、KISA6进行访问。
Page Address Register 低12个bits(称为PAF)有效,记录的是以block(32 Words、64 bytes)为单位指定地址,
即该逻辑页页首映射到的物理地址。
【思考题】:PDP11-40的存管系统最大支持多大的物理内存?
Page Description Register:
(1)最常用的是ACF(1~2bit),如:
00 不可访问
01 Read
02 Write
11 Read and Write
mov $6, … Read and Write
(2)PLF(8 ~ 14 bit)该物理page的大小(以block为单位)
多数情况下为8K,为:
mov $77406 4k words, Read and Write
现在可以对PDP11的物理page有更进一步的了解了。PDP11的物理内存其实是连续的地址空间,所谓的物理page
在某种程度上是一个逻辑上的概念,是通过刚才的Page Register指定的起始地址和长度来指定的。换言之,我们
可以(但最好不要这么做)指定两个overlap的物理page。进一步,我们可以认为物理内存是由许多blocks组成的,
而这些block从0开始连续进行编号,每个Block直接对应一段物理内存。因此,通过block号我们可以直接操作
物理内存。
2. Page 状态 Register——SSR0 SSR2
SSR0和SSR2(SSR1在PDP11/40中没有使用)主要用于Page硬件中断处理。
SSR0
Bits 15~13用来说明中断原因,如:
(1) 违反存取限制;
(2) Page越界;
(3) 写保护
Bit 8——当Bit 0和Bit 8置位时,表示进入到“Page control information”状态,此时,SSR0其他Bit均无效。该种状态用于
进行Page状态的监控。
Bit 5~6用于说明中断发生时的CPU mode(00:kernel;11:user)。
Bit 1~3:page Number(0~)
Bit 0:“存管系统”启动indicator
SSR2为内部使用的只读Register,记录每条存取指令的virtual address,我们一般不会直接操作它。
博客地址: http://blog.csdn.net/cszhao1980