内存推移理论及其实验

2018-05-16 03:16李凯凯欧阳山周时强
关键词:窗框存储器内存

李凯凯,金 翊,欧阳山,周时强

三值光学计算机[1-10]具有数据位众多、按位可重构、按位可分配等应用特色[11-15],适合处理大批量数据[16-18].正是由于这些特性,使得三值光学计算机对存储器有特殊要求:一是能够在处理器与非易失性存储器之间高速交换大量数据;二是需要大容量的随机访问存储器,目前的容量要求为数百GB或TB量级,且在这方面的要求会越来越高.由于在传统的电子计算机存储体系中,非易失性存储器(TB级容量的外存)与CPU之间的数据交换需要由随机访问存储器(GB级容量的内存)来中转,故难以满足三值光学计算机对存储器的特殊要求.因此,需要为三值光学计算机研发具有大容量、高访问速度、非易失且可以被随机读写的新型存储器系统.

为满足三值光学计算机对存储器的新需求,2013年上海大学三值光学计算机研究团队提出了双空间存储器结构和理论[19-20].这种新的存储体系将非易失性块地址空间和随机访问字地址空间落实到由非易失性随机访问存储器(non-volatile random access memory,NVRAM)构成的同一个存储器实体上,其中最关键的是将传统内存空间映射到巨大的双空间存储器不同段落上的新理论——内存推移理论.双空间存储器及其内存推移理论已经在理论和模拟实验中获得成功,因此用实物来实现双空间存储器和内存推移理论成为最终证实这一新型存储体系和相关理论的关键,也是在实践中完善双空间存储器理论的关键一环.本工作详细介绍了所构建的第一个内存推移寄存器组及所完成的内存推移操作.由于双空间存储器和内存推移理论可以与各种处理器配合,将其应用于电子计算机后,会彻底消除大量数据和程序在内存与外存之间的复制过程,有效提高电子计算机的效率,并且能够自然地实现对随机写入数据的非易失性保存,非常有利于实施目前广受关注的内存计算技术.因此,在本工作给出的实验研究中以常用的嵌入式系统[21]S3C2440为处理器,通过将一个bank的2 MB内存空间在1 GB随机访问字空间上任意推移,证实了双空间存储器理论和内存推移理论在理论上的正确性和实践上的可行性.

1 基础理论

1.1 双空间存储器

文献[19-20]给出了双空间存储器的详细理论、结构和技术,并指出:双空间存储器是利用NVRAM构造的新型存储系统,同时具有非易失存储特性的块空间和可随机访问的字空间.双空间存储器将内存空间和外存空间落实在同一个存储实体上,块空间在双空间存储器上安装的程序和保存的数据可以通过字空间运行和随机访问,完全省去了程序和数据在内存与外存之间的拷贝过程,从而大幅度提高了计算机的运行效率.文献[19]还指出:如果将操作系统、程序注册表等系统运行的基本程序和数据放置在CPU可以永久访问到的字空间范围——不可闭窗(详情见2.5节)中,就可省去开机时引导操作系统的过程;如果在不可闭窗内增设一个关机状态表来记录关机时刻CPU的运行现场,就可在下次开机时从关机状态表迅速恢复上次关机时CPU的现场,实现开机后CPU立刻接续上次关机时的工作,使开关计算机如同开关电灯.

由于NVRAM技术的进步,尤其是2015年8月公布的3D Xpoint技术提供了性能卓越的NVRAM器件,用NVRAM构造计算机的存储器已成为未来的潮流.Intel公司已于2016年4月宣称其下一代PC——OPTANE将使用NVRAM来构造内存.考虑到64位CPU的内存地址线已经多达64根,而理论上OPTANE的内存可达264B,即16 EB容量(虽然这个内存对于PC来说太大了,即便只使用40根地址线,也能构造出1 TB的超级内存).超级内存足以容纳PC的所有程序和数据,而不再需要外存,但是要把当前存储于U盘、光盘、硬盘和网络上的以块为单位来组织和管理的文件装入这个超级内存,就需要在超级内存上构造出块空间.一旦再构造了块空间,超级内存就在事实上成为了双空间存储器的一个实例.

