以位模式匹配进行的存储器地址解码方法及相关装置的制作方法

文档序号:6444129阅读:324来源:国知局
专利名称:以位模式匹配进行的存储器地址解码方法及相关装置的制作方法
技术领域
本发明涉及一种存储装置地址解码的方法及相关装置,尤指一种以位模式比较方式快速进行地址解码的方法及相关装置。
背景技术
在现代化的社会中,能快速处理、管理各种数字数据、文件、数据及影音信息的微处理机系统,已成为信息社会最重要的基础配备之一。一般来说,为了实现各种复杂、多样化的功能,微处理机系统会设置暂存数据的存储装置(像是随机存取存储器),以暂存微处理机运行期间所需的程序及数据。微处理机读取并执行暂存于存储装置中的程序、数据,就能操控微处理机系统完成各种各样的功能。因此,微处理机存取存储装置的速度及效率,也就影响了微处理机整体运行的速度及效率。尤其是在现代,存储装置的存储容量越来越大,如何使微处理机系统能快速有效地存取高容量的存储装置,也成为现代信息厂商研发的重点之一。
请参考图1。图1为一典型电脑10的功能方块示意图。电脑10做为一微处理机系统,其中设有一中央处理器12、一芯片组14、一存储装置16、一显示卡18、一显示器20、一周边装置22及一基本输出入系统24。中央处理器12用来处理数据、数据,以主控电脑10的运行;存储装置16即用来以挥发性的方式暂存中央处理器12运行期间所需的程序、数据。显示卡18用来处理影像信号,以操控显示器20,以将电脑10运行的情形显示为影像画面;周边装置22则可包括键盘、鼠标等人机介面、用来以非挥发性方式储存数据的硬盘机、光盘机、用来使电脑10连接于网络的网卡或是处理声音信号的音效卡等等。基本输出入系统(BIOS,basic input/outputsystem)24则用来储存电脑10开机时一些基本检查程序进行的设定及程序码等等。而芯片组14即用来管理中央处理器12与存储装置16、显示卡18、周边装置22、基本输出入系统24间的数据往来传输。芯片组14中可设有北桥电路26A及南桥电路26B;北桥电路26A用来管理中央处理器12与存储装置16、显示卡18间较高速的数据传输,南桥电路26B则用来管理中央处理器12与周边装置22、基本输出入系统24间较低速的数据传输。为了管理对存储装置16的存取,北桥电路26A中还设有一控制电路28。
在现代的电脑架构下,存储装置16通常由数个存储模块共同组成,像图1中就绘出了四个存储模块30A至30D作为代表。每个存储模块30A至30D中各包含有多个存储单元34,各存储单元34用来记录一位(bit)的数字数据;集合所有存储模块30A至30D中所有的存储单元34,就是存储装置16总共能提供的存储容量。在现行技术下,存储模块多半被实做成独立的电路,可透过电脑10中的插槽连接于电脑10以形成存储装置16;不同的存储模块可具有不同数量的存储单元(也就是说,各存储模块可具有不同的存储容量),使用者可依需要选购不同容量的存储模块,形成存储装置16。一般来说,存储模块中的存储单元分布于两个直列(rank)存储阵列;举例来说,像图1中所示,存储模块30A即具有两直列存储阵列32A、32B。而控制电路28则会分别以一控制信号来控制对一直列存储阵列的数据存取。就如图1中所示,控制信号CSp0、CSp1即分别对应存储模块30A中的两个直列存储阵列32A、32B;控制信号CSp2至CSp7则分别对应于存储模块30B、30C及30D的直列存储阵列。
一般来说,存储装置16都能支援随机存取(random access)的功能,也就是能任意存取存储装置16中任何一个存储单元34中的数据;为了管理对存储装置16中各存储单元34的随机存取,存储装置16中的各存储单元34会被指派(assign)到一个独一无二的地址。当中央处理器12要存取存储装置16中某一特定存储单元34的数据时,中央处理器12就可向控制电路28提示该特定存储单元34的地址,由控制电路28依据该地址解码出该特定存储单元34实际所在的存储模块,以实际对该特定存储单元34进行数据存取。也就是说,当控制电路28接收到对应一特定存储单元的给定地址(像是由中央处理器12指定的)时,控制电路28就要解码出该给定地址所在的存储模块,甚至是该给定地址所在的直列存储阵列,再以该直列存储阵列对应的控制信号去触发该直列存储阵列,以配合该特定存储单元所在的存储模块,存取到该特定存储单元的数据(通常每个存储模块中会有自己的地址解码电路,可进一步解码出该给定地址对应的特定存储单元)。
关于存储装置16中各存储单元地址指派的情形,请先参考图2(并一起参考图1)。图2即为存储装置16中各存储单元地址指派的示意图。如图2所示,假设存储模块30A至30D分别具有2^25(二的二十五次方)、2^27、2^28以及2^26个存储单元,也就是说,存储模块30A至30D的存储容量分别为32百万位、128百万位、256百万位以及64百万位。这里的一百万位(Megabit)也就代表有2^20个位,也就是2^20个各储存一位的存储单元。当电脑开机后,控制电路28就会将数值线性递增的地址,依序分配给存储模块30A至30D中的每个存储单元。当然,在数字电路中,二进制是最基本的数值表示方式,各存储单元的对应地址也以二进制来表示。举例来说,如图2中所示,各存储单元的对应地址皆以二进制下的32个位来表示,以第0位为最不重要的位,第31位为最重要的位。在地址指派后,存储模块30A中的第一个存储单元会被指派为地址36A,其值为二进制的“000…0”,也就是所有的位皆为“0”。接下来的各个存储单元的对应地址就会依序递增,像是第二个存储单元的地址为36B,其值为“00…01”(仅第0位为“1”);而第三个存储单元的地址为36C,其值继续递增1而变成为“0…010”(仅第1位为“1”),以此类推。到了存储模块30A中的倒数第二个存储单元(也就是第(2^25-1)个存储单元),其对应地址36D的值就会递增至二进制的“0…01…10”(由第1至第24位为“1”,余为“0”);而存储模块30A中最后一个存储单元(也就是第2^25个存储单元),其对应地址36E也再递增1而成为“0…01…1”(第0至第24位为“1”,余为“0”)。
控制电路28在指派地址时,会将存储装置16中所有存储模块的所有存储单元视为一整体;所以当控制电路28在将地址指派至存储模块30B时,其地址的值会由地址36E(也就是存储模块30A最后一个存储单元对应的地址)继续递增。如图2中所示,存储模块30B中第一个存储单元会被对应至地址38A,其值会由地址36E的值递增1,而成为二进制的“0…010…0”(仅第25位为“1”),代表这个存储单元会被视为存储装置16中的第(2^25+1)个存储单元,也就是由存储模块30A第一个存储单元算来的第(2^25+1)个存储单元。同理,存储模块30B中第二个存储单元会被视为存储装置16中的第(2^25+2)个存储单元,其对应地址38B的值再由地址38A递增1,成为二进制的“0…010…01”(仅第0及第25位为“1”)。由于存储模块30B中有2^27个存储单元,所以到了存储模块30B中的最后两个存储单元,就分别成为存储装置16中第(2^25+2^27-1)及第(2^25+2^27)个存储单元,其对应的地址38C、38D分别递增至二进制的“0…01001…10”(第1至第24位、第27位为“1”,余为“0”)及“0…01001…1”(第0至第24位、第27位为“1”,余为“0”)。
依照上述的原则类推,到了存储模块30C(也就是第三个存储模块),其第一个存储单元的对应地址42A会由地址38D的值递增1,成为二进制的“0…01010…1”(仅第25及第27位为“1”),也代表此一存储单元为存储装置16中,由地址36A的存储单元数来的第(2^25+2^27+1)个存储单元。而存储模块30C中的第2^28个(也就是存储模块30C中的最后一个存储单元),其对应的地址42B就递增至二进制的“0…011001…1”(第0至第24、第27、第28位为“1”,余位为“0”),代表其为地址36A依序递增以来第(2^25+2^27+2^28)个地址。同理,到了第四个存储模块30D,其第一个存储单元对应的地址44A即继续由地址42B递增1,成为二进制的“0…011010…0”(第25、第27及第28位为“1”),而存储模块30D最后一个存储单元的地址,也就继续递增至“0…011101…1”(第26至第28、第0至第24位为“1”,余位为“0”);代表其为地址36A以来,第(2^25+2^27+2^28+2^26)个地址。在地址指派后,由各存储模块中第一个地址(也就是第一个存储单元对应的地址)及最后一个地址,就可针对每一存储模块订出一结尾(ending)地址。如图2所示,由于存储模块30A中分配到的所有地址均小于存储模块30B中的第一个地址38A,故地址38A可视为存储模块30A对应的结尾地址46A。同理,存储模块30B(及存储模块30A)中各个存储单元被指派到的地址均小于存储模块30C中其值最小的地址42A,故地址42A可视为存储模块30B对应的结尾地址46B。而存储模块30C连同存储模块30A、30B中被分配到的地址均小于存储模块30C对应的结尾地址46C(也就是存储模块30D的最小地址44A)。最后,存储模块30D中的所有地址均小于结尾地址46D。请注意,各结尾地址46A至46D也就是以二进制表示各存储模块容量累加的结果。如结尾地址46A代表的是二进制的2^25,也就是存储模块30A的存储容量(即存储模块30A存储单元的数量);结尾地址46B代表的是二进制的(2^25+2^27),代表存储模块30A、30B存储容量的总和;结尾地址46C代表的是二进制的(2^25+2^27+2^28),也就是存储模块30A、30B及20C存储容量累加的结果。最后,结尾地址46D代表的是二进制的(2^25+2^27+2^28+2^26),也就是累加存储模块30A至30D存储容量的结果。
由上述描述可知,即使存储装置16中的各个存储单元可能分属不同的存储模块,控制电路28还是会将各存储单元视为一整体,将连续递增的地址指派至各个存储单元,方便电脑10中的其他电路将各存储模块提供的存储单元视为一整体以进行存取。不过,如前所述,当中央处理器12(或其他电路)要以一给定地址存取一对应存储单元的数据时,控制电路28就要进行初步的地址解码,先确定该存储单元所在的存储模块(甚至是存储单元所在的直列存储阵列),才能在后续的过程中进一步实际存取到该存储单元。
请继续参考图3(及图1、2)。图3即为现有技术中,控制电路28进行初步地址解码方法的示意图。在控制电路28中,设有一存取模块51、多个减法模块48A至48D及一逻辑模块50。存取模块51用来暂存中央处理器12(或其他电路)传至控制电路28的给定地址54;而控制电路28即会对此给定地址进行初步的地址解码。在现有技术中,当控制电路28要进行初步的地址解码而判断一给定地址54属于哪一个存储模块时,控制电路28可用软件或硬件的方式,实现出减法模块48A至48D以及逻辑模块50的功能。减法模块48A至48D分别用来将给定地址54与结尾地址46A至46D相减(请一并参考图2),以减运算结果的正负分辨出给定地址与各结尾地址46A至46D的相对大小。减法器得出的结果会由逻辑模块50进一步整合,以实际判断出给定地址54所属的存储模块,并产生一对应的解码结果52。举例来说,若给定地址54属于存储模块30A,给定地址54就会小于各结尾地址46A至46D。若给定地址54属于存储模块30B,给定地址54就会小于结尾地址46B至46D,但不小于结尾地址46A。同理,当给定地址54对应的存储单元属于存储模块30D时,给定地址54只会小于结尾地址46D,但不小于结尾地址46A至46C。而各减法模块48A至48D,就是用来将给定地址54与分别与结尾地址46A至46D相减,以减运算结果的正负判断出给定地址54与各结尾地址46A至46D间数值的大小关系;而逻辑模块50则能根据减法模块48A至48D得出的数值大小关系,判断出给定地址54所属的存储模块。像在是图3中所绘出的,若给定地址54为“0…010010…0”(仅第25、第28位为“1”),则其不小于结尾地址46A、46B但小于结尾地址46C、46D,由此逻辑模块50就可判断此给定地址54对应于存储模块30C中的存储单元。
一般来说,当控制电路28在指派地址时,会依序先指派递增的地址给同一直列存储阵列中的存储单元。举例来说,若存储模块30A中32百万个位平均分配于直列存储阵列32A、32B(请一并参考图1),则前16百万个地址会被指派给直列存储阵列32A的存储单元;次16百万个地址则会被指派给直列存储阵列32B。在这种地址分配的情形下,也可定义出各直列存储阵列对应的结尾地址。而上述的现有方法也就可比较给定地址与结尾地址间的数值大小关系,来决定给定地址54属于哪一个直列存储阵列。当然,在此种应用下,四个存储模块总共有八个直列存储阵列,也就会有八个分别对应的结尾地址,而要以八个减法模块来分别比较给定地址与各结尾地址间的大小关系。总结控制电路28的运行,当电脑10开机后,控制电路28会扫描存储装置16中各存储模块的存储容量大小,并对各存储单元进行地址指派,此时控制电路28也能计算出初步地址解码所需的结尾地址。等到后续有其他电路要存取某个给定地址的存储单元时,控制电路28就能依据结尾地址,利用其减法模块、逻辑模块进行初步的地址解码,求出该给定地址所属的存储模块或直列存储阵列,并在后续的过程中配合该给定地址所属的存储模块,实际存取到该给定地址对应的存储单元。
不过,不管图3中的现有技术是以硬件电路来实现减法模块,或是以北桥电路26A的微控制器执行软件程序来实现减法模块的功能,其运行的效率皆不高。以硬件电路的实施方式来说,要实现减法模块而将两个二进制数相减,可将其中一数取补数(像是1的补数,或是2的补数),形成该数的负数,再以二进制的加法器将该数的负数和另一数相加。由于二进制的加法器在将两个二进制数相加时,要由两数最不重要的位(LSB,也就是第0位)开始,进行位对位的相加,再进位到下一位,才能一个位一个位地逐渐完成两数的相加。举例来说,有两个二进制数A1、A2分别为“101”与“011”;当两数要相加而得出一和(sum)S时,要先从两数的第0位相加,由“1”+“ 1”得出“0”成为和S的第0位,并要进位“1”至下一个位。得到进位后,接下来才能进行两数第1位相加的计算,由数A1的第1位“0”加数A2的第1位“1”,再加上由两数第0位相加而进位的“1”,故得出和S的第一位为“0”,又要进位“1”至次一位。得到两数第一位相加的进位后,才能继续进行数A1、A2第2位的相加,由数A1的第2位“1”加数A2的第2位“0”,再加上由两数第1位进位而来的“1”,得出和S的第2位为“0”,进位“1”,最后得出和S为“1000”。
由上述描述可知,由于在进行二进制数的加法时,不仅两数的对应位要相加,还要等待前一位进位而来的结果,才能得出正确的加算结果;而两数加运算所需的时间,就是各对应位分别进行加运算累计所需时间之和。也就是说,加法中两二进制数的位越多,加法运算所需的时间也就会累增。而上述加运算时间消耗的特性会直接反映于现有的技术中;当图3中的现有技术要以减法模块进行的减运算来分别比较给定地址54与各结尾地址46A至46D的大小关系时,就会消耗相当的时间在减运算上,并导致现有控制电路28进行初步地址解码的效率低落,无法快速地解码出给定地址所属的存储模块。一旦地址解码的效率低落,中央处理器12(见图1)就不能快速有效率地存取存储装置16的存储资源,使整个电脑10运行的效率也无法有效提升。

