发明内容
本发明所要解决的技术问题是提供一种数据的存取方法,从而提高数据的读取速度。
为了解决上述问题,本发明公开了一种数据的存取方法,包括:
当从存储器中读取字节数据时,将该字节数据所属的一段地址连续的字节数据缓存在缓存器中;
再次读取字节数据时,判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同;若是,则直接从缓存器中读取所述字节数据;若否,则从存储器中查找相应的地址,读取所述字节数据。
优选的,所述一段地址连续的字节数据为整页数据;其中,所述整页数据中的各个字节数据的高位地址相同。
优选的,所述整页数据由地址连续的2N个字节数据构成。
优选的,所述判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同,具体为:判断所读取的字节数据的地址是否位于缓存器中缓存的整页数据的页地址内;当所读取的字节数据的高位地址与缓存器中缓存的整页数据的页地址相同时,判断为是;当所读取的字节数据的高位地址与缓存器中缓存的整页数据的页地址不同时,判断为否。
优选的,所述缓存器包括:锁存器组;其中,一个字节数据缓存在一个锁存器组中。
优选的,所述从存储器中查找相应的地址,读取所述字节数据之后,还包括:清空缓存器;则将当前读取的字节数据所属的一段地址连续的字节缓存在清空后的缓存器中。
优选的,对于异步存储器,当地址变换检测触发时,进行字节数据的读取操作;对于同步存储器,当同步时钟信号触发时,进行字节数据的读取操作。
相应的,本发明还公开了一种数据的存取装置,包括:
存储器,用于存储字节数据;
缓存器,用于当从存储器中读取字节数据时,缓存该字节数据所属的一段地址连续的字节数据;
判断单元,用于当读取字节数据时,判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同;
第一读取单元,用于当判断单元判断所读取的字节数据的地址与缓存器中缓存的一字节数据的地址相同时,直接从缓存器中读取所述字节数据;
第二读取单元,用于当判断单元判断所读取的字节数据的地址与缓存器中缓存的各个字节数据的地址均不同时,从存储器中查找相应的地址,读取所述字节数据。
优选的,所述一段地址连续的字节数据为整页数据;其中,所述整页数据中的各个字节数据的高位地址相同。
优选的,所述整页数据由地址连续的2N个字节数据构成。
优选的,所述判断单元判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同,具体为:判断所读取的字节数据的地址是否位于缓存器中缓存的整页数据的页地址内;当所读取的字节数据的高位地址与缓存器中缓存的整页数据的页地址相同时,判断为是;当所读取的字节数据的高位地址与缓存器中缓存的整页数据的页地址不同时,判断为否。
优选的,所述缓存器包括:锁存器组;其中,一个字节数据缓存在一个锁存器组中。
优选的,所述装置还包括:
数据清空单元,用于在第二读取单元从存储器中查找相应的地址,读取所述字节数据之后,清空缓存器;则清空后的缓存器对当前读取的字节数据所属的一段地址连续的字节数据进行缓存。
优选的,所述装置还包括:
触发单元,用于当所述存储器为异步存储器时,由地址变换检测触发;当所述存储器为异步存储器时,由同步时钟信号触发;
则第一读取单元或第二读取单元在触发单元执行触发操作后,进行字节数据的读取操作。
与现有技术相比,本发明具有以下优点:
本发明提供的一种数据的存取方法,当从存储器中读取字节数据时,将该字节数据所属的一段地址连续的字节数据缓存在缓存器中,当再次读取下一个字节数据时,首先进行地址判断,如果所读取的字节数据的地址与缓存器中缓存的一字节数据的地址相同,则以较快的速度直接从缓存器中读取,并送给CPU处理;如果没有找到,就以相对较慢的速度从存储器中读取并送给CPU处理。数据读取优先级顺序是先缓存器、后存储器,形成了一个既有缓存的高速度,又有通常存储器的大容量的存储系统。一般的,从存储器中读取数据的时间大约为70ns,而通过缓存器实现数据的读取,速度可提高至约20ns。通过缓存器的引入,节省了CPU直接从存储器中读取数据的时间,使得读取数据时基本无需等待。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明一种数据的存取方法实施例一的流程图,包括:
步骤101,当从存储器中读取字节数据时,将该字节数据所属的一段地址连续的字节数据缓存在缓存器中;
缓存器是CPU与存储器之间进行数据传输的临时存储器,缓存器的存储容量比存储器小,但是其数据交换速度较快。当CPU从存储器中读取字节数据(即,一个word)时,将该字节数据所属的一段地址连续的字节数据存储在缓存器中。也就是说,在缓存器中的存储的数据是存储器中的一小部分,但这一小部分是短时间内CPU即将访问的。
在本发明的一个优选实施例中,所述一段地址连续的字节数据为整页数据,整页数据中的各个字节数据的高位地址相同。进一步,所述整页数据由地址相邻的2N个字节数据构成,在本发明的优选实施例中,由8、16、32或64个字节数据构成整页数据。也就是说,可以通过对整页数据的大小进行定义,以调整缓存容量,如将8个word组成一整页数据进行缓存,则每一次缓存较少的数据量;或者,可以将16、32或64个word组成一整页数据进行缓存,则每一次缓存较多的数据量。
需要说明的是,本发明可以缓存所述字节数据所属一个整页数据,还可以缓存多个整页数据,或者也可以不按照页为单位进行缓存,只要所缓存的数据为一段地址连续的字节数据,且所读取的字节数据位于该段地址连续的字节数据之中即可。
步骤102,再次读取字节数据时,判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同;若是,则执行步骤103;若否,则执行步骤104;
由于缓存器中缓存了多个字节数据,则当再次读取字节数据时,判断所读取的字节数据是否已经存在于缓存器中,其依据字节数据的地址进行判断,如果所读取的字节数据的地址与缓存器中缓存的某一字节数据的地址相同,则说明所读取的字节数据已经缓存在缓存器中。
进一步,所述判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同,具体为:判断所读取的字节数据的地址是否位于缓存器中缓存的整页数据的页地址内;当所读取的字节数据的高位地址与缓存器中缓存的整页数据的页地址相同时,判断为是;当所读取的字节数据的高位地址与缓存器中缓存的整页数据的页地址不同时,判断为否。
对于整页数据,其中各个字节数据的高位地址相同,相同的高位地址称为页地址。例如,对于由21个地址位(A20~A0)表示的字节数据,如果将地址相邻的8个字节数据构成一个整页数据,则一个整页数据中,各个字节数据的高位地址A20~A3相同,低位地址A2~A0均不同,则A20~A3称之为高位地址。又如,如果将地址相邻的16个字节数据构成一个整页数据,则各个字节数据的高位地址A20~A4相同,低位地址A3~A0均不同,则此时,A20~A4称之为高位地址。
进一步,如果当前读取的字节数据地址的高位页地址部分与缓存器中缓存的整页数据对应的页地址相同时,例如,当前读取的字节数据的高位页地址部分A20~A4与缓存器中缓存的整页数据对应的页地址A20~A4相同(16个字节数据为一page),则判断所读取的字节数据的地址位于缓存器中缓存的整页数据的页地址内。
步骤103,直接从缓存器中读取所述字节数据;
再次读取字节数据时,如果判断所读取的字节数据的地址与缓存器中缓存的某一字节数据的地址相同,那么所读取的字节数据已经缓存在缓存器中,则CPU就可以避开存储器,直接从缓存器中调用数据,从而加快了数据的读取速度。
步骤104,从存储器中查找相应的地址,读取所述字节数据。
如果判断所读取的字节数据的地址与缓存器中缓存的各个字节数据的地址均不相同,则按照原有的读取方法,从存储器中查找相应的地址,获取所述字节数据。
本发明实施例提供的一种数据的存取方法,当从存储器中读取字节数据时,将该字节数据所属的一段地址连续的字节数据缓存在缓存器中,当再次读取下一个字节数据时,首先从缓存器中进行地址查找,如果所读取的字节数据的地址与缓存器中缓存的一字节数据的地址相同,则直接从缓存器中读取并送给CPU处理;如果没有找到,就以相对较慢的速度从存储器中读取并送给CPU处理。总的来说,数据读取优先级顺序是先缓存器、后存储器。则整个存储器成为了既有缓存的高速度,又有通常存储器的大容量的存储系统。一般的,从存储器中读取数据的时间大约为70ns,而通过缓存器实现数据的读取,速度可提高至约20ns。通过缓存器的引入,节省了CPU直接从存储器中读取数据的时间,使得读取数据时基本无需等待。
在本发明的具体实施例中,对于异步存储器,当地址变换检测(atd,Address Transition Detection)触发时,进行字节数据的读取操作。其中,atd触发指的是在异步存储器件中,不需要发送指令,通过一次读操作的触发事件即可实现数据的读取。对于同步存储器,当同步时钟信号触发时,进行字节数据的读取操作。
在本发明的一个优选实施中,所述缓存器包括:锁存器(Latch)组;一个字节数据缓存在一个锁存器组中。锁存器是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。通常的,每一个锁存器的存储单位是1bit,一个字节数据为8bit,一整页数据为128bit(由16个字节数据构成),则如果缓存一整页数据,需要128个锁存器,这128个锁存器构成16个锁存器组。
在本发明的另一个优选实施例中,所述从存储器中查找相应的地址,读取所述字节数据之后,还包括:清空缓存器;则将当前读取的字节数据所属的一段地址连续的字节缓存在清空后的缓存器中。
参照图2,示出了本发明一种数据的存取方法实施例二的流程图,本实施例以缓存整页数据为例进行具体说明,所述存储器为异步存储器。所述数据的存取方法包括:
步骤201,触发地址变换检测;
步骤202,从存储器中读取字节数据,并将该字节数据所属的整页数据缓存在缓存器中;
步骤203,再次触发地址变换检测;
步骤204,再次读取字节数据时,判断所读取的字节数据的地址是否位于缓存器中缓存的整页数据的页地址内;若是,则执行步骤205;若否,则执行步骤206;
具体的,所述判断读取的字节数据的地址是否位于缓存器中缓存的整页数据的页地址内为:当前读取的字节数据地址的高位页地址部分是否和缓存器中缓存的整页数据对应的页地址相同;若是,则判断读取的字节数据的地址位于缓存器中缓存的整页数据的页地址内,也即当前所读取的字节数据已经缓存在缓存器中。
步骤205,直接从缓存器的锁存器组中读取所述字节数据;
步骤206,从存储器中查找相应的地址,读取所述字节数据;之后执行步骤207;
步骤207,清空锁存器组,并将当前读取的字节数据所属的整页数据缓存在清空后的锁存器组中。
如果读取的字节数据地址不是位于缓存器中存储数据的页地址内部,则将锁存器组中缓存的整页数据删除。进一步,由于当前读取的字节数据为最新读取的字节数据,则将该字节数据所属的整页缓存在清空后的锁存器组中,以供下次数据读取使用。其中,所锁存器组缓存的数据始终是前一次读取的字节数据对应的整页数据。
下面,以一个具体实施例进行详细说明。参照图3,本发明一种在锁存器组中缓存数据的示意图。
在该实施例中,假设由6个地址位A5~A0构成一个数据,其中,A5~A3为高位地址,A2~A0为低位地址。8个字节数据构成一整页数据,则缓存器中包括8个锁存器组,每组锁存器可缓存一个字节数据。当从存储器中读取数据“110001”时,读取该数据所属的整页数据,缓存在缓存器中,即,将“110000”“110001”“110010”“110011”“110100”“110101”“110110”“110111”这8个地址内的字节数据构成的整页数据分别缓存在8个锁存器组中。此时,数据的存储方式如图3(a)所示。
atd触发后,再次读取出字节数据,例如读取的数据的地址为“110111”时,判断所读取的字节数据的地址位于缓存器中缓存的整页数据的页地址“110***”内,即“110111”的高位页地址部分“110”与缓存器中缓存的整页数据的页地址相同,则直接从缓存器中的锁存器内读取该字节数据。
atd触发后,再次读取出字节数据,例如读取的数据的地址为“001111”时,判断当前读取的字节数据地址位于当前缓存数据的页地址外部,即“001111”的高位页地址部分“001”与当前缓存器中缓存的整页数据的页地址“110***”不同,则从存储器中查找相应的地址,读取地址“001111”内的字节数据。然后,清空所有缓存器中的数据,把“001111”所属的新的整页数据从存储器中读出置于此缓存器之中,也即,将“001000”“001001”“001010”“001011”“001100”“001101”“001110”“001111”这8个地址内的字节数据构成的整页数据分别缓存在8个锁存器组中,此时,数据的存储方式如图3(b)所示。
可以理解的是,本发明实施例所述的由6个地址位构成一个字节数据仅是为了方便说明,作为一种举例,在具体实施时,通常由21个地址位构成一个字节数据。
参照图4,示出了本发明一种数据的存取装置实施例一的结构图,包括:
存储器401,用于存储字节数据;
缓存器402,用于当从存储器中读取字节数据时,缓存该字节数据所属的一段地址连续的字节数据;
判断单元403,用于当读取字节数据时,判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同;
第一读取单元404,用于当判断单元判断所读取的字节数据的地址与缓存器中缓存的一字节数据的地址相同时,直接从缓存器中读取所述字节数据;
第二读取单元405,用于当判断单元判断所读取的字节数据的地址与缓存器中缓存的各个字节数据的地址均不同时,从存储器中查找相应的地址,读取所述字节数据。
在本发明的一个优选实施例中,所述一段地址连续的字节数据为整页数据;其中,所述整页数据中的各个字节数据的高位地址相同。则当从存储器401中读取字节数据时,将该字节数据所属的整页数据缓存在缓存器402中。所述整页数据由地址连续的2N个字节数据构成,在本发明的优选实施例中,由8、16、32或64个字节数据构成整页数据。
进一步,所述判断单元判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同,具体为:
判断所读取的字节数据的地址是否位于缓存器中缓存的整页数据的页地址内;当所读取的字节数据的高位地址与缓存器中缓存的整页数据的页地址相同时,判断为是;当所读取的字节数据的高位地址与缓存器中缓存的整页数据的页地址不同时,判断为否。
当再次读取一个数据时,首先判断单元403所读取的字节数据的地址是否位于缓存器中缓存的整页数据的页地址内,如果是,则以相对较快的速度从缓存器402中读取所述字节数据,并发送给CPU进行后续处理;如果不是,就以相对较慢的速度从存储器401中读取该字节数据。
参照图5,示出了本发明一种数据的存取装置实施例二的结构图,包括:
存储器501,用于存储字节数据;
缓存器502,用于当从存储器中读取字节数据时,缓存该字节数据所属的一段地址连续的字节数据;
判断单元503,用于当读取字节数据时,判断所读取的字节数据的地址是否与缓存器中缓存的一字节数据的地址相同;
第一读取单元504,用于当判断单元判断所读取的字节数据的地址与缓存器中缓存的一字节数据的地址相同时,直接从缓存器中读取所述字节数据;
第二读取单元505,用于当判断单元判断所读取的字节数据的地址与缓存器中缓存的各个字节数据的地址均不相同时,从存储器中查找相应的地址,读取所述字节数据;
触发单元506,用于当所述存储器为异步存储器时,由地址变换检测触发;当所述存储器为异步存储器时,由同步时钟信号触发;;
第一读取单元504或第二读取单元505在触发单元506执行触发操作后,进行字节数据的读取操作。
进一步,所述缓存器包括:锁存器组;其中,一个字节数据缓存在一个锁存器组中。
此外,所述装置还包括:
数据清空单元507,用于在第二读取单元505从存储器501中查找相应的地址,读取所述字节数据之后,清空缓存器;则清空后的缓存器502对当前读取的字节数据所属的一段地址连续的字节数据进行缓存。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种数据的存取方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。