1.2 内存推移理论

三值光学计算机研究团队在构造双空间存储器时,发明了将内存空间自动映射到巨大的双空间存储器字空间上任意区段的技术,称为内存推移理论.这项发明的核心是构造了如图1中点划线框内所示的推移锁存器组以及相应的操作技术.

图1推移锁存器组结构Fig.1 Structure of the latch group

图1 中的处理器可以是任何种类的CPU或内存访问主控设备,此处采用常见的简单处理器——嵌入式系统S3C2440.假设图1中处理器的内存地址线有n条(AB(n−1)∼0),其中低序号的s条地址线(AB(s−1)∼0)与双空间存储器中低序号的s条地址线(CAB(s−1)∼0)相连接;而其余的n−s条高序号地址线(AB(n−1)∼s)连接到推移锁存器组输出口译码器Yc的输入端I(n−s);处理器的数据总线DB连接到双空间存储器的数据总线CDB,其中m+1条数据线(DBm∼0)还连接到各个推移锁存器(除推移锁存器0外)的数据输入端DB.

图1中的推移锁存器组包含2n−s个推移锁存器,设定编号为推移锁存器0∼2n−s−1,还包含一个输出口译码器Yc和一个写入口译码器Yr.推移锁存器0的构造与其他推移锁存器不同.它没有数据输入端DB和写入控制端IE(—表示低电平有效),因此其设定值(图1中均设定为1)不可能被修改,但数据输出口Q及其输出控制端与其他推移锁存器相同.推移锁存器1∼2n−s−1的结构完全相同.它们的数据输入口DB都连接到处理器数据总线的DBm∼0上.当某个推移锁存器的写入控制端IE有效时,DBm∼0上的数据将写入该推移锁存器并被保存,从而修改该推移锁存器的值Dm∼D0.

Yc的每个输出端P i(i=0,1,···,2n−s−1)分别控制一个推移锁存器的输出控制端OE,故称Yc为输出口译码器.Yc的输入端I(n−s)连接处理器内存地址线的高序号部分AB(n−1)∼s,同时其有效使能端Co接地,于是Yc总有效.因此,处理器内存地址线的高序号部分AB(n−1)∼s的编码i总是被Yc译码.译码完成后,Yc的输出端P i使推移锁存器i的输出控制端有效,于是推移锁存器i将其保存的m位数据(Dm∼D0)经数据输出口Q送到双空间存储器地址线的m根高序号地址线(CAB(m+s−1)∼s)上.推移锁存器i将处理器送出的内存地址AB(n−1)∼0自动映射为双空间存储器的CAB(m+s−1)∼0地址,而处理器本身完全不会受到影响.当处理器对内存空间的访问维持在低序号地址线AB(s−1)∼0上的情况发生改变,而高序号地址线AB(n−1)∼s的值i不变时,推移锁存器i保持被选通.此时,双空间存储器的高序号地址线(CAB(m+s−1)∼s)的值不改变,处理器对AB(s−1)∼0给定的内存地址范围的访问全部被推移锁存器i自动引导到由CAB(s−1)∼0给定的双空间存储器范围内.因此,称内存空间范围AB(s−1)∼0为映射窗,称双空间存储器范围CAB(s−1)∼0为窗壁——刚好能安置一个映射窗的墙壁.一个窗壁上的所有存储单元的高序号地址线CAB(m+s−1)∼s相同,故选用这个值作为窗壁编号.当一个推移锁存器被选通后,其值Dm∼D0被送上CAB(m+s−1)∼s,因此Dm∼D0本质上就是窗壁编号.推移锁存器通过保存的窗壁编号将映射窗引导到指定的窗壁.针对这一过程,可以形象地认为每个推移锁存器有一个虚拟的存储空间,称其为窗框,推移锁存器的编号i就是对应的窗框编号.于是,推移锁存器i的值为Dm∼D0,就是将第i号窗框安置在Dm∼D0号窗壁.给每个推移锁存器赋不同的值,就是将所有的窗框安置在了不同的窗壁上.内存地址线的高序号部分AB(n−1)∼s的每个值都会选择一个推移锁存器,等同于选择一个窗框,因此所有窗框的容量之和正好就是内存空间的大小.AB(n−1)∼s的改变就是把映射窗从一个窗框移到另一个窗框——映射窗推移.显然,映射窗无法到达没有窗框的窗壁,这就是引入窗框概念的根本原因.