发明内容
因此,本发明的主要目的,在于提供一种以位模式直接比较进行的地址解码方法及相关装置,能快速有效率地进行给定地址的初步地址解码,克服现有技术的缺点。
在现有技术中,当要对一给定地址进行初步的地址解码而判断该给定地址属于哪一个存储模块(或是哪一个直列存储阵列)时,是以减运算(等效上也就是加运算)的结果来比较该给定地址与各预设的结尾地址间的大小关系,以判断出该给定地址属于哪一个存储模块,完成初步地址解码。然而,由于加运算要以逐位累加进位的方法,一个位一个位依序地先后进行,才能得出正确的加运算结果。因此,现有技术中以减运算为比较基础的初步地址解码方式,其运行的速度及效率较低,导致电脑不能快速有效率地存取存储资源。
在本发明中,则是以位模式比较的方式来进行初步地址解码。经由本发明揭露的技术,就可由各存储模块(或直列存储阵列)中地址排列的方式,归纳出特定的位模式,也就是在属于某些特定存储模块的所有地址中,必定有某几个特定的位为固定的值。比较给定地址是否符合这样的位模式(也就是此给定地址中特定的位是否符合固定的预设值),就能判断给定地址是否属于该些特定存储模块,并进一步解码出给定地址所属的存储模块。由于模式比较是直接比较对应位的值是否符合特定值,不需要像加运算中一般进行位间的累加、进位,故本发明的技术能快速有效率地完成初步地址解码,提升电脑存取存储装置资源的速度及效率,进而改善电脑整体的运行效能。