Yr的每个输出端P j(j=1,2,···,2n−s−1)分别控制一个推移锁存器的写入控制端,故称Yr为写入口译码器.Yr的有效使能端C与非门F的输出端相接,F的输入为双空间存储器的高序号地址线CAB(m+s−1)∼(n−s),同时Yr的输入端I(n−s)连接双空间存储器低序号地址线CAB(n−s−1)∼0. 当访问双空间存储器的高序号地址线CAB(m+s−1)∼(n−s)不全为1时,Yr无效,Yr的所有输出端P j都输出1,所有推移锁存器的写入控制端均无效,所有推移锁存器都不接收DBm∼0上的值,则推移锁存器自身保持的数值都不会被改写.仅当CAB(m+s−1)∼(n−s)全为1时,Yr的C有效. 这时Yr输入端I(n−s)收到CAB(n−s−1)∼0上的地址码j,相应地使其输出端P j为低电平,其他输出端均为高电平.于是推移锁存器j的写入控制端有效,该推移锁存器j就会接收处理器数据总线DBm∼0上的值来修改自身保持的数值,而其他推移锁存器则无改变,推移锁存器j对应的窗框j被移动到新的窗壁上——窗框推移.考虑到各个推移锁存器的写入控制端在CAB(m+s−1)∼(n−s)全为1时有效,可知各推移锁存器的写入控制端被安排在双空间存储器高序号地址线的一段连续区域(CAB(n−s−1)∼0的取值范围),称这段地址范围为推移矢量表.

显然,内存推移理论能够显著减少处理器随机访问双空间存储器所需的地址线数目,无需内存分页管理技术,可方便地实现多处理器共享/分享存储器技术.这意味着内存推移理论将降低CPU的硬件复杂度和内存管理复杂度,增加CPU使用存储器的灵活性.

2 实验系统设计

2.1 实验目标

本工作通过以下具体实验验证了内存推移理论[22-24]:①改变处理器访存地址的低位,验证映射窗的存在和处理器透过映射窗对双空间存储器的随机访问能力;②改变处理器访存地址的高位,验证映射窗推移技术;③修改推移锁存器的值,验证窗框推移技术;④修改推移锁存器0的操作,验证不可闭窗的存在.

鉴于本工作的研究目标是内存空间在双空间存储器字空间上的推移理论,而该理论与双空间存储器的块空间无关,故不考虑双空间存储器中块空间的各类问题.

2.2 双空间存储器设计

内存推移理论的功能是将较小的内存空间分时映射到大容量双空间存储器的不同区段.本实验的目标在于验证这项理论的正确性和可行性,因此所设计的双空间存储器只要比被推移的内存空间总容量大数百倍即可.鉴于本实验设定的内存空间总容量为2 MB(S3C2440处理器内存空间的一个bank),故选用1 GB的双空间存储器.相应地,设计该双空间存储器地址线为30根,定义为CAB29∼0.为简化实验操作,还约定只使用占连续4个字节地址的32位数据总线宽度.

为节约实验成本,在保证实验目标不受损害的前提下,本实验在多种NVRAM中选用常见的型号为S29GL01GNOR Flash芯片来构建双空间存储器.这种芯片的存储容量在字模式下为64 M×16位,故本实验用2片S29GL10G芯片经地址线并接且数据线并列后,形成64 M×32位的存储芯片对,再用4对存储芯片构造出1 GB的双空间存储器.由于本实验是以连续4个字节的32位宽度来使用数据总线,故无需使用处理器的AB0和AB1地址线,而将处理器地址线AB2连接到双空间存储器地址线的CAB0.依此类推,处理器地址线ABn连接双空间存储器地址线CABn−2.

2.3 推移锁存器组设计

推移锁存器组是连接CPU与双空间存储器字空间的重要纽带.对于CPU来说,推移锁存器组屏蔽了双空间存储器的容量大小;对于双空间存储器来说,推移锁存器组屏蔽了CPU的寻址能力.因此,只要有合适的推移锁存器组,CPU就能够和双空间存储器协同工作.因此,推移锁存器组的结构要由系统中的CPU与设定的双空间存储器共同决定.

推移锁存器组中包含的锁存器数量等于窗框的数量.从图1中可以看出,窗框的数量与映射窗的大小存在制约关系,映射窗变大一倍,窗框的数量就减少一半.在本实验中,被推移的内存空间总容量为2 MB,若设定映射窗大小为218B(256 KB),则相应的窗框数量为2(21−18)个,即设定推移锁存器组包含8个锁存器.

每个推移锁存器的有效锁存数据位数取决于双空间存储器的窗壁数量.对于给定的双空间存储器,窗壁的数量由窗壁的大小来决定,而窗壁的大小等于映射窗的大小,故本实验的窗壁大小为256 KB.于是1 GB的双空间存储器就有2(30−18)=4 096个窗壁,编号为0∼4 095,因此每个推移锁存器要有12位.本实验采用16位的锁存器74ACT16373来构造推移锁存器,将其低12位作为有效值,高4位弃之不用.

2.4 推移指令设计

对推移锁存器的操作分为映射窗推移和窗框推移两种.在系统设定完毕后,每当处理器给出的内存地址高位部分发生改变,系统就自动完成映射窗推移,无须为此设置专门的指令.而窗框推移必须改变相应的推移锁存器的值,这是对特定地址的赋值操作,对应着一条特定的赋值指令,即推移指令.在系统设定中,每个推移锁存器都有独立的写入端口,且每个写入端口都与双空间存储器的一个随机访问地址相关联,故称该地址为推移锁存器的写入端地址[20].此时,对推移锁存器的具体赋值操作如下:CPU给出一个特定的内存地址,其高位部分选择特定的不可修改推移锁存器,即将映射窗推移到一个特定的窗壁,而该内存地址的低位部分则在该窗壁中选通一个可修改推移锁存器的写入端口,并通过赋值指令修改该推移锁存器保持的值.于是,推移指令的形式为向内存空间特定地址赋值的语句,且给出的新数值为目标窗壁的编号.

本实验中的处理器部件选用基于S3C2440制作的TQ2440 Core 2.0核心板.S3C2440处理器采用I/O端口和存储器统一编址方式,指令使用32位寻址,但仅设置30根外部存储器的逻辑地址线,对应的地址范围为0000 00000∼3fffffffH,故最多可外接存储器1 GB,且指令中32位地址的最高两位无效.将30根外接地址线分为两组:低27根以地址线的形态给出,称为A26∼A0;高3根则以8根bank使能线的形态给出,称为bank7∼bank0,即将外接存储器的1 GB空间分成8个128 MB的bank,由指令中的A29∼27来选通各bank的使能端,其中选通bank1使能端的地址是A29∼27=001B.

TQ2440 Core 2.0核心板对外提供了21根地址线A[20∶0]和bank1∼bank5以及bank7的使能线,因此该核心板允许给bank1∼bank5以及bank7各外接2 MB随机访问存储器.在不影响实验目标的前提下,为方便设计,本实验仅将bank1的2 MB外接随机访问存储器空间用于推移操作的内存空间,所以A[20∶0]就是本实验的处理器地址线AB20∼0.对于这2 MB外部扩展内存,S3C2440的地址线A26∼21无意义,因此默认为00 0000B.于是,当S3C2440处理器访问本实验所设定的内存空间时,在指令中必须给出如下的的32位地址:0800 0000H∼081fffffH,此处称其为访存地址.