图1为一典型电脑的功能方块示意图。
图2为图1中电脑对存储装置中各存储单元地址指派的示意图。
图3为图1中电脑以一现有方法进行初步地址解码的功能方块示意图。
图4为本发明中电脑的功能方块图。
图5为图4中电脑对存储装置中各存储单元地址指派及相关位模式的示意图。
图6A、6B为图4中控制电路实现图5中位模式比较的功能方块示意图。
图6C为图6B中比较单元一实施例的功能方块示意图。
图7为图4中各存储模块与对应结尾地址的关系示意图。
图8A为图4中存储装置在另一存储模块配置下各存储单元地址指派及相关位模式的示意图。
图8B为图4中控制电路实现图8A中位模式比较的功能方块图。
图9A为图4中各直列存储阵列的存储单元地址指派及位模式的关系示意图。
图9B为图4中控制电路实现9A中位模式比较的功能方块图。
图式的符号说明10、60电脑 12、62中央处理器14、64芯片组16、66存储装置18、68显示卡20、70显示器22、72周边装置 24、74基本输出入系统26A、76A北桥电路26B、76B南桥电路28、78控制电路30A-30D、80A-80D存储模块32A-32B、82A-82B直列存储阵列
34、84存储单元36A-36E、38A-38D、42A-42B、44A-44B、86A-86D、88A-88D、90A-90F、92A-92D、132A-132E、140A-140IF地址46A-46D、94A-94D、130A-130D、134A-134D、141-148 结尾地址48A-48D减法模块 50、100逻辑模块51、101存取模块 52、102解码结果96A、97A-97B、98A-98C、99A-99D、136A-136D、150A-158D位模式106A、108A-108B、110A-110C、112A-112D、138A-138D、170比较单元111A-111D、161-168比较模块114A-114C、160“或”运算模块116模式计算模块118A-118H、120A-120H“与非”门122、124“与”门 129C-129D掩码CSp0-CSp7、CS0-CS7控制信号具体实施方式
请参考图4。图4为本发明中的电脑60的功能方块示意图。电脑60做为一微处理机系统,其设有一中央处理器62、一芯片组64、一存储装置66、一显示卡68、一显示器70、一周边装置72及一基本输出入系统74。中央处理器62用来主控电脑60的操作,存储装置66用来以挥发性的方式暂存中央处理器62运行期间所需的程序及数据、数据;显示卡68用来处理影像信号,以将电脑60运行的情形以图形画面显示于显示器70上。周边装置72可包括让使用者输入操控指令的键盘、鼠标、用来以非挥发性的方式储存数据的硬盘机、光盘机,用来处理声音信号的音效卡或是用来将电脑60连接于网络的网卡等等。基本输出入系统74中则储存了电脑60开机后进行初始化的设定值及相关程序。芯片组64则用来管理显示卡68、存储装置66、周边装置72、基本输出入系统74与中央处理器62间数据的往来传输。芯片组64中可设有一北桥电路76A、南桥电路76B;北桥电路76A用来主控存储装置66、显示卡68与中央处理器62间较高速的数据传输,南桥电路76B用来主控周边装置72、基本输出入系统74与中央处理器62间较低速的数据传输。在本发明中,存储装置66可沿用典型的配置,以多个存储模块(图4中绘出四个存储模块80A至80D做为代表)来组合出存储装置66的总存储容量。各存储模块80A至80D中分别设有多个存储单元84,各存储单元84用来暂存1位的数据;集合各存储模块的所有存储单元,就构成存储装置66的总存储容量。就像典型的配置一样,各存储模块的多个存储单元也可分布于两个直列存储阵列(rank);以存储模块80A为例,存储模块80A中的各存储单元就分设于两个直列存储阵列82A、82B。为了控制电脑60中各电路对存储装置66的存取,北桥电路76A中设有一控制电路78,并以控制信号CS0至CS7分别控制各存储模块80A至80D中不同直列存储阵列的存取。就像现行技术下的作法,控制电路78也会将不同的地址分别指派给存储装置66中的各存储单元84,以对存储装置66进行随机存取;当然,当中央处理器62(或其他电路)要存取一给定地址的存储单元时,控制电路78就要进行初步的地址解码,计算出该给定地址对应存储单元是属于哪一个存储模块(或进一步地,属于哪一个直列存储阵列),进而以对应的控制信号触发该直列存储阵列,实际存取该存储单元的数据。
请参考图5(并一起参考图4)。图5为本发明中控制电路78对存储装置66中各存储单元84进行地址指派的示意图。为了方便与现有技术比较,在图5的示意例中也假设了存储模块80A至80D分别具有2^25、2^27、2^28以及2^26个存储单元,也就是分别具有32百万、128百万、256百万及64百万位的存储容量。在图5的示意例中,各存储单元会被对应于一32位的二进制地址(以第0位为最不重要位,第31位为最重要位)。而在本发明中,控制电路78也可以将递增的二进制地址依序分配给存储装置66中的各存储单元。像是存储装置66中的第一个存储单元(也就是存储模块80A中的第一个存储单元)会被指派至一地址86A,其值为二进制的“0…0”(所有位皆为“0”);接下来的第二个存储单元,其地址86B就会由地址86A递增1,成为二进制的“0…01”(仅第0位为“1”)。以此类推,到了存储模块80A的最后两个存储单元,其分别对应的地址86C、86D也就分别递增至二进制的“0…01…10”(第1至第24位为“1”)及“0…01…1”(第0至第24位为“1”)。
由于控制电路78会将各存储模块中的存储单元视为一整体,所以到了存储模块80B,其第一个存储单元对应的地址88A就是由地址86D继续递增1,成为二进制的“0…010…0”(仅第25位为“1”)。而存储模块80B中其他存储单元的地址又继续由地址88A的值递增,经由地址88B、88C,最后递增至地址88D,其值也就是二进制下的“0…01001…1”(第0至第24、第27位为“1”),代表此一地址就是由地址86A算来的第(2^25+2^27)个存储单元。同理,存储模块80C中被指派到的第一个地址90A也是由地址88D继续递增1,成为二进制的“0…01010…0”(仅第25、第27位为“1”)。而存储模块80C中其他存储单元被指派到的地址也就由地址90A递增,其最后一个存储单元的地址90F就递增至二进制的“00011001…1”(第0至第24、第27、第28位为“1”),代表其为地址86A以来第(2^25+2^27+2^28)个地址。而存储模块80D被分配到的第一个地址(也就是其值最小的地址)92A,其值则是由地址90F继续递增1,成为二进制的“00011010…0”(第25、第27、第28位为“1”)。而存储模块80D中最后一个存储单元对应的地址92D,即递增至二进制的“00011101…1”(第0至第24位、第26至第28位为“1”)。
就像在图2中的状况,由于各存储单元被依序指派以递增的地址,本发明于图5中的例子也可由各存储模块分配到的第一个地址及最后一个地址定义出结尾地址94A至94D。其值小于结尾地址94A(也就是地址88A)的地址均属于存储模块80A;其值小于结尾地址94B(也就是地址90A)的地址可能属于存储模块80A、80B;其值小于结尾地址94C(也就是地址92A)的地址可能属于存储模块80A至80C。最后,由地址值最大的地址92D递增1可计算出结尾地址94D,其值小于结尾地址94D的地址可能属于存储模块80A至80D其中的一个存储模块。换句话说,各结尾地址94A至94D可分别将存储装置66中的各存储单元区分为两个区段。举例来说,结尾地址94A将存储模块80A划分为一区段,将存储模块80B至80D划分为另一区段,若一给定地址的值小于结尾地址94A的地址,代表其属于前一区段;反之,若其值不小于结尾地址94A,该给定地址必属于后一区段。同理,结尾地址94C将存储模块80A至80C划分为一区段,存储模块80D则变成另一区段,若给定地址的值小于结尾地址94C,代表其属于前一区段而可能属于存储模块80A、80B或80C;反之,则代表其属于后一区段而对应于存储模块80D中的一个存储单元。
进一步观察各结尾地址94A至94D所分别区分出来的区段,可发现各区段中的地址皆有一些共通的模式。举例来说,对地址值小于结尾地址94A的区段来说,其地址值会由地址86A递增至地址86D;在上述递增的地址序列中,虽然各个地址中第0至第24位皆可能为“0”或“1”,但第25至第3 1位的各个位必定会维持于“0”。这也就导引出本发明中的一个位模式96A。在位模式96A(及其他后续的位模式中),以“x”记号标记的位,代表其可能为“0”或“1”,而不具有固定的值。如位模式96A所示,第0位至第24位中的“x”,代表存储模块80A中的地址序列在由地址86A递增至地址86D时,第0位至第24位也会在“0”、“1”之间变动。但位模式96A从第25位至第31位却都有固定值“0”,代表存储模块80A中的地址序更虽会递增,但各地址中第25位至第31位一定都会是“0”,这可由地址86A至86D观察出来。换句话说,在存储模块80A中的地址序列由地址86A开始递增时,必定不会进位至第25位(也就是说,不会递增至结尾地址94A),而使第25位至第31位皆保持为“0”。在这种情形下,位模式96A就代表了存储模块80A中所有地址的共同模式,也就是第25至第31位必定为“0”。等效上来说,位模式96A中有定值的部分(也就是非“x”标记的部分),相当于存储模块80A中各地址的共同地址。
同理,如前所述,存储模块80A、80B会被结尾地址94B区分为一区段,存储模块80A及80B中的所有地址均小于结尾地址94B。在存储模块80A、80B形成的区段中,所有的地址会由地址86A递增,最后增加到地址88D,形成一地址序列。观察此地址序列可发现,此地址序列会由地址86A开始递增,先递增至地址88B(其值为“0…01…1”也就是第0至第26位为“1”),再由地址88C(其值为“1…010…0”,仅第27位为“1”),继续递增至地址88D。当地址序列由地址86A递增至地址88B时,各地址中第0至第26位会在“0”、“1”间变动,但地址中的第27至第31位皆会维持于“0”,就像位模式97A所示。当地址序列由地址88C递增至地址88D时,各地址中第0至第24位会变动,但地址中第31至第25个位会固定为“0000100”,就如位模式97B所示。进一步观察可知,当存储模块80A、80B中小于地址88C的地址序列由地址86A递增至地址88B时,地址88C中位于第27位的“1”,事实上就是结尾地址94B中最靠近最重要位的“1”。由于地址序列由地址86A递增至88B时,一定不会进位至第27位,故在位模式97A中,第27至第31位必定为“0”。同理,当地址序列由地址88C继续递增至地址88D时,各地址一定不会进位至第25位(也就是结尾地址94B第二个“1”所在的位),这也形成了位模式97B中第31至第24位的固定值。换句话说,小于结尾地址94B的地址可能会符合位模式97A(代表其在地址86A至88B之间),或是位模式97B(代表其在地址88C至88D之间);因此,只要符合位模式97A或位模式97B其中之一时,就代表其地址小于结尾地址94B。
归结上述观察可知,由结尾地址中值为“1”的位,就可推导出小于该结尾地址的区段中,地址序列所具有的位模式。在小于结尾地址94A的地址序列中,各地址的值一定不会进位至结尾地址94A于第25位的“1”,故形成了位模式96A。在小于结尾地址94B的地址序列,在由地址86A递增至地址88B的过程中,一定不会进位至结尾地址94B位于第27位的“1”,故形成了位模式97A;在由地址88C递增至地址88D的地址序列中,一定不会进位至结尾地址94B第25位的“1”,故形成位模式97B。
同理,在小于结尾地址94C的区段中(也就是存储模块80A、80B及80C中的所有地址),地址序列也是由先由地址86A递增至地址90B,形成位模式98A;由地址90C递增至地址90D的各个地址会具有位模式98B;由地址90E递增至地址90F的各个地址则会具有位模式98C。换句话说,针对结尾地址94C分别位于第28、27及25的三个“1”来说,由地址86A递增至地址90B,而不会进位至第28位的地址具有位模式98A;由地址90C递增至地址90D,不会进位至第27位的地址具有位模式98B;由地址90E递增至地址90F,不会进位至第25位的地址具有位模式98C。位的排列符合位模式98A、98B及98C其中之一的地址,就代表其小于结尾地址94C。
依据相同的原理,由结尾地址94D中位于第28、27、26、25的四个“1”,就可以分别推导出位模式99A至99D。在小于结尾地址94D的地址序列中,由地址86A开始递增至地址90B而不会进位至第28位的地址,会具有位模式99A。由地址90C递增至地址90D而不进位至第27位的各个地址,会具有位模式99B。由地址90E递增至地址92B(其值为“0001101…1”,第0至25位、第27、第28位为“1”)而不进位至第26位的各个地址具有位模式99C,而由地址92C递增至地址92D,且不进位至第25位的各个地址,都会具有位模式99D。总结上述的讨论可知,各结尾地址均对应于一或多个位模式(位模式的个数就和结尾地址中其值为“1”的位的个数相同),若某一给定地址符合某一结尾地址的其中一个对应位模式,就代表该给定地址的值小于该结尾地址。本发明即是利用上述原理来进行初步地址解码,以判断某一给定地址属于哪一个存储模块(或直列存储阵列)。
请参考图6A(并一起参考图5)。图6A为本发明控制电路78中用来实现初步地址解码功能的功能方块示意图。控制电路78中可设有一存取模块101、一模式计算模块116、一逻辑模块100、多个比较模块111A至111D。各比较模块中则设有一个或多个比较单元(如图6A中绘出比较单元106A、108A至108B、110A至110C以及112A至112D作为示意例)以及““或”运算模块”(图6A的示意例示出“或”运算模块114A至114C)。延续图5中的例子,图6A示意的即是在图5的存储装置配置下(也就是存储模块80A至80D分别有32百万、128百万、256百万以及64百万位的存储容量),本发明实现初步地址解码的情形。其中存取模块101用来接收、暂存一给定地址104,当控制电路78在电脑60开机时而将不同的地址指派给存储装置66中不同的存储单元后,模式计算模块116就能计算出各存储模块对应的结尾地址以及位模式;而由各比较单元、“或”运算模块形成的比较模块,以及逻辑模块100则用来对给定地址104进行初步的地址解码,以判断给定地址104所属的存储模块,并由逻辑模块100产生对应的解码结果102。
如前面所讨论过的,一结尾地址可对应一到多个位模式,只要给定地址符合其中一个位模式,就代表该给定地址的值小于该结尾地址(或不大于此存储模块的最大地址)。反之,若该给定地址不符合该结尾地址对应的所有位模式,就代表该给定地址的值不小于该结尾地址。控制电路78中的各个比较单元,其功能就是分别用来将给定地址104与各位模式相比较。像是比较单元106A是用来比较给定地址104是否符合结尾地址94A对应的位模式96A(见图5),比较单元108A、108B分别用来比较给定地址104是否符合结尾地址94B所对应的两个位模式97A、97B。结尾伴94C对应有三个位模式98A至98C,比较单元110A至110C就是用来比较给定地址104是否分别符合上述三个位模式98A至98C。比较单元112A至112D则用来比较给定地址104是否分别符合结尾地址94D所对应的四个位模式99A至99D。而由各比较单元及“或”运算模块形成的比较模块,就能根据给定地址是否符合某一结尾地址对应位模式之一,判断给定地址是否属于地址小于该结尾地址的区段。像是比较模块111D就将四个比较单元112A至112D的比较结果进行“或”运算,以判断给定地址104是否符合于结尾地址94D所对应的四个位模式99A至99D其中之一,而决定给定地址104是否小于结尾位置94D(或不大于存储模块80D的最大地址92D),并由“或”运算模块114C输出一对应的综合比较结果。
当各比较单元在比较给定地址104与特定的位模式时,是比较位模式中具有固定值的位和给定地址104中对应位的值是否相符;若位模式中具有固定值的各个位和给定地址104中的各个对应位均有相同的值,就代表给定地址104符合此位模式。举例来说,在比较单元106A中,是要比较给定地址104和位模式96A是否相符;因为位模式96A有固定值的位为第25至第31位,其值皆为“0”,故若给定地址104的第25至第31位亦同样为“0”,就代表给定地址104符合位模式96A,而比较单元106A即可发出一“真”(true)的逻辑结果反映两者相符。反之,只要给定地址104的第25至第31位中,有一个位的值不为“0”,给定地址104就不符合位模式96A,此时比较单元106A可发出一“假”(false)的逻辑结果反映两者不符。同理,在比较单元110A中,由于位模式98A中有第28至第31位其值固定为“0”;若给定地址104的第28至第31位的值亦全为“0”,比较单元110A就可发出一“真”的逻辑结果至“或”运算模块114B。反之,只要给定地址104的第28至第31位中,有一个位的值不为“0”,比较单元110A就会向“或”运算模块114B发出“假”的逻辑结果,代表给定地址104不符位模式98A。在图6A中,也实际假设了给定地址104的值为二进制的“00010010…0”(仅第25、第28位为“1”;此值与图3中给定地址54的值是相同的)。以此给定地址104在各比较单元中与各位模式比较后,比较单元106A、108A、108B比较的结果应该分别是“假”、“假”、“假”;比较单元110A、110B及110C的比较结果则分别是“假”、“真”及“假”;比较单元112A至112D的比较结果则依序分别是“假”、“真”、“假”及“假”。
因为只要给定地址104符合一结尾地址对应的其中一个位模式,就代表给定地址104小于该结尾地址(或不大于某一存储模块的最大地址),所以各比较单元在分别比较给定地址104和对应同一结尾地址的各位模式后所得的比较结果,可用一“或”运算模块整合起来。就像图6A中的示意例,比较模块111B中的两个比较单元108A、108B分别用来比较给定地址104与结尾地址94B对应的两个位模式97A、97B,这两个比较单元的比较结果就会由“或”运算模块114A进行“或”运算,“或”运算的结果就代表给定地址104是否小于结尾地址94B。同理,在比较模块111D中,比较单元112A至112D分别用来比较给定地址104是否符合结尾地址94D所对应的四个位模式99A至99D;这四个比较器的比较结果会由“或”运算模块114C进行“或”运算,“或”运算模块114C输出的结果,就代表给定地址104是否小于结尾地址94D。当然,像结尾地址94A仅有一对应的位模式96A,比较模块111A中的比较单元106A的比较结果就能直接代表给定地址104是否小于结尾地址94A。以图6A中给定地址104的实例值“00010010…0”来说,比较单元106A的“假”代表给定地址104不小于结尾地址94A;在比较模块111B中,比较单元108A、108B皆为“假”的比较结果经过“或”运算,“或”运算模块114B还是会输出“假”的逻辑结果,代表给定地址104不小于结尾地址94B。在比较模块111C中,比较单元110A至110C分别为“假”、“真”、“假”的比较结果会经由“或”运算模块114B得出“真”的输出,代表给定地址104符合结尾地址94C对应的位模式98B,也就是说,给定地址104小于结尾地址94C。同理,在比较模块111D中的四个比较单元112A至112D分别为“假”、“真”、“假”、“假”的比较结果会由“或”运算模块114C“或”运算为“真”,代表给定地址104小于结尾地址94D。根据“或”运算模块111A至111D输出的结果,逻辑模块100就能轻易地判断出给定地址104所属的存储模块,并产生解码结果102,完成初步的地址解码。延续上述的实例,既然给定地址104不小于结尾地址94A、94B但小于结尾地址94C、94D,就可判断给定地址104属于存储模块80C。
整体来说,本发明进行初步地址解码的流程可叙述如下。当电脑60(见图4)开机后,控制电路78会扫描存储装置66中的各存储模块,以得知各存储模块中所具有的存储单元,并将不同的地址指派给不同的存储单元。地址指派完后,模式计算模块116也就能确定各存储模块(或是直列存储阵列)对应的结尾地址,并由各个结尾地址导出各结尾地址对应的位模式,让各个比较单元能有比较的依据。在电脑60后续的运行过程中,当中央处理器62(或其他电路)要存取给定地址的存储单元时,控制电路78就能依据各比较单元、“或”运算模块及逻辑模块100协同运算的结果,进行初步地址解码,求出该给定地址所属的存储模块(或直列存储阵列)。在本发明中,控制电路78中的模式计算模块116、各个比较模块、比较单元、“或”运算模块及逻辑模块100都能以硬件电路,或是以微控制器执行软件(或韧体)程序来实现。当然,也可以用不同的方式实现不同模块的功能。举例来说,模式计算模块116的功能可由控制电路78在电脑60开机时执行基本输出入系统74(请见图4)中的一段程序而加以实现;而各比较单元可用硬件电路来具体实现。
由于本发明是以位模式比较的方式来进行初步地址解码,故本发明能快速有效率的实施。因为在各比较单元进行位模式比较时,是比较位模式中具有固定值的位和给定地址104中对应位是否相符,可以同时、平行地对每个欲比较的位进行比较,再迅速地整合出比较的结果。举例来说,在图6A中的比较单元106A运行时,可同时检查给定地址104的第25至第31位是否分别为“0”,再将各位比较的结果作“与”运算,得到比较的结果。以数字电路的运行时间来说,在本发明中,各比较单元可在同一时间中同时完成各对应位的比较,并将各对应位比较的结果做“与”运算,得出比较单元最后比较的结果,再由比较模块中的“或”运算单元将各比较单元的结果作“或”运算,以判断给定地址是否小于某一结尾地址。进行上述过程所需的时间,大致上就是单一位比较所需的时间,加上一比较单元中“与”运算所需时间,再加上一比较模块中进行“或”运算所需时间。在上述的三种不同运算中,每一种运算都相当简单,甚至能用单一逻辑闸来实现,故本发明能够十分快速地完成整个比较模块的运行。相较之下,现有技术中以减法(等效上为加法)来进行初步地址解码,在各位进行加运算时,还要等待次一位加运算的进位,故其所需的时间是各位加运算所需时间累计总和的结果;以三十二位的地址解码来说,至少需要三十二个个别位运算所需时间才能完成。因此,本发明的初步地址解码方法能更快速有效率地进行。
事实上,本发明中的位模式还可进一步简化。关于此情形,请参考图6B(并一起参考图6A)。图6B跟图6A一样,显示的都是控制电路78中以本发明的精神实现初步地址解码的功能方块;图6A、6B中标号相同的元件、方块,皆具有相同的功能及运行模式。图6B与图6A最主要的不同处,在于图6B中各比较单元作为比较依据的位模式已经经过进一步的简化。举例来说,在由结尾地址94B产生出来的位模式97A、97B中,比较单元108B其实可以不必比较给定地址104的第27是否为“1”;换句话说,虽然在图6A中,比较单元108B要比较给定地址104的第31至第25位是否分别符合“0000100”,但在简化后,图6B中的比较单元108其实只要比较第25、26及第28到第31位是否为“0”即可。等效上来说,也就是将位模式97B中的第27位视为不定值,因而不需比较给定地址104中的第27位是否符合某一特定值;故图6B中也将位模式97B中的第27位以“x”记号代替原来的“1”。能这样简化的原因是在比较单元108A、108B中,比较单元108A已经比较过给定地址104的第27位是否为“0”,既然比较单元108A、108B比较的结果会再经过“或”运算模块114A的“或”运算,比较单元108B中就不必再比较给定地址104的第27位是否为“1”。请考虑下面的布尔变量算式推导A*B+A*B′*C=A*B*(1+C)+A*B′*C=A*B+A*B*C+A*B′*C=A*B+A*(B+B′)*C=A*B+A*C其中变量A、B、C为三个布尔变量,B′代表变量B的反相,“*”代表“与”运算,“+”代表“或”运算,“1”代表“真”。在上述的推导中,变量A的值可代表给定地址104的第28至31位是否皆为“0”(若皆为“0”则变量A为“真”,否则变量“A”为“假”);变量B的值代表给定地址104的第27位是否为“0”(若为“0”则变量B为“真”)。在图6A中,比较单元108A将给定地址104与地址模式97A比较的结果,就可写成A*B。而变量C则可代表给定地址104中第25、26位是否全为“0”(若皆为“0”则变量C为“真”);因此,图6A中比较单元108B将给定地址104与位模式97B比较的结果,就可用A*B′*C来代表(因为变量B代表给定地址104的第27位的值是否等于“0”,B′便能代表该位的值是否等于“1”)。而在比较模块111B中,比较单元108A、108B经过“或”运算模块114A进行“或”运算的结果,当然就可用(A*B+A*B′*C)来代表。经由上述的推导可知,(A*B+A*B′*C)可化简为(A*B+A*C),也就是说,即使比较单元108B不比较给定地址104中的第27位是否为“1”而简化为图6B中的情况,图6B中比较单元108A、108B的比较结果在经过“或”运算模块114A的“或”运算后,还是会和图6A中“或”运算模块114A得出的结果完全相同。
在对应同一结尾地址的各个位模式中,某一位模式中的“1”必定是由另一位模式中的“0”进位而来,故在以上述原理简化本发明时,位模式中的“1”一定可以省略不比较。换句话说,在对应同一结尾地址的各个位模式中,位模式中“1”出现的位,一定会在另一个位模式中为“0”。举例来说,如图5所示,在对应结尾地址94C的三个位模式98A到98C中,因为位模式98B中第28位的“1”是由位模式98A中的第27位递增1而进位的(就是由地址90B递增至90C),所以位模式98A中,其第28位必定为“0”。在实施本发明时,既然在同一比较模块111C中,比较单元110A已经比较过给定地址104的第28位是否为“0”,比较单元110B、110C就可以省略不比较给定地址104的第28位是否为“1”,就如图6B中所示。同理,位模式98C中第27位的“1”也是在地址序列由地址90D递增至90E时,由位模式98B中的第27位的“0”进位而得的。因为同一比较模块111C中的比较单元110B中已经比较过给定地址104的第27位是否为“0”,比较单元110C中就不必再比较该位是否为“1”了。就如图6B中所示,在本发明以上述的原理简化后,各比较单元中都不再需要比较给定地址中的特定位是否为“1”了。
请参考图6C(并一起参考图6B)。图6C中是以图6B中的比较单元112C、112D作为代表,示意本发明中比较单元一实施例的功能方块图。在图6C中的实施例,各比较单元中设有多个“与非”门(图6C中绘出“与非”门118A至118H、120A至120H做为代表)以及一“与”门(图6C中的两比较单元112C、112D中分别设有“与”门122、124)。其中各“与非”门用来将给定地址104中的一个位和一掩码(129C或129D)中的一个对应位做“与非”运算,而“与”门则用来将同一比较单元中各“与非”门的输出结果做“与”运算,得出该比较单元的比较结果。首先,由图6B中可知,本发明经过简化后,各比较单元其实只要比较给定地址104中的某些特定位的值是否为“0”。而本发明中各比较单元所使用的掩码,就是用来标示出这些特定、待比较位的位置。举例来说,在图6B中的比较单元112D是用来比较给定地址104是否符合位模式99D,也就是要检查给定地址104中的第25、第29至第31位是否为“0”。因此,在图6C中,比较单元112D所使用的掩码129D,其第25、第29至第31位皆为“1”。而其他不需比较的位,则在掩码129D中以“0”来代表。这样一来,比较单元只要将其对应掩码中的各个位和给定地址104中各个对应位置的位分别进行“与非”运算,给定地址104中不需比较的位就会被掩码“屏蔽”。再以比较单元112C为例,比较单元112C是用来比较给定地址104中第26、第29至第31位是否为“0”,给定地址104中其他位置的位则不需比较(请参考图6B中的位模式99C);而图6C中的比较单元112C就是以其对应掩码129C中值为“1”的第26、第29至第31位,标示出待比较位的位置;而掩码129C中其他值为“0”的位,就代表给定地址104中对应位置的位不需比较。另外,要比较某一位是否为“0”,只要将该位反相(做求反运算)即可得到比较的结果。若该位的值为“0”,其反相后的“1”(也就是“真”)就能代表该位的值的确为“0”。
结合掩码应用时的“与”运算及位值检查的反相运算,各比较单元就能以“与非”门来实现给定地址104与位模式间的比较。举例来说,如图6C所示,比较单元112D中的“与非”门118A至118H,分别用来将给定地址104的第31至第24位,和掩码129D中的第31至第24位做“与非”运算。对“与非”门118D、118E及118F来说,由于掩码129D中对应的第26至第28位皆为“0”,不管给定地址104中第28至第26位的值为何,“与非”门118D至118F“与非”运算的结果都会是“真”;换句话说,掩码129中第28至第26位分别屏蔽了给定地址104中的第28至第26位,使比较单元112D不会去检查这些位的值(等效上就是,给定地址104中这些位的值不会影响比较单元112D输出的结果)。相对地,对“与非”门118A至118C、118G来说,由于掩码129D中第31至第29、第25位的值皆为“1”,这些“与非”门的输出就会分别由给定地址104中的第31至第29、第25位的值来决定;换句话说,比较模块112D之中这些位的值会实际影响比较单元112D的输出。延续图6B中的实例,图6C中也假设给定地址104为“00010010…0”(仅第25、28位为“1”);在此实例中,给定地址104中的第31至第29位皆为“0”,而让“与非”门118A至118C输出的值皆为“真”。然而,因为给定地址104中的第25位为“1”,会使“与非”门118G的输出为“假”,并连带使“与”门122的输出为“假”,代表比较单元112D在将给定地址104与位模式99D比较后,判断两者并不相符。
相对地,在比较单元112C中,由于掩码129C在第31至29位、第26位为“1”,而给定地址在第31至第29位、第26位的值也都为“0”,故“与非”门120A至120C、120F的输出均为“真”,而其他的“与非”门也会因掩码129C中值为“0”的位而输出“真”,使得“与”门124最后输出的结果也是“真”,代表给定地址104符合比较单元112C在图6B中所对应的位模式99C。当然,在此要强调的是,图6C中所示的比较单元仅为本发明多种可能的实施例之一;举例来说,图6C中的“与非”门、“与”门的功能除了可以用硬件电路来实现外,也可由控制电路执行软件程序来实现。图6C的最主要的目的,还是要显示本发明能快速地完成位模式比较的过程,因为个别位的比较(在图6C的例中就是“与非”门的运行)可以平行进行,再快速整合出整个比较单元进行位模式比较的结果。若是以硬件逻辑闸来实现图6C中的架构,不管每个比较单元应用的掩码中有几个位为“1”,每个比较单元大致都能在两个闸延迟之后,输出比较的结果。另外,如前所述,控制电路78中的模式计算模块116在开机过程中会算出各比较单元对应的位模式作为比较的依据,但模式计算模块116也可以直接计算出各比较单元对应的掩码,以图6C中的技术原理来实现比较单元的功能。
由以上对图5、图6A至图6C的讨论可知,不论是图6A中所使用的位模式、图6B中经过简化的位模式或是图6C中的掩码,都能由图5中的结尾地址直接推算出来。更明确地说,是由结尾地址中值为“1”的位推算出来。就如前述针对图5的讨论,一结尾地址中值为“1”的位的个数,就代表该结尾地址对应位模式的个数;在地址序列中,地址序列的递增而进位至结尾地址中的“1”之前,各地址所具有的共同模式,就形成了位模式。而对应于各个存储模块的结尾地址,其实都是由各存储模块的存储容量累加而来。故在各个结尾地址中,“1”出现的在哪几个位,与各存储模块的存储容量有直接的关系。关于此情形,请参考图7。图7为各结尾地址推导计算的示意图。如图7所示,在各结尾地址130A至130D中,其值最小的结尾地址130A,就等于存储模块80A存储容量的二进制值,代表属与存储模块80A的各个地址均小于结尾地址130A。而结尾地址130B就等于存储模块80A、80B存储容量总和的二进制值,代表这两个存储模块中的各个存储单元所对应的地址均小于结尾地址130B。同理,到了其值最大的结尾地址130D中,结尾地址130D就等于所有存储模块80A至80D存储容量总和的二进制值。
由于在现代技术中,各存储模块的存储容量都是2的乘幂(power of 2,也就是2^N的形式),以二进制来表示各存储模块的存储容量,都只会在二进制中出现一个值为“1”的位;而在不同存储模块的不同存储容量累加而形成结尾地址时,各结尾地址中“1”的数目、位置也就会随之改变。在结尾地址130A中,由于仅累加了一个存储模块的存储容量,故结尾地址130A中仅有一个“1”。在结尾地址130B中,累加了存储模块80A、80B的存储容量,故结尾地址130B中可能会有一个或两个位为“1”。举例来说,在图5中的例子,因为存储模块80A、80B分别有32百万(2^25)和128百万(2^27)位的存储容量,故在此例中,结尾地址94B有两个值为“1”的位,分别是第25、第27位;这样一来,结尾地址94B也就有两个对应的位模式。若是图7中的存储模块80A、80B具有相同的存储容量,两存储模块累计的总存储容量也会是2^N的形式,这样就会使结尾地址130B中仅有一个位为“1”,也仅对应于单一一个位模式。同理,结尾地址130C中累计了存储模块80A至80C的存储容量,故结尾地址130C中可能会有一到三个位为“1”。而结尾地址1 30D中则可能有一到四个位为“1”,故结尾地址130D对应的位模式也可能有一到四个。当然,在特殊情形下,部分结尾地址中也可能没有“1”,举例来说,若使用者在可装设四个存储模块的电脑60(见图4)中仅装设了三个存储模块,就相当于在电脑60的四个存储模块中,有一个存储模块的存储容量为0,此时某些结尾地址中也可能没有位的值为“1”。但此种情形并不影响上述的讨论及本发明的实施。
由上面讨论可知,当存储模块80A至80D的个别存储容量有特定的相互关系时,各结尾地址中可能都仅有一个位的值为“1”,并分别仅对应于一位模式。关于此情形,请参考图8A及8B。图8A为本发明于另一种存储模块配置下,各结尾地址134A至134D、各位模式136A至136D的示意图;而图8B则是控制电路78在图8A的配置下,实施本发明初步地址解码的功能方块示意图;为了精简说明,在图8B中标号和图6B中标号相同的元件、方块,也具有同样的功能与运行方式。在图8A、8B的例子中,存储模块80A至80D分别有64百万位、64百万位、128百万位及256百万位的存储容量,各存储模块中的存储单元会被依序指派至递增的地址;而各存储单元的地址序列就由地址132A递增至地址132B、132C、132D,最后递增至地址132E,并定义出结尾地址134A至134D,如图8A中所示。由于各存储模块的存储容量配置的相互关系,使得结尾地址134A至134D中,各结尾地址均只有一个位为“1”。因为存储模块80A、80B具有相同的存储容量,使得两存储模块的存储容量总和刚好也是2的乘幂,故结尾地址134B中仅有一个“1”。同理,存储模块80A至80C三者存储容量的总和为256百万位,刚好又成为2的乘幂,让结尾地址134C中又仅有一个“1”。而存储模块80A至80D总共512百万位的存储容量,也使结尾地址134D中仅有一个位为“1”。既然各结尾地址134A至134D均只有一个“1”,故各结尾地址对应的位模式也仅有一个,分别就是图8A中标出的位模式136A至136D。如图8B所示,在图8A中的存储模块配置下,控制电路78中的比较模块111A至111D只要分别实现比较单元138A至138D的功能,将暂存于存取模块101中的给定地址104分别和位模式136A至136D比较,就能由逻辑模块100根据各比较模块的比较结果产生对应的解码结果102。在图8B中也假设了给定地址104是和图6A中给定地址的值相同,代表其对应于存储装置66中第(2^28+2^25+1)个存储单元。由图8B中可知,此给定地址104不符合位模式136A至136C,仅符合位模式136D,代表该给定地址在图8A中的存储模块配置下,是属于存储模块80D。
虽然前述由图5至图8B的例子都是在讨论本发明如何判断给定地址所属的存储模块,但本发明的精神当然也可推广,以进一步判断给定地址所属的直列存储阵列。如前所述,现行的存储模块中一般都设有两行直列存储阵列;像是在双直列存储模块(DIMM,Double Inline Memory Module)中,存储单元就是平均分布于两个直列存储阵列中。而在进行地址指派时,就可将同属一直列存储阵列的存储单元依序对应至递增的地址;这样一来,也就可对各直列存储阵列定义出对应的结尾地址,并应用本发明的精神,利用结尾地址算出对应的位模式,再以位模式比较的方式进行初步地址解码,判断给定地址属于哪一个直列存储阵列。关于此情形,请参考图9A。图9A为本发明运用于上述应用时,地址指派、结尾地址、位模式相关情形示意图。在图9A中,假设各存储模块80A至80D的存储容量分别是32百万、128百万、256百万及64百万位(就跟图5中一样),且各存储模块中的存储单元均平均分配于各存储模块的两个直列存储阵列中。举例来说,存储模块80A总共有32百万(2^25)位的存储容量,其两个直列存储阵列就分别具有16百万位的存储容量。而在开机之初进行地址指派时,就可先将2^24个依序递增的地址先指派给属于同一直列存储阵列的存储单元,在将次2^24个地址指派给另一直列存储阵列中的各存储单元。就像图9A中所示,在存储模块80A中,由地址140A递增至地址140B的2^24个地址,会先被指派至同一直列存储阵列的16百万位(像是对应于控制信号CS0的直列存储阵列,请一并参考图4)。存储模块80A中另一直列存储阵列(像是对应于控制信号CS1的直列存储阵列)中的各存储单元,则被对应于由地址140C递增至地址140D的2^24个地址。同理,在总存储容量为128百万位的存储模块80B中,由地址140E递增至地址140F的2^26个地址会先被指派至同一直列存储阵列(像是对应于控制信号CS2的直列存储阵列)的64百万位,由地址140G依序递增至地址140H的另外2^26个地址,则会被指派至另一直列存储阵列(像是对应于控制信号CS3的直列存储阵列)的64百万位,以此类推。
在上述的地址指派后,就可将针对每一直列存储阵列定义出一个结尾地址,而每一结尾地址也就会具有其对应的位模式。图9A中的结尾地址141至148,就分别对应于各存储模块中的各个直列存储阵列。举例来说,若一给定地址不小于结尾地址142,但又小于结尾地址143,该给定地址必定属于存储模块80B中的第一个存储阵列;若给定地址不小于结尾地址143但小于结尾地址144,则代表给定地址属于存储模块80B中的第二个存储阵列。而根据本发明的精神,就可针对各结尾地址141至148推导出对应的位模式。像图9A中的位模式151A、152A就分别对应于结尾地址141、142。同理,小于结尾地址143的地址,必定会符合位模式153A或153B。而结尾地址144、145,也分别有对应的位模式154A、154B及155A、155B。就如前面讨论过的,结尾地址146中的三个“1”使其有三个对应的位模式156A至156C。小于结尾地址147的地址,则会符合位模式157A、157B或157C其中之一。最后,结尾地址148中四个值为“1”的位,代表其对应了四个位模式158A至158D。请注意图9A中的位模式已经过简化,就如图6B中的例子。就像前面讨论过的,若一给定地址符合一结尾地址对应的位模式之一,就代表该给定地址小于该结尾地址。比较给定地址是否符合各个结尾地址对应的位模式,就能判断出给定地址所属的直列存储阵列。
请继续参考图9B;图9B即是控制电路78根据图9A中各位模式实现初步地址解码的功能方块示意图。在控制电路78中,控制电路78会在开机时将地址指派给各存储单元,而模式计算模块116就能计算出结尾地址与对应的位模式;存取模块101用来暂存给定地址104,而控制电路78中的各个比较模块161至168就是分别用来判断给定地址104是否小于各直列存储阵列对应的结尾地址141至148(请一并参考图9A)。而各比较单元中则设有比较单元170,各比较单元用来比较给定地址104是否符合一位模式。举例来说,比较单元168中设有四个比较单元170,分别用来比较给定地址104是否符合对应于结尾地址148的四个位模式158A至158D;这四个比较单元的比较结果会以一“或”运算模块160进行“或”运算,代表给定地址104只要符合位模式158A至158D其中之一,比较模块168就会判断给定地址小于结尾地址148。另外,像是用来判断给定地址104是否小于结尾地址142的比较模块162,由于结尾地址142本身仅对应于一个位模式152A,故比较模块162中仅设有一比较单元170,也不需要“或”运算模块了。就像图6B中的例子,图9B中也假设给定地址104的值为“0010010…0”,在此实例下,比较模块161至168的输出分别是“假”、“假”、“假”、“假”、“假”、“真”、“真”、“真”,代表此给定地址104不小于结尾地址141至145,而小于结尾地址146至148。根据各比较模块161至168上述的输出结果,逻辑模块100就能判断出给定地址104是属于存储模块80C的第二个直列存储阵列。事实上,上述值为“0010010…0”的给定地址104,恰好是存储模块80C中分配至第二直列存储阵列的第一个地址,就如图9A中所示。
在现有的地址解码技术中,是将给定地址与各结尾地址相减,以判断出给定地址与结尾地址之间的大小关系,并进一步判断出给定地址属于哪一个存储模块(或直列存储阵列),以完成初步的地址解码。但在将给定地址于结尾地址相减而进行二进制的加运算时,由于各位的加运算必需等待前一位的进位,故整个将给定地址于结尾地址相减的运算只能针对两地址中的每一位一个接着一个地一进行加运算,其所消耗的时间,也就是各位加运算所需时间的累计结果。故现有技术中进行初步地址解码所需消耗的时间较长,也就比较没有效率。相较之下,本发明则是以位模式比较的方式来进行初步地址解码;以本发明揭露的技术,可由一结尾地址中推导出一或多个对应的位模式;只要给定地址符合这些位模式的其中一个,就能判断给定地址小于该结尾地址。由于在位模式比较时,可同时比较位模式中具有固定值的多个位是否与给定地址中的对应位相同,不论要比较几个位,其所需的时间基本上就跟比较单一位所需的时间相同。故本发明能快速地进行初步地址解码,以较高的效率比较出给定地址属于哪一个存储模块或是直列存储阵列,并进而提升整个电脑系统对存储资源存取的效率。本发明可用硬件或以控制电路执行软件程序来实施;另外,在某些地址指派方式中,是将递减的地址指派至存储装置中的不同存储单元,像是以“11…111”、“11…110”、“11…101”的倒数地址依序指派至不同的存储单元。而本发明的精神也还是能应用于此种情形,以位模式比较的方式来进行快速的初步地址解码。
以上所述仅为本发明的较佳实施例,凡依本发明权利要求书所做的均等变化与修饰,皆应属本发明专利的涵盖范围。
权利要求
1.一种存储器地址解码的方法,以判断一给定地址落于该存储器的多个区段之一,每一区段设有多个存储单元,且所有存储单元的不同对应地址为二进制排列方式,该方法包含有根据该些对应地址,对每一区段分别取得至少一位模块;以及比较该给定地址的至少一比较位与该些位模块是否相符,并根据比较的结果,判断该给定地址落于该些区段之一。
2.如权利要求1所述的存储器地址解码方法,其中该些区段是为多个存储模块。
3.如权利要求1所述的存储器地址解码方法,其中该些区段是为多个直列存储阵列,且偶数个大小相同直列存储阵列构成一个存储模块。
4.如权利要求1所述的存储器地址解码方法,其中该每一区段分别取得至少一个位模块,是由取该些区段内对应地址的全部相同位,作为该些位模块。
5.如权利要求4所述的存储器地址解码方法,其中该些比较位完全不符合同一个区段的所有位模块,则表示该给定地址未落于该区段内。
6.如权利要求4所述的存储器地址解码方法,其中当该给定地址的该些比较位的值符合同一个区段的任一位模块,则表示该给定地址不大于该区段的最大对应地址。
7.如权利要求6所述的存储器地址解码方法,其中根据比较的结果判断该给定地址落于该些区段之一,是取该些比较位的值符合同一个区段的任一位模块中,最大对应地址为最小的该区段,来判断该给定地址落于该区段内。
8.如权利要求1所述的存储器地址解码方法,其中该每一区段分别取得至少一个位模块,是由取该些区段内对应地址的部分相同位,作为该些位模块。
9.如权利要求8所述的存储器地址解码方法,其中该些比较位完全不符合同一个区段的所有位模块,则表示该给定地址未落于该区段内。
10.如权利要求8所述的存储器地址解码方法,其中当该给定地址的该些比较位的值符合同一个区段的任一位模块,则表示该给定地址不大于该区段的最大对应地址。
11.如权利要求10所述的存储器地址解码方法,其中根据比较的结果判断该给定地址落于该些区段之一,是取该些比较位的值符合同一个区段的任一位模块中,最大对应地址为最小的该区段,来判断该给定地址落于该区段内。
12.一种存储器地址解码的控制电路,用来一给定地址是否落于该存储装置的多个区段之一,每一区段设有多个存储单元,且所有存储单元的不同对应地址为二进制排列方式,该控制电路包含有一模式计算模块,根据该些对应地址,对每一区段分别取得至少一位模块;一存取模块,接收该给定地址;以及一比较模块,分别以该模块计算器提供的该些位模块,与接收到该给定地址的至少一比较位进行比较是否相符后,送出多个比较信号。
13.如权利要求12所述的存储器地址解码的控制电路,更包括一逻辑模块,接收该些比较信号,送出一解码结果,以判断该给定地址落于该些区段之一。
14.如权利要求12所述的存储器地址解码的控制电路,其中该些区段是为多个存储模块。
15.如权利要求12所述的存储器地址解码的控制电路,其中该些区段是为多个直列存储阵列,且偶数个大小相同直列存储阵列构成一个存储模块。
16.如权利要求12所述的存储器地址解码的控制电路,其中该模式计算模块,对每一区段分别取得至少一位模块,是由取该些区段内对应地址的全部相同位,作为该些位模块。
17.如权利要求12所述的存储器地址解码的控制电路,其中该模式计算模块,对每一区段分别取得至少一位模块,是由取该些区段内对应地址的部分相同位,作为该些位模块。
18.如权利要求12所述的存储器地址解码的控制电路,其中该比较模块是由多个比较单位构成,每一比较单位包括多个“与非”门与一“与”门构成,每一“与非”门具有两输入端分别接收该些位模块的一个位与对应到该给定地址的一位,每一该“与非”门的输出端连接到该“与”门的输入端,该“与”门的输出端送出该比较信号。
全文摘要
本发明涉及一种存储器地址解码的方法及相关装置,以判断一给定地址位于该存储器中的哪一个区段。该存储装置中设有多个区段,各区段中设有多个存储单元,而每一存储单元分别具有一对应的地址。而该方法是比较该给定地址中部分位是否符合任一位模块,以判断该给定地址属于该存储器中的哪一个区段。
文档编号G06F7/38GK1438577SQ0310850
公开日2003年8月27日 申请日期2003年3月28日 优先权日2003年3月28日
发明者蔡日兴 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1