在本实验中,通过地址线的具体连接方式将8个推移锁存器的写入端地址设定在双空间存储器字空间的3fffffe0∼3fffffff区域,即设定在第4 095号窗壁地址最高的32个字节中,并设定通过推移锁存器0访问0fffH号窗壁.于是,当改写推移锁存器的值时,必须先保证推移锁存器0中保有0fffH值,再用写入访存地址0803ffe0H∼0803ffffH范围的指令来改写相应的推移锁存器,从而将对应的窗框移动到指定的窗壁.由于S3C2440处理器的A0和A1地址线没有参与双空间存储器寻址,故每个推移锁存器的写入端有4个连续的访存地址(见表1),其作用完全相同,本实验只使用写入端地址1.推移锁存器2的写入端访存地址为0803ffe8H,由于本实验总是以连续4个字节的32位宽度来使用数据总线,因此将2号窗框推移到第1 024号窗壁上的推移指令为*(unsigned int*)(0x0803ffe8)=0x0400,其中0x是十六进制数据前缀.

表1 推移锁存器写入端地址Table 1 Write end addresses for the latch group

2.5 不可闭窗设计

计算机系统复位后,将自动执行位于特定地址的第一条指令,并由此转入系统的初始化程序,而在系统运行时,又需要将常用程序或者常用数据驻留在内存中,以确保较高的访问速度.在使用双空间存储器的新型电子计算机中,内存空间对应所有窗框组成的空间.而程序和数据都位于窗壁上,于是驻留内存的程序和数据对应的窗壁永远可以被随机访问.这意味着该窗壁上的窗框永久存在,不得被移走.这种窗壁被称为不可闭窗,其对系统运行至关重要.

由于本实验使用的是掉电易失性锁存器,为了弥补这一不足,将采用以下方案:先对选定的推移锁存器写入选定的不可闭窗的窗壁编号,然后手动将推移锁存器的写入控制端接入低电平,使该推移锁存器成为不可修改,对应的窗框就永久驻留在选定的窗壁上,使得该窗壁成为不可闭窗.本实验选定4 095号窗壁为不可闭窗,持续占有0号窗框,于是对推移锁存器0实施上述操作.

2.6 实验板电路设计和制作

本实验的主要目标是用实物系统来验证双空间存储器的核心理论——内存推移理论.由于双空间存储器是三值光学计算机研究团队在2013年提出的新型存储器理论和结构,在本实验成功之前尚没有实物存在.因此,本实验将设计和制作出第一个真实的双空间存储器系统并实施内存推移操作.

在规划本实验时,考虑到构造实际系统的可靠性、简洁性和实验操作的方便性,采用广州天嵌计算机科技有限公司生产的TQ2440 Core 2.0核心板作为处理器部件.该板已经将嵌入式处理器S3C2440焊接好并以标准排针插口引出了所需的地址线、数据线和控制线,而且有较好的上位机监控调试软件及人机界面.该核心板对外只提供了21根内存地址线A[20∶0],故可以外接的内存空间为2 MB.本实验将制作一个1 GB的双空间存储器和相应的推移锁存器组,然后在所设计的实验系统上验证内存推移理论.

依据图2所示的系统连接原理图完成实验板设计,其中核心板给出的高序号地址线A20∼18接入输出口译码器的输入端,用于寻址推移锁存器的输出端;推移锁存器组输出端的12根信号线Q11∼0与双空间存储器的高序号地址线A27∼16相连;核心板给出的低序号地址线A17∼2与双空间存储器的低序号地址线A15∼0相连;核心板给出的数据总线和双空间存储器的数据直接互连.

图2 系统连接原理图Fig.2 Schematic diagram of the system connection

采用Altium Designer软件设计本实验的电路板.在电路板上焊装各种元件和芯片后,组装双空间存储器以及TQ2440 Core 2.0核心板,构成预期的内存推移实验系统(见图3).

图3 内存推移实验系统Fig.3 Experimental system of the pulling memory mapping

3 实验操作规划

内存推移理论的核心理论如下:①用NVRAM构造大容量的双空间存储器;②构造推移锁存器组;③处理器透过映射窗机制随机访问窗壁的字单元;④用推移指令在双空间存储器字空间上移动窗框.由于双空间存储器和推移锁存器组构建在实验板上,其正确性将通过验证核心理论③和④中的两项技术来证实.因此,本实验在操作方面的重点内容是这两项技术的实施.

3.1 实验准备

实验准备主要包括两方面的工作.

(1)编写目标程序.通过ARM Developer Suite v1.2平台编写本实验需要的目标程序,其中包括嵌入式系统的基本设置以及用于验证内存推移理论的操作.用推移指令对推移锁存器组中的每个推移锁存器进行赋值,由S3C2440透过映射窗随机访问双空间存储器字空间对应窗壁上的字单元,修改推移锁存器的值,完成在双空间存储器字空间上推移窗框.用C语言编写目标程序后,编译链接将其转换成bin文件,并等待烧写到指定位置.

(2)搭建实验平台.实验系统的主要软件和硬件包括SuperVivi-USB-Transfer-Tool、PC机、TQ2440 Core 2.0核心板、双空间存储器、推移锁存器组以及实验板.开始实验前连接好实验板与PC机上的串口和USB口,其中串口用于SuperVivi-USB-Transfer-Tool与S3C2440上的软件通信,PC机通过USB口向实验板上的S3C2440处理器烧写目标程序.

将以上环节准备完毕,确保无误之后,通电等待实验.

实验预期结果:从SuperVivi-USB-Transfer-Tool的交互界面上得出TQ2440 Core2.0核心板连接成功,USB通行工作正常,串口工作正常;在所给出的命令中,选择Download Program(uCOS-Ⅱor TQ2440Test)to SDRAM and Run it命令烧写目标文件BispaceSimulation.bin到同步动态随机存储器(synchronous dynamic random access memory,SDRAM)中运行.

3.2 验证推移指令的正确性

由于本实验无法直接查看各个推移锁存器中保持的数据,因此用逻辑分析仪对推移锁存器组的输出信号进行采集和分析,以此来确定被选通推移锁存器所保持的数据.

实验操作规划:待目标文件BispaceSimulation.bin烧写完毕后,目标程序会自动运行;目标程序首先执行嵌入式系统的基本设置,然后执行推移指令,实现对推移锁存器组中每个推移锁存器赋初值;用逻辑分析仪对推移锁存器组的输出信号进行采样,以判断各个推移锁存器保存的数值是否正确.

具体操作如下:①给推移锁存器写入一个初始值,选择一个选通该推移锁存器的访存地址进行访问,记录该推移锁存器给出的数值;②通过推移指令给该推移锁存器赋新值;③再次对上述访存地址进行访问,记录该推移锁存器给出的新数值;④查看逻辑分析仪中记录的数值,判断推移锁存器所保存的数值是否正确.以上操作重复多次.

以对推移锁存器1的实验为例,说明操作过程如下:

volatile unsigned int*ip=(volatile unsigned int*)(0x0803ffe4)(选中推移锁存器组中的推移锁存器1的写入端地址);

*ip=0x3f(向推移锁存器1写入初始值3fH);

unsigned int x=*(unsigned int*)(0x08040020)(访问1号窗框,测得推移锁存器给出的数值);

*ip=0x4aa(向推移锁存器1赋新值4aaH);

unsigned int x=*(unsigned int*)(0x08040020)(再次访问1号窗框,测得推移锁存器给出的新数值).

实验预期结果:逻辑分析仪第一次应测得推移锁存器的输出值为3fH,第二次为4aaH.

3.3 透过映射窗随机访问窗壁的字单元

实验操作规划:初始化推移锁存器组,给出对任意访存地址的读/写命令,考察该命令的执行结果.

以访问08040020H地址为例,说明此项实验的操作过程如下:①执行推移指令*(unsigned int*)(0x0803ffe4)=0x400,将推移锁存器1的值设定为400H,然后S3C2440处理器给出访存地址08040020H,于是选通1号窗框,则将映射窗移动到双空间存储器的1 024号窗壁,透过映射窗内偏移地址20H,读出对应存储单元的内容,通过串口输出到PC,在SuperVivi-USBTransfer-Tool的交互界面上显示,截图保留实验结果;②对1 024号窗壁内的对应存储单元写入数值1234 4321H,本实验系统只采用32位数据格式,且S3C2440处理器必须给出从0804 0020H开始的地址来访问双空间存储器的连续4个字节(原因请参见2.4节);③从1 024号窗壁内的对应存储单元读出更新后的数据,截图保留实验结果;④比较第①,③步的实验结果,判断给出的读/写命令是否被正确执行.

实验预期结果:第①步,应得出1 024号窗壁内的对应存储单元上的数据ffffffffH;第②,③步,应得出S3C2440处理器能够将数据1234 4321H写入1 024号窗壁内对应存储单元,该窗壁的其他存储单元保持NOR Flash芯片擦除后的数据ffH.

3.4 用推移指令在双空间存储器字空间上完成窗框推移

以访问08040020H地址为例,说明此项实验的操作过程如下:①通过推移指令*(unsigned int*)(0x0803ffe4)=0x600,将推移锁存器1的值设定为600H,即将1号窗框推移到双空间存储器的1 536号窗壁,并对该单元写入数值1122 3344H;②调用串口输出函数Uart Print(“0x%08x”,*(unsigned int*)(0x08040020)),读出该访存地址的数值,在SuperVivi-USBTransfer-Tool的交互界面上显示,截图保留实验结果;③用推移指令*(unsigned int*)(0x0803ffe4)=0x400,将推移锁存器1的值重新设定为400H;④重复第②步,此时映射窗在双空间存储器的1 024号窗壁,偏移地址为20H的存储单元内容应为1234 4321H(参见3.3节);⑤再次用推移指令*(unsigned int*)(0x0803ffe4)=0x600,将推移锁存器1的值重新设定为600H;⑥重复第②步;⑦比较第②,④,⑥步中3次读取到的同一访存地址0804 0020H的内容,判断第①,③,⑤步的推移指令是否都将1号窗框推移到了正确的窗壁.

实验预期结果:通过3次访问同一访存地址为0804 0020H的存储单元,应得到3个不同数据,第一次为1122 3344H,第二次为1234 4321H,第三次为1122 3344H.

3.5 不可闭窗的验证

实验操作规划:通过修改推移锁存器0的操作验证不可闭窗的存在.

操作过程如下:①首先向推移锁存器0写入fffH,断开推移锁存器0的写入控制端,使其接入低电平,完成设定4 095号窗壁为不可闭窗和持续占有0号窗框的操作;②访问双空间存储器4 095号窗壁,访问到的数据内容在SuperVivi-USB-Transfer-Tool的交互界面上显示,截图保留实验结果;③再次向推移锁存器0写入400H,将0号窗框从4 095号窗壁推移到1 024号窗壁;④重复第②步;⑤比较第②,④步得到的数据结果,判断第③步推移指令是否将0号窗框推移到其他窗壁上,验证不可闭窗是否存在.

实验预期结果:通过第②,④步两次访问到的内容应相同,都是4 095号窗壁上的数据,表示推移指令对不可闭窗无效,不可闭窗上的窗框永久存在,不能移走.

3.6 映射窗推移技术的验证

实验操作规划:改变处理器访存地址的高位,验证映射窗是否得到推移.3.3和3.5节中分别用到了1号窗框和0号窗框,在完成验证的过程中,多次改变了处理器给出的访存地址高位,即已经多次把映射窗从一个窗框移到另一个窗框,因此综合分析3.3和3.5节的实验过程和记录,即可对映射窗推移技术进行验证.

操作过程如下:①得到3.3和3.5节的验证结果;②分析3.3和3.5节的验证结果,判断处理器访存地址高位的改变是否对映射窗进行了推移.

实验预期结果:完成3.3和3.5节验证实验,验证映射窗推移技术.

4 实验过程及结果分析

4.1 实验准备

按照实验准备操作搭建实验平台.TQ2440 Core 2.0核心板从NOR Flash芯片模式中启动,通电后,实验结果和预期结果一致.图4是SuperVivi-USB-Transfer-Tool的交互界面显示结果.

图4 SuperVivi-USB-Transfer-Tool的交互界面Fig.4 Interactive interface of Super Vivi-USB-Transfer-Tool

4.2 验证推移指令的正确性

通过实验测得推移锁存器1的初始值为3fH(见图5).在执行推移指令后的访存中,测得的赋予推移锁存器的新值为4aaH(见图6).这说明通过推移指令已将数据4aaH正确写入了推移锁存器1中,推移指令的正确性得以验证.

图5 测得初始值3fHFig.5 Measured initial value 3fH

图6 测得赋予推移锁存器的新值4aaHFig.6 Measured initial values 4aaH given by the latch

4.3 透过映射窗随机访问窗壁的字单元

从图7可以看出,S3C2440处理器能正确访问1 024号窗壁上的数据.从图8可以看出,S3C2440处理器成功修改了1 024号窗壁上偏移地址为20H存储单元上的数据,证明了S3C2440处理器能够透过映射窗随机访问窗壁的正确字单元.

图7 对1 024号窗壁上内容的访问Fig.7 Access to the content of 1 024th window entity

图8 访问修改后的单元Fig.8 Access to the modifi ed unit

4.4 用推移指令在双空间存储器字空间上完成窗框推移

从图9可以看出,S3C2440处理器成功访问到了1 536号窗壁,并成功改写偏移地址为20H存储单元上的数据为1122 3344H.从图10可以看出,通过推移指令实现了窗框推移操作,成功将S3C2440处理器引导到对1 024号窗壁的访问,并访问到3.3节中修改过的偏移地址为20H存储单元上的数据1234 4321H.从图11可以看出,再次通过推移指令实现了窗框推移操作,成功将S3C2440处理器又引导到1 536号窗壁,访问到刚刚修改过的偏移地址为20H存储单元上的数据1122 3344H.整个实验过程中两次用到推移指令,成功完成窗框推移操作.

图9 第一次访问Fig.9 First access

图10 第二次访问Fig.10 Second access

图11 第三次访问Fig.11 Third access

4.5 不可闭窗的验证

从图12可以看出,S3C2440处理器能正常访问4 095号窗壁.从图13可以看出,执行推移指令后无法实现窗框推移,不能将S3C2440处理器引导到1 024号窗壁,而是依旧停留在4 095号窗壁,说明4 095号窗壁为不可闭窗,持续占有0号窗框,不能被移动.

图12 访问0号窗壁上的数据Fig.12 Access to the data of the 0th window entity

图13 执行推移指令后的访问Fig.13 Access after pushing command

4.6 映射窗推移技术的验证

实验结果和预期一致,通过改变处理器访存地址的高位,成功验证了映射窗推移技术.对上述实验重复多次,每次给出不同的参数,实验结果均达到实验目的,成功验证了推移指令的正确性.S3C2440处理器能够随机访问双空间存储器字空间的存储单元,且用推移指令在双空间存储器的字空间上能正确移动窗框.这充分证明了内存推移理论和技术的核心内容的正确性.

5 结束语

本研究成功完成了基于TQ2440 Core 2.0核心板的内存推移实验,证实了内存空间在双空间存储器上推移理论和技术的正确性.在本实验中,利用TQ2440 Core 2.0提供的21根地址线A[20∶0]构成系统的2 MB内存空间,通过内存推移理论将该内存空间自动映射到1 GB的双空间存储器的任意一个局部范围,并用推移指令将该局部范围在整个双空间存储器上进行移动,从而使核心板对2 MB内存空间的随机访问自动落实为对1 GB双空间存储器指定位置的随机访问.

本实验的成功为内存空间推移理论奠定了可靠的实物基础,解决了双空间存储器在电子计算机系统的应用过程中,受到CPU地址线宽度限制的内存空间与双空间存储器巨大随机访问字空间的对接问题,奠定了构造双空间存储器和实施内存推移理论的实践基础.相信在不久的将来,完全可以实现基于双空间存储器的新型电子计算机,使得CPU能够直接随机访问到更大的非易失存储空间,从而使内存和外存之间的数据复制问题不复存在.

致谢:感谢徐凌宇教授对本工作的大力支持!

猜你喜欢
窗框存储器内存
静态随机存储器在轨自检算法
参考答案
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
一种可排水的外开窗
基于弹簧等效的车门密封精细建模及窗框刚度研究
任意2~k点存储器结构傅里叶处理器
内存搭配DDR4、DDR3L还是DDR3?
存储器——安格尔(墨西哥)▲
上网本为什么只有1GB?