CN1536493A - 信息处理装置和方法、存储介质、程序及摄像装置 - Google Patents
信息处理装置和方法、存储介质、程序及摄像装置 Download PDFInfo
- Publication number
- CN1536493A CN1536493A CNA2004100328421A CN200410032842A CN1536493A CN 1536493 A CN1536493 A CN 1536493A CN A2004100328421 A CNA2004100328421 A CN A2004100328421A CN 200410032842 A CN200410032842 A CN 200410032842A CN 1536493 A CN1536493 A CN 1536493A
- Authority
- CN
- China
- Prior art keywords
- data
- virtual address
- address
- instruction
- address space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
Abstract
根据本发明,指令虚拟地址空间仅包括与仅存储指令页的物理地址空间的地址区域中的物理地址相对应的虚拟地址,数据虚拟地址空间仅包括与仅存储数据页的物理地址空间的地址区域中的物理地址相对应的虚拟地址。指令和数据虚拟地址空间使用重复的虚拟地址。指令和数据地址翻译单元将指令和数据虚拟地址空间的虚拟地址翻译成单个物理地址空间的物理地址。根据本发明,能够改善数据访问效率和指令执行速度。
Description
相关申请的交叉参考
本发明申请要求2003年10月23日向日本专利局提出的第2003-362812号申请和2003年4月11日向日本专利局提出的第2003-107351号申请的优先权,其整个内容在此引用作为参考。
技术领域
本发明涉及一种信息处理装置和方法、存储介质、程序及摄像装置,更具体地说,涉及一种能够改善数据访问效率和指令执行速度的信息处理装置和方法、存储介质、程序及摄像装置。
背景技术
如在日本专利申请公开JP06-75854号中公开了一种指令总线和数据总线分开的信息处理装置。在这种类型的信息处理装置中,通过使用单个的虚拟地址空间向和从存储器中传输指令和数据。也就是说,中央处理单元(CPU)通过使用虚拟地址空间向指令总线传输指令,并且使用同一虚拟地址空间向数据总线传输数据。
图1示出现有技术中虚拟和物理地址空间的结构示例。在图1中,虚拟地址空间1是从CPU看的存储器的地址空间,而物理地址空间是实际存储器的空间。在图1所示的示例中,尽管虚拟地址空间1和物理地址空间2是一一对应的,但是有些信息处理装置以多对一对应的方式使用多个虚拟地址空间和一个物理地址空间。
在图1所示的示例中,虚拟地址空间1包括:地址区域1-1至1-5,其中指令和数据的虚拟地址按照地址顺序以混合的方式布置;以及地址区域1-6至1-8,其中仅布置数据的虚拟地址。在每一个区域中,以作为地址翻译(address translation)的最小单元的一页大小的单元布置指令或数据。
布置在虚拟地址空间1的地址区域1-1中的指令和数据页实际上存储在物理地址空间2的地址区域2-1中。布置在虚拟地址空间1的地址区域1-2中的指令和数据页实际上存储在物理地址空间2的地址区域2-2中。布置在虚拟地址空间1的地址区域1-3中的指令和数据页实际上存储在物理地址空间2的地址区域2-6中。布置在虚拟地址空间1的地址区域1-4中的指令和数据页实际上存储在物理地址空间2的地址区域2-4中。
布置在虚拟地址空间1的地址区域1-5中的指令和数据页实际上存储在物理地址空间2的地址区域2-3中。布置在虚拟地址空间1的地址区域1-6中的数据页实际上存储在物理地址空间2的地址区域2-5中。布置在虚拟地址空间1的地址区域1-7中的数据页实际上存储在物理地址空间2的地址区域2-8中。布置在虚拟地址空间1的地址区域1-8中的数据页实际上存储在物理地址空间2的地址区域2-7中。
如上所述,在虚拟地址空间1和物理地址空间2中,虚拟地址和物理地址是一一对应的。因此,如果CPU参照虚拟地址空间1指定指令或数据的虚拟地址,则将所指定的虚拟地址翻译成物理地址。从存储器中读出对应于所翻译的物理地址的指令或数据并传输给CPU。以这种方式,CPU能够执行与所指定的虚拟地址相对应的指令。
在现有技术中,将图1所示相同的虚拟地址空间用于指令传输和数据传输。由于与指令一起使用的长数据需要存储为附加数据,所以在虚拟地址空间中以混合方式布置指令和数据的虚拟地址。
图2示出图1所示的虚拟地址空间1的地址区域1-1的结构示例。在图2所示的示例中,地址区域1-1从顶部区域开始按照顺序包括分别用于存储指令1至4、跳转指令1、数据1、数据2、以及指令5至9的虚拟地址。CPU指定地址区域1-1的虚拟地址以执行针对虚拟地址存储的指令。例如,CPU指定指令1至9的虚拟地址以便顺序执行从指令1开始的这些指令。但是,在图2所示的示例中,在指令4和5的虚拟地址之间存在数据1和数据2的虚拟地址。因此,在从指令1开始顺序执行所述指令时,在指令4之后需要执行指令5。由此需要在指令4的虚拟地址之后立即布置跳转指令1,用于从指令4到指令5的无条件转移。
如图3所示,如果指令3需要读取数据3,并且用于存储数据3的虚拟地址存储在指令3的操作数不能指定的距离d2处的虚拟地址中(距离d2远离用于指令3的虚拟地址),则指令3的操作数不能直接指定数据3。为了读取数据3,需要在指令3的操作数能够直接指定的距离d1处的虚拟地址中再一次保存数据2作为数据3的相对地址。在这种情况下,指令3读出保存为数据2的数据3的相对地址,并且通过使用该相对地址,指令4能够读出数据3。与直接指定相比,需要使用两条指令和为该指令保存的数据(相对地址)。
如果指令总线和数据总线是分开的,则信息处理装置通常配置有指令高速缓存(存储器)11和数据高速缓存(存储器)12,如图4所示。在图4所示的示例中,当CPU指定地址区域1-1中跳转指令1的虚拟地址时,在指令高速缓存11中寄存从跳转指令1、数据1、数据2、以及直至指令5的范围e1。当CPU指定数据1的虚拟地址时,在数据高速缓存12中寄存相同的范围e1。更具体的说,不仅跳转指令1和指令5,而且不用作指令的数据1和2(图4中的阴影部分)也寄存在指令高速缓存11中。类似的,不仅数据1和2,而且不用作数据的跳转指令1和指令5(图4中的阴影部分)也寄存在数据高速缓存12中。
发明内容
如上所述,在具有分开的指令和数据总线的信息处理装置中,指令和数据的虚拟地址在虚拟地址空间1中以混合方式布置,因为它们使用相同的虚拟地址空间1。因此,如果指令使用数据,则需要跳转指令来跳过数据以便执行指令。由此增加指令的数量,并且指令执行时间延长。此外,如果由指令使用的数据的虚拟地址在指令的操作数不能指定的距离d2处,则需要将目标数据的相对地址存储为另一数据。由此需要使用另一指令以便取回地址,从而使得指令执行时间增加。
除了上面提到的几点之外,数据还存储到指令高速缓存11,指令还存储到数据高速缓存12,从而耗费珍贵的存储器区域。
因此,非常希望改进数据访问效率和指令执行速度。本发明正是考虑到上述情形作出的。
根据本发明的一个实施例的信息处理装置包括:多个传输部件,用于在处理器部件和存储部件之间传输指令或数据;以及至少一个地址翻译部件,用于将处理器部件指定的虚拟地址翻译成存储部件的物理地址。每一个传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠。地址翻译部件将传输部件的虚拟地址空间翻译成单个的物理地址空间。
传输部件可以包括用于传输指令的指令总线和用于传输数据的数据总线。伴随对传输部件进行访问的指令的虚拟地址与指令访问的数据的虚拟地址之间的差可以等于或小于能够直接由指令的操作数指定为相对地址的距离。
信息处理装置还可以包括为每一个传输部件提供的高速缓存,所述高速缓存使用虚拟地址作为标签。
虚拟地址空间可以以如下方式包括虚拟地址,即,指令的虚拟地址和数据的虚拟地址之间的边界变为高速缓存的行边界(line border)。
信息处理装置还可以包括用于在多个传输部件之间进行区分并识别高速缓存数据的高速缓存。
此时,虚拟地址空间可以以如下方式包括虚拟地址,即,指令的虚拟地址和数据的虚拟地址之间的边界变为高速缓存的行边界。
如果将由地址翻译部件翻译的地址翻译单元包含指令的虚拟地址和数据的虚拟地址两者,则包括在翻译单元中的数据可以仅为常数数据。
地址翻译部件可以将传输部件的虚拟地址空间翻译成相互不具有重叠地址的单个物理地址空间。
存储部件可以包括写禁止区域和写允许区域。写禁止区域和写允许区域二者的虚拟地址可以布置在能够由伴随对存储部件访问的指令的操作数直接指定为相对地址的范围内的虚拟地址空间中。
存储部件可以包括至少一个输入/输出(I/O)寄存器。伴随对I/O寄存器进行访问的指令的虚拟地址与代表I/O寄存器的虚拟地址之间的差可以等于或小于能够直接由指令的操作数指定为相对地址的距离。
代表同一I/O寄存器的虚拟地址可以被划分并布置在虚拟地址空间的多个区域中。
地址翻译部件可以翻译(n+m)位虚拟地址的高n位,并且所翻译的高n位的至少一位或多位可以与剩余的m位的至少一位或多位进行交换,从而将虚拟地址翻译成物理地址。
地址翻译部件可以翻译(n+m)位虚拟地址的高n位,并且所剩余的低m位的至少一位或多位可以与所剩余的低m位的另外一位或多位进行交换,从而将虚拟地址翻译成物理地址。
根据本发明的一个实施例,提供一种用于信息处理装置的信息处理方法。所述信息处理装置包括:处理器部件,用于执行操作;存储部件,用于存储处理器部件执行所述操作时所需的指令或数据;多个传输部件,用于在处理器部件和存储部件之间传输指令或数据;以及至少一个地址翻译部件,用于将处理器部件指定的虚拟地址翻译成存储部件的物理地址。每一个传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;并且,地址翻译部件包括翻译步骤,用于将传输部件的虚拟地址空间翻译成单个的物理地址空间。
该信息处理方法还可以包括步骤:以如下方式指派虚拟地址,即,传输部件的独立虚拟地址空间包括与其它传输部件的虚拟地址空间相互重叠的地址。
根据本发明的一个实施例,提供一种存储用于信息处理装置的计算机可读程序的存储介质。所述信息处理装置包括:处理器部件,用于执行操作;存储部件,用于存储处理器部件执行所述操作时所需的指令或数据;多个传输部件,用于在处理器部件和存储部件之间传输指令或数据;以及至少一个地址翻译部件,用于将处理器部件指定的虚拟地址翻译成存储部件的物理地址。每一个传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;并且,地址翻译部件包括翻译步骤,用于将传输部件的虚拟地址空间翻译成单个的物理地址空间。
该存储介质还可以包括步骤:以如下方式指派虚拟地址,即,传输部件的独立虚拟地址空间包括与其它传输部件的虚拟地址空间相互重叠的地址。
根据本发明的一个实施例,提供一种用于使信息处理装置执行的程序。所述信息处理装置包括:处理器部件,用于执行操作;存储部件,用于存储处理器部件执行所述操作时所需的指令或数据;多个传输部件,用于在处理器部件和存储部件之间传输指令或数据;以及至少一个地址翻译部件,用于将处理器部件指定的虚拟地址翻译成存储部件的物理地址。每一个传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;并且,地址翻译部件包括翻译步骤,用于将传输部件的虚拟地址空间翻译成单个的物理地址空间。
该程序还可以包括步骤:以如下方式指派虚拟地址,即,传输部件的独立虚拟地址空间包括与其它传输部件的虚拟地址空间相互重叠的地址。
根据本发明的一个实施例的摄像装置包括:摄像部件,用于拍摄对象的图像;编码部件,用于对摄像部件拍摄的对象的图像数据进行编码;处理器部件,用于执行操作,指定编码部件对图像数据进行编码时所需的指令或数据;以及存储部件,用于存储处理器部件执行操作时所需的指令或数据。该摄像装置还可以包括:多个传输部件,用于在处理器部件和存储部件之间传输指令或数据;以及至少一个地址翻译部件,用于将处理器部件指定的虚拟地址翻译成存储部件的物理地址。每一个传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;地址翻译部件将传输部件的虚拟地址空间翻译成单个的物理地址空间;以及编码部件根据与处理器部件指定并由地址翻译部件翻译的地址相对应的存储部件中的指令或数据,对图像数据进行编码。
根据本发明的该实施例,具有与其它虚拟地址空间相互重叠的地址的虚拟地址空间被翻译成单个的物理地址空间。
根据本发明的一个实施例,提供一种信息处理装置,包括:处理器,用于执行操作;以及存储器,用于存储处理器执行所述操作时所需的指令或数据,该信息处理装置还包括:多个传输部分,用于在处理器和存储器之间传输指令或数据;以及至少一个地址翻译器,用于将处理器指定的虚拟地址翻译成存储器的物理地址。每一个传输部分包括一个包含多个地址的独立虚拟地址空间,其与其它传输部分的虚拟地址空间相互重叠;以及地址翻译器将传输部分的虚拟地址空间翻译成单个的物理地址空间。
根据本发明的一个实施例,提供一种摄像装置,包括:摄像部分,用于拍摄对象的图像;编码器,用于对摄像部分拍摄的对象的图像数据进行编码;处理器,用于执行操作,指定编码器对图像数据进行编码时的指令或数据;以及存储器,用于存储处理器执行操作时的指令或数据。该摄像装置还包括:多个传输部分,用于在处理器和存储器之间传输指令或数据;以及至少一个地址翻译器,用于将处理器指定的虚拟地址翻译成存储器的物理地址。此外,每一个传输部分包括一个包含多个地址的独立虚拟地址空间,其与其它传输部分的虚拟地址空间相互重叠;地址翻译器将传输部分的虚拟地址空间翻译成单个的物理地址空间;以及编码器根据与处理器指定并由地址翻译部分翻译的地址相对应的存储器中的指令或数据,对图像数据进行编码。
根据本发明,可以改善数据访问效率和指令执行速度。此外,根据本发明,可以减少不必要的存储器区域。
附图说明
随着下面结合附图对本发明最佳实施方式的详细描述,本发明的上述和其它目的、特点和优点将变得更加清楚。其中:
图1示出现有技术中虚拟地址空间的结构示例图;
图2示出在图1所示现有技术的虚拟地址空间的详细结构示例图;
图3示出在图1所示现有技术的虚拟地址空间的另一详细结构示例图;
图4示出现有技术的高速缓存中数据的结构示例图;
图5示出根据本发明的实施例的信息处理装置的结构示例方框图;
图6示出图5所示的信息处理装置的指令虚拟地址空间和数据虚拟地址空间的结构示例图;
图7示出图6所示的指令虚拟地址空间和数据虚拟地址空间的详细结构示例图;
图8示出图7所示的指令虚拟地址空间和数据虚拟地址空间的更加详细的结构示例图;
图9示出图5所示并应用到图7所示示例的指令高速缓存中和数据高速缓存中的数据示例图;
图10示出图7所示的指令虚拟地址空间和数据虚拟地址空间的另一结构示例图;
图11示出图7所示的指令虚拟地址空间和数据虚拟地址空间的又一结构示例图;
图12示出图5所示并应用到图11所示示例的指令高速缓存中和数据高速缓存中的数据的结构示例图;
图13示出图5所示的信息处理装置的数据虚拟地址空间的结构示例图;
图14示出现有技术中地址翻译的示例图;
图15示出由图5所示的信息处理装置执行的地址翻译的示例图;
图16示出由图5所示的信息处理装置执行的地址翻译处理的流程图;
图17示出根据本发明的实施例的摄像装置的结构示例方框图;
图18示出图17所示的CPU单元的结构示例方框图;
图19示出图17所示的摄像装置的指令虚拟地址空间和数据虚拟地址空间的结构示例图;
图20示出由图17所示的摄像装置执行的地址翻译的示例图;
图21示出由图17所示的摄像装置执行的地址翻译处理的流程图;
图22示出由图17所示的摄像装置执行的地址翻译的另一示例图;
图23示出由图17所示的摄像装置执行的图像数据记录处理的流程图;
图24示出在图23所示的指令虚拟地址空间和数据虚拟地址空间控制步骤S55的结构示例图;
图25示出由图23所示的CPU单元控制步骤S55进行的编码开始命令处理的流程图;
图26示出与图24相比现有技术中虚拟地址空间的结构示例图;
图27示出与图25相比现有技术中编码开始命令处理的流程图;以及
图28示出根据本发明的实施例的信息处理装置的另一结构的示例方框图。
具体实施方式
在下面各个实施例的描述中,所公开的本发明和各个实施例之间的对应简述如下。在本说明书中作为与本发明不对应而描述的实施例不一定意味着该实施例与本发明不对应。相反,在本说明书中作为与本发明相对应而描述的实施例也不意味着该实施例不对应于与本发明不同的其它发明。
此外,该描述并不试图涵概在说明书中描述的本发明的所有部分。换句话说,并不试图否认存在在本说明书中描述的发明,但是没有在该申请中要求保护,也就是说,不否认存在将来可能提交分案的发明、或者通过改进并在将来提交的发明。
根据本发明的一个实施例,提供一种信息处理装置。该信息处理装置包括用于执行操作的处理器部件、以及用于存储处理器部件执行该操作时所需的指令或数据的存储部件。具有用于执行操作的处理器部件(例如图5所示的CPU 61)、以及用于存储处理器部件执行该操作时所需的指令或数据的存储部件(例如图5所示的存储器62)的信息处理装置(例如图5所示的信息处理装置51)包括:多个传输部件(例如图5所示的指令总线71和数据总线72),用于在处理器部件和存储部件之间传输指令或数据;以及至少一个地址翻译部件(例如图5所示的指令地址翻译单元64或数据地址翻译单元66),用于将处理器部件指定的虚拟地址翻译成存储部件的物理地址。每一个传输部件(例如图5所示的指令总线71)包括一个包含多个地址的独立虚拟地址空间(例如图6所示的指令虚拟地址空间101),其与其它传输部件(例如图5所示的数据总线72)的虚拟地址空间(例如图6所示的数据虚拟地址空间102)相互重叠;以及地址翻译部件将传输部件的虚拟地址空间(例如图6所示的指令虚拟地址空间101)翻译成单个的物理地址空间(例如图7所示的物理地址空间103)。
该信息处理装置还可以包括为每一个传输部件提供的高速缓存(例如图5所示的指令高速缓存63),所述高速缓存使用虚拟地址作为标签。
在该信息处理装置中,虚拟地址空间(例如图11所示的虚拟地址空间121)可以以如下方式包括虚拟地址,即,指令的虚拟地址和数据的虚拟地址之间的边界变为高速缓存的行边界。
在该信息处理装置中,地址翻译部件将传输部件的虚拟地址空间翻译成相互不具有重叠地址的单个物理地址空间(例如图7所示的物理地址空间103)。
在该信息处理装置中,存储部件可以包括写禁止区域(例如图13所示的ROM的地址区域161)和写允许区域(例如图13所示的RAM的地址区域162),并且,写禁止区域和写允许区域二者的虚拟地址可以布置在能够由伴随对存储部件访问的指令的操作数直接指定为相对地址的范围内的虚拟地址空间(例如图13所示的数据虚拟地址空间151)中。
在该信息处理装置中,存储部件可以包括至少一个输入/输出(I/O)寄存器,并且,伴随对I/O寄存器进行访问的指令的虚拟地址(例如图19所示的指令虚拟地址空间252)与代表I/O寄存器的虚拟地址(例如图19所示的数据虚拟地址空间253)之间的差可以等于或小于能够直接由指令的操作数指定为相对地址的距离。
在该信息处理装置中,代表同一I/O寄存器的虚拟地址可以被划分并布置在虚拟地址空间(例如图19所示的数据虚拟地址空间253)的多个区域中。
根据本发明的一个实施例,提供一种用于信息处理装置的信息处理方法。在该信息处理方法中,所述信息处理装置包括:处理器部件(例如图5所示的CPU 61),用于执行操作;存储部件(例如图5所示的存储器62),用于存储处理器部件执行该操作时所需的指令或数据;多个传输部件(例如图5所示的指令总线71和数据总线72),用于在处理器部件和存储部件之间传输指令或数据;以及至少一个地址翻译部件(例如图5所示的指令地址翻译单元64或数据地址翻译单元66),用于将处理器部件指定的虚拟地址翻译成存储部件的物理地址。每一个传输部件(例如图5所示的指令总线71)包括一个包含多个地址的独立虚拟地址空间(例如图6所示的指令虚拟地址空间101),其与其它传输部件(例如图5所示的数据总线72)的虚拟地址空间(例如图6所示的数据虚拟地址空间102)相互重叠;以及地址翻译部件(例如图5所示的指令地址翻译单元64)包括翻译步骤(例如图16所示的步骤S13和S14),将传输部件的虚拟地址空间(例如图6所示的指令虚拟地址空间101)翻译成单个的物理地址空间(例如图7所示的物理地址空间103)。
根据本发明的一个实施例,提供一种摄像装置(例如图17所示的摄像装置201)。该摄像装置包括:摄像部件(例如图17所示的CCD215),用于拍摄对象的图像;编码部件(例如图17所示的JPEG编码器单元223),用于对摄像部件拍摄的对象的图像数据进行编码;处理器部件(例如图18所示的CPU 61),用于执行操作,指定编码部件对图像数据进行编码时所需的指令或数据;以及存储部件(例如图18所示的ROM 212、RAM 213或I/O寄存器231),用于存储处理器部件执行操作时所需的指令或数据。该摄像装置还可以包括:多个传输部件(例如图18所示的指令总线71和数据总线72),用于在处理器部件和存储部件之间传输指令或数据;以及至少一个地址翻译部件(例如图18所示的指令地址翻译单元64或数据地址翻译单元66),用于将处理器部件指定的虚拟地址翻译成存储部件的物理地址。每一个传输部件(例如图18所示的指令总线71)包括一个包含多个地址的独立虚拟地址空间(例如图19所示的指令虚拟地址空间252),其与其它传输部件(例如图18所示的数据总线72)的虚拟地址空间(例如图19所示的数据虚拟地址空间253)相互重叠;地址翻译部件(例如图18所示的指令地址翻译单元64)包括翻译步骤,将传输部件的虚拟地址空间(例如图19所示的指令虚拟地址空间252)翻译成单个的物理地址空间(例如图19所示的物理地址空间251);以及编码部件根据与处理器部件指定并由地址翻译部件翻译的地址相对应的存储部件中的指令或数据,对图像数据进行编码。
根据本发明的实施例的存储介质和程序基本上具有与上面描述的信息处理方法相同的结构,由此省略其详细描述,以避免不必要的重复。
下面将参照附图描述本发明的各个实施例。
图5示出根据本发明的实施例的信息处理装置51的结构示例方框图。中央处理单元(CPU)61获取存储在存储器62中的指令和数据,并根据所获取的指令和数据执行各种算法计算。在图5所示的示例中,信息处理装置51具有用于从CPU 61传输指令的指令总线71和用于从CPU 61传输数据的数据总线72,指令总线和数据总线相互分开。如下文中将参照图6所描述的,独立提供用于指令总线71的指令虚拟地址空间101和用于数据总线72的数据虚拟地址空间102。
存储器62包括只读存储器(ROM)、随机存取存储器(RAM)等,并在其中存储CPU 61执行其算法计算时使用的指令、数据等。
如果CPU 61获取指令,它通过指令虚拟地址空间101指定指令的虚拟地址来查找存储器62。CPU 61通过指令总线71输出所指定的指令虚拟地址到指令高速缓存63和指令地址翻译单元64。如果CPU 61获取数据,它通过数据虚拟地址空间102指定数据的虚拟地址来查找存储器62。CPU 61通过数据总线72输出所指定的数据虚拟地址到数据高速缓存65和数据地址翻译单元66。每一数据包括常数、变量、寄存器地址等。
指令高速缓存63通过使用虚拟地址作为标签,临时存储每一个具有任意容量(例如,诸如16字节和32字节的高速缓存行单元(line unit))并从总线控制器67输出的指令。指令高速缓存63参照在指令高速缓存63中的标签,判断通过指令总线71输入的虚拟地址是否与指令高速缓存63中通过标签记录的指令的虚拟地址一致。如果判断输入的虚拟地址与指令高速缓存63中通过标签记录的指令的虚拟地址一致,则具有一致虚拟地址的指令通过指令总线71输出到CPU 61。
如果指令高速缓存63判断输入的虚拟地址与指令高速缓存63中通过标签记录的指令的虚拟地址不一致,则指令地址翻译单元64将通过指令总线71输入的虚拟地址翻译成存储器62中的物理地址,并将其输出到总线控制器67。
数据高速缓存65通过使用虚拟地址作为标签,临时存储每一个具有任意容量(例如,诸如16字节和32字节的高速缓存行单元)的数据组。数据高速缓存65参照在数据高速缓存65中的标签,判断通过数据总线72输入的虚拟地址是否与数据高速缓存65中通过标签记录的数据的虚拟地址一致。如果判断输入的虚拟地址与数据高速缓存65中通过标签记录的数据的虚拟地址一致,则具有一致虚拟地址的数据通过数据总线72输出到CPU 61。
如果数据高速缓存65判断输入的虚拟地址与数据高速缓存65中通过标签记录的数据的虚拟地址不一致,则数据地址翻译单元66将通过数据总线72输入的虚拟地址翻译成存储器62中的物理地址,并将其输出到总线控制器67。
指令地址翻译单元64和数据地址翻译单元66(或者它们中的一个)以地址翻译的单元控制存储器62的读/写访问权。如果写指令等从CPU61输入,并且如果相应的虚拟地址表明为写禁止(只读)区域,则将例外信号等通知给CPU 61。
总线控制器67从存储器62获取与指令地址翻译单元64供给的物理地址相对应的指令,并通过指令高速缓存63和指令总线71将其输出到CPU 61。类似地,总线控制器67从存储器62获取与数据地址翻译单元66供给的物理地址相对应的数据,并通过数据高速缓存65和数据总线72将其输出到CPU 61。
在该信息处理装置51中,尽管分别与指令总线71和数据总线72相对应独立提供指令高速缓存63和数据高速缓存65,但是也可以使用单个的高速缓存。在这种情况下,高速缓存在通过指令总线71和数据总线72供应的指令和数据之间区分,并临时存储具有任意容量的指令和数据。
图6示出图5所示的信息处理装置51使用的虚拟地址空间的结构示例图。在图6所示的示例中,虚拟地址空间彼此独立,并包括用于指令总线71的指令虚拟地址空间101和用于数据总线72的数据虚拟地址空间102。
指令虚拟地址空间101和数据虚拟地址空间102使用部分重叠的虚拟地址。例如,指令虚拟地址空间101使用从“0x000000”到“0x100000”的虚拟地址,数据虚拟地址空间102使用从“0x000000”到“0x010000”的虚拟地址。指令虚拟地址空间101和数据虚拟地址空间102重复使用从“0x000000”到“0x010000”的虚拟地址。
参照图7将描述如上构造的指令虚拟地址空间101和数据虚拟地址空间102、以及作为实际存储器62的地址空间的物理地址空间103之间的对应。在指令虚拟地址空间101和数据虚拟地址空间102中,假定在从顶行开始数时、位于相同行上的区域使用相同的虚拟地址。
在图7所示的示例中,物理地址空间103包括:按照地址顺序(地址增加顺序)的仅存储指令页的地址区域103-1至103-4、仅存储数据页的地址区域103-5、仅存储指令页的地址区域103-6、以及仅存储数据页的地址区域103-7和103-8。每一个地址区域以作为最小地址翻译单元(比如4KB)的页大小单元(地址翻译)来构建。
指令虚拟地址空间101仅包括与在物理地址空间103中仅存储指令页的地址区域的物理地址相对应的虚拟地址。也就是说,指令虚拟地址空间101包括:地址区域101-1,布置在其中的是与仅存储指令页的地址区域103-1相对应的虚拟地址;地址区域101-2,布置在其中的是与仅存储指令页的地址区域103-2相对应的虚拟地址;地址区域101-3,布置在其中的是与仅存储指令页的地址区域103-6相对应的虚拟地址;地址区域101-4,布置在其中的是与仅存储指令页的地址区域103-4相对应的虚拟地址;以及地址区域101-5,布置在其中的是与仅存储指令页的地址区域103-3相对应的虚拟地址。
数据虚拟地址空间102仅包括与在物理地址空间103中仅存储数据页的地址区域的物理地址相对应的虚拟地址。也就是说,数据虚拟地址空间102包括:地址区域102-1,布置在其中的是与仅存储数据页的地址区域103-5相对应的虚拟地址;地址区域102-2,布置在其中的是与仅存储数据页的地址区域103-8相对应的虚拟地址;以及地址区域102-3,布置在其中的是与仅存储数据页的地址区域103-7相对应的虚拟地址。
指令地址翻译单元64中存储指令虚拟地址空间101和物理地址空间103之间的对应关系作为指令地址翻译表。数据地址翻译单元66中存储数据虚拟地址空间102和物理地址空间103之间的对应关系作为数据地址翻译表。
例如,如果CPU 61指定与地址区域101-1中的仅指令页相对应的虚拟地址,则指令地址翻译单元64通过参照指令地址翻译表将该虚拟地址翻译成地址区域103-1的物理地址。以这种方式,CPU 61能够获取与地址区域103-1中的物理地址相对应的指令。
类似地,例如,如果CPU 61指定与数据区域102-1中的仅数据页相对应的虚拟地址,则数据地址翻译单元66通过参照数据地址翻译表将该虚拟地址翻译成地址区域103-5的物理地址。以这种方式,CPU 61能够获取与地址区域103-5中的物理地址相对应的数据。
如上所述,通过使用两个地址翻译表,即使指令虚拟地址空间101和数据虚拟地址空间102使用重复的虚拟地址,指令虚拟地址空间101和数据虚拟地址空间102的虚拟地址也能够翻译成物理地址区域103的预定的单个并且不重复的地址。
指令地址翻译单元64和数据地址翻译单元66通过使用指令和数据翻译表将指令虚拟地址空间101和数据虚拟地址空间102重复使用的虚拟地址翻译成物理地址空间103中的单个物理地址。或者,通过额外使用用于区分从指令总线71输入的虚拟地址和从数据总线72输入的虚拟地址的标识符,地址翻译可以通过使用单个地址翻译单元和两个地址翻译表来执行。
如上所述,由于独立地提供指令虚拟地址空间101和数据虚拟地址空间102,在虚拟地址空间中能够完全地分开指令和数据。因此,数据和使用数据的指令能够分配在比图1的虚拟地址空间中所示的彼此靠近的虚拟地址(或者位于相同的虚拟地址)中。即使由指令使用的比如长常数的数据与指令分开独立存储,数据也能分配给数据虚拟地址空间102。因此,在指令虚拟地址空间101中不需要使用参照图1所描述的跳转指令1,并且能够抑制浪费指令的数量增加。
图8示出图7所示的指令虚拟地址空间101和数据虚拟地址空间102的以地址翻译单元为单位的地址区域101-1和102-1的结构示例图。在指令虚拟地址空间101和数据虚拟地址空间102中,假定在从顶行开始数时、位于相同行上的区域使用相同的虚拟地址。
在图8所示的示例中,指令虚拟地址空间101的地址区域101-1包括与指令1至12相对应的虚拟地址(用于存储指令1至12的虚拟地址),数据虚拟地址空间102的地址区域102-1包括与数据1至12相对应的虚拟地址(用于存储数据1至12的虚拟地址)。
严格地讲,如果CPU 61指定一个虚拟地址,在指令或数据位于指令高速缓存63或数据高速缓存65的情况下,则与所指定的虚拟地址相对应的指令或数据输出到CPU 61。如果指令或数据没有在指令高速缓存63或数据高速缓存65中,则指令地址翻译单元64或数据地址翻译单元66将该虚拟地址翻译成物理地址,然后总线控制器67从存储器62读取指令或数据(存储在所述物理地址处的指令或数据),并将其输出到CPU 61。但是,为了描述方便起见,在本说明书中将描述为例如“如果CPU 61指定一个虚拟地址,则读出与该虚拟地址对应的指令或数据并执行所述指令”。
在图8所示的示例中,CPU 61指定指令3的虚拟地址,并执行用于读取例如数据7的指令3。在这种情况下,由于指令和数据使用分开的地址空间,并且指令虚拟地址空间101和数据虚拟地址空间102使用重复的虚拟地址,所以用于将由指令3读取的数据7的虚拟地址可以设置为指令3的操作数能够指定的距离D1处的虚拟地址。由此,CPU 61能够通过指令3的操作数指定用于数据7的虚拟地址,以便直接读出数据7。
如上所述,由于指令虚拟地址空间101和数据虚拟地址空间102使用重复的虚拟地址,所以如下机会将变得更为频繁,即,用于将由指令指定的数据的虚拟地址可以设置为与用于指令的虚拟地址相距指令的操作数能够指定的距离处的虚拟地址。因此,能够避免必须在操作数能够指定的距离处再次保存由指令所指定的数据的相对地址的情况。
图9示出在图5所示的指令高速缓存63和数据高速缓存65中的指令和数据的结构示例图。在图9中,与图8所示的元素相对应的元素使用相同的参考标号标识,并省略其重复描述。
在图9所示的示例中,在指令虚拟地址空间101的地址区域101-1中,指令1至4的范围E1表示如果CPU 61指定在地址区域101-1中用于指令1的虚拟地址,将在指令高速缓存63中寄存的指令的范围。指令5至8的范围E2表示如果CPU 61指定在地址区域101-1中用于指令5的虚拟地址,将在指令高速缓存63中寄存的指令的范围。指令9至12的范围E3表示如果CPU 61指定在地址区域101-1中用于指令9的虚拟地址,将在指令高速缓存63中寄存的指令的范围。由于指令虚拟地址空间101中的虚拟地址仅用于存储指令1至12,所以只有将指令寄存在指令高速缓存63中。
在数据虚拟地址空间102的地址区域102-1中,数据1至4的范围E1表示如果CPU 61指定在地址区域102-1中用于数据1的虚拟地址,将在数据高速缓存65中寄存的数据的范围。数据5至8的范围E2表示如果CPU 61指定在地址区域102-1中用于数据5的虚拟地址,将在数据高速缓存65中寄存的数据的范围。数据9至12的范围E3表示如果CPU 61指定在地址区域102-1中用于数据9的虚拟地址,将在数据高速缓存65中寄存的数据的范围。由于数据虚拟地址空间102中的虚拟地址仅用于存储数据1至12,所以只有将数据寄存在数据高速缓存65中。
如上所述,数据将不会寄存到指令高速缓存63中,而指令也不会寄存到数据高速缓存65中。因此,指令高速缓存63和数据高速缓存65能够高效地使用珍贵的存储器区域。
在图7所示的示例中,指令虚拟地址空间101包括仅与指令页相对应的虚拟地址,数据虚拟地址空间102包括仅与数据页相对应的虚拟地址,并且将指令虚拟地址空间101和数据虚拟地址空间102的虚拟地址翻译成单个且不重复的物理地址空间103的预定地址。在这种情况下,如图10所示,空白区域可能出现在某些情形中。
图10示出图7所示的指令虚拟地址空间101、数据虚拟地址空间102、以及物理地址空间103之间的对应关系的另一示例图。在图10中,与图7所示的元素相对应的元素使用相同的参考标号标识,并省略其重复描述。
在图10所示的示例中,物理地址空间103包括:按照地址顺序(地址增加顺序)的仅存储指令页的地址区域103-11至103-14、包括仅存储指令页的区域和空白区域的地址区域103-15、以及仅存储数据页的地址区域103-16至103-18。
指令虚拟地址空间101包括:地址区域101-11,布置在其中的是与仅存储指令页的地址区域103-11相对应的虚拟地址;地址区域101-12,布置在其中的是与仅存储指令页的地址区域103-12相对应的虚拟地址;地址区域101-13,布置在其中的是与仅存储指令页的地址区域103-14相对应的虚拟地址;地址区域101-14,布置在其中的是与仅存储指令页的地址区域103-13相对应的虚拟地址;以及地址区域101-15,布置在其中的是与包括仅存储指令页的区域和空白区域的地址区域103-15相对应的虚拟地址。
数据虚拟地址空间102包括:地址区域102-11,布置在其中的是与仅存储数据页的地址区域103-18相对应的虚拟地址;地址区域102-12,布置在其中的是与仅存储数据页的地址区域103-17相对应的虚拟地址;以及地址区域102-13,布置在其中的是与仅存储数据页的地址区域103-16相对应的虚拟地址。
在图10所示的示例中,指令地址翻译单元64和数据地址翻译单元66以页单元(地址翻译单元)为单位将虚拟地址翻译成单个且不重复的物理地址空间103的预定地址。因此,在物理地址空间103中,需要指令和数据的物理地址以页单元(地址翻译单元)为单位进行划分。也就是说,如在物理地址空间103的地址区域103-15中所示,需要将指令和数据之间的边界与页单元(地址翻译单元)的边界对齐,由此在指令和数据的物理地址之间形成空白区域。在某些情况下,这可能需要额外的存储器。
为了避免这种情况,在信息处理装置51中,如图11所示,将常数数据布置在具有图10所示的指令和数据之间的边界的地址区域103-15的空白区域中,从而使该地址区域103-15由用于指令和数据两者的虚拟地址使用。
图11示出指令虚拟地址空间121、数据虚拟地址空间122、以及物理地址空间103之间的对应关系的示意图。图11所示的指令虚拟地址空间121和数据虚拟地址空间122是图7所示的指令虚拟地址空间101和数据虚拟地址空间102的另一示例。
在图11所示的示例中,物理地址空间103包括:按照地址顺序(地址增加顺序)的仅存储指令页的地址区域103-11至103-14、包括仅存储指令页的区域和仅存储数据的区域的地址区域103-15、以及仅存储数据页的地址区域103-16。在图11所示的示例中,将常数数据的地址布置在具有图10所示物理地址空间103的指令和数据之间的边界的地址区域103-15的空白区域中。
指令虚拟地址空间121包括:地址区域121-1,布置在其中的是与仅存储指令页的地址区域103-11相对应的虚拟地址;地址区域121-2,布置在其中的是与仅存储指令页的地址区域103-12相对应的虚拟地址;地址区域121-3,布置在其中的是与仅存储指令页的地址区域103-14相对应的虚拟地址;地址区域121-4,布置在其中的是与仅存储指令页的地址区域103-13相对应的虚拟地址;以及地址区域121-5,布置在其中的是与包括仅存储指令页的区域和仅存储常数数据的区域的地址区域103-15相对应的虚拟地址。也就是说,与指令虚拟地址空间101类似,尽管指令虚拟地址空间121主要包括与仅存储指令页的地址区域的物理地址相对应的虚拟地址,它还包括具有指令和数据之间的边界的地址区域中与常数数据相对应的虚拟地址。
数据虚拟地址空间122包括:地址区域122-1,布置在其中的是与包括仅存储指令页的区域和仅存储常数数据的区域的地址区域103-15相对应的虚拟地址;地址区域122-2,布置在其中的是与仅存储数据页的地址区域103-16相对应的虚拟地址;以及地址区域122-3,布置在其中的是与仅存储数据页的地址区域103-16相对应的虚拟地址。也就是说,与数据虚拟地址空间102类似,尽管数据虚拟地址空间122主要包括与仅存储数据页的地址区域的物理地址相对应的虚拟地址,它还包括具有指令和数据之间的边界的地址区域中与指令相对应的虚拟地址。
类似于参照图7所作的描述,指令地址翻译单元64中存储指令虚拟地址空间121和物理地址空间103之间的对应关系作为指令地址翻译表。数据地址翻译单元66中存储数据虚拟地址空间122和物理地址空间103之间的对应关系作为数据地址翻译表。
例如,如果CPU 61指定与地址区域121-1中的仅指令页相对应的虚拟地址,则指令地址翻译单元64通过参照指令地址翻译表将该虚拟地址翻译成地址区域103-11的物理地址。以这种方式,CPU 61能够获取与地址区域103-11中的物理地址相对应的指令。此外,如果CPU 61指定与地址区域121-5中的仅指令页相对应的虚拟地址,则指令地址翻译单元64通过参照指令地址翻译表将该虚拟地址翻译成地址区域103-15的物理地址。以这种方式,CPU 61能够获取与地址区域103-15中的物理地址相对应的指令。
类似地,例如,如果CPU 61指定与数据区域122-1中的仅常数数据页相对应的虚拟地址,则数据地址翻译单元66通过参照数据地址翻译表将该虚拟地址翻译成地址区域103-15的物理地址。以这种方式,CPU 61能够获取与地址区域103-15中的物理地址相对应的常数数据。此外,例如,如果CPU 61指定与数据区域122-2中的仅数据页相对应的虚拟地址或者如果CPU 61指定与数据区域122-3中的仅数据页相对应的虚拟地址,则数据地址翻译单元66通过参照数据地址翻译表将该虚拟地址翻译成地址区域103-16的物理地址。以这种方式,CPU 61能够获取与地址区域103-16中的物理地址相对应的数据。
也就是说,在图11所示的示例中,指令虚拟地址空间121的地址区域121-5和数据虚拟地址空间122的地址区域122-1都翻译成物理地址空间103的同一地址区域103-15。地址区域122-2和122-3都翻译成物理地址空间103的同一地址区域103-16。
如上所述,独立地提供指令虚拟地址空间和数据虚拟地址空间,并且物理地址空间103的同一地址区域(例如地址区域103-5)由指令虚拟地址空间和数据虚拟地址空间两者的虚拟地址使用。因此,类似于图7所示的指令虚拟地址空间101和数据虚拟地址空间103,数据和使用数据的指令能够分配在比图1的虚拟地址空间中所示的彼此靠近的虚拟地址(或者位于相同的虚拟地址)中。此外,在物理地址空间103中,指令和数据能够布置在同一页(地址翻译)单元中,从而能够降低存储器69中的浪费区域,比如上面参照图10描述的空白区域。
另外,在这种情况下,布置在与指令相同的页单元中的数据仅仅是函数地址和诸如比较目标常数之类的常数数据,如在地址区域103-5中所示。因此,指令地址翻译单元64或数据地址翻译单元66能够将存储器62中布置指令和常数数据的页区域作为只读区域。使用该方案,即使在编程期间发生不期望的缓冲器溢出,至少可以防止随便执行一条指令,因为参数没有分配在指令虚拟地址空间中。
在图11所示的物理地址空间103中,由于将数据虚拟地址空间122中(比如地址区域122-2和122-3中)以页单元为单位的多个虚拟地址翻译成同一物理地址空间(比如地址区域103-16),所以能够高效地使用存储器62的区域。与数据虚拟地址空间122类似,在指令虚拟地址空间121中,也可以将多个以页单元的虚拟地址翻译到同一物理地址区域。
图12示出使用图11所示的指令虚拟地址空间121和数据虚拟地址空间122、在图5所示的指令高速缓存63和数据高速缓存65中的指令和数据的结构示例。在图12所示的示例中,将使用与图11所示的物理地址空间103的同一地址区域103-15相对应的指令虚拟地址空间121的地址区域121-5和数据虚拟地址空间122的地址区域122-1来进行描述。
在图12所示的示例中,指令虚拟地址空间121的地址区域121-5包括与指令1至8和常数数据1至4对应的虚拟地址(用于存储指令1至8和常数数据1至4的虚拟地址)。指令1至4的范围F1、指令5至8的范围F2、以及常数数据1至4的范围F3为将要寄存到高速缓存中的范围。也就是说,在地址区域121-5中,用于指令和常数数据的虚拟地址以高速缓存行单元(例如16字节和32字节)分开。
因此,如果CPU 61指定地址区域121-5中指令1的虚拟地址,则范围F1中的指令寄存到指令高速缓存63中;如果CPU 61指定地址区域121-5中指令5的虚拟地址,则范围F2中的指令寄存到指令高速缓存63中。但是,由于不会指定指令虚拟地址空间121的地址区域121-5中的常数数据的虚拟地址,所以范围F3中的常数数据不会寄存到指令高速缓存63中。
类似地,数据虚拟地址空间122的地址区域122-1包括与指令1至8和常数数据1至4对应的虚拟地址(用于存储指令1至8和常数数据1至4的虚拟地址)。指令1至4的范围F1、指令5至8的范围F2、以及常数数据1至4的范围F3为将要寄存到高速缓存中的范围。也就是说,在地址区域122-1中,用于指令和常数数据的虚拟地址以高速缓存行单元分开。
同样,在这种情况下,如果CPU 61指定地址区域122-1中常数数据1的虚拟地址,则范围F3中的数据寄存到数据高速缓存65中。但是,由于不会指定数据虚拟地址空间122的地址区域122-1中的指令的虚拟地址,所以范围F1或F2中的指令将不会寄存到数据高速缓存65中。
如上所述,由于指令和数据布置在同一页(地址翻译)单元中,并且指令和数据以高速缓存行单元分开,所以能够比图10所示示例以页单元分开的情况更进一步地降低存储器62的浪费区域。此外,数据不会寄存到指令高速缓存63中,并且指令不会寄存到数据高速缓存65中,从而能够高效使用珍贵的存储器区域。
在图11所示的指令虚拟地址空间121和数据虚拟地址空间122中,相同页(地址翻译)单元中的指令和数据在物理地址空间103的具有指令和数据之间的边界的地址区域(地址翻译单元)中以高速缓存行单元分开。在除具有指令和数据之间的边界的地址区域之外的地址区域中,指令和数据以类似于图7所示的指令虚拟地址空间101和数据虚拟地址空间102的方式分开。
因此,类似于图7所示的指令虚拟地址空间101和数据虚拟地址空间102,在指令虚拟地址空间121和数据虚拟地址空间122中,数据和使用数据的指令能够分配在比图1的虚拟地址空间中所示的彼此靠近的虚拟地址(或者位于相同的虚拟地址)中,这也是非常明显的。即使由指令使用的比如长常数的数据与指令分开独立存储,数据也经常分配到数据虚拟地址空间122中。因此,与图1所示的虚拟地址空间相比,能够抑制浪费指令的数量增加。
在前面的描述中,没有对存储器62的结构进行具体描述。下面将参照图13描述包括各种器件的存储器62。在下面的描述中,虽然使用具有参照图7所描述的结构的虚拟地址空间,但是相同的存储器结构也能够应用到具有参照图11所描述的结构的虚拟地址空间,并且省略关于后者的描述。
在图13所示的示例中,存储器62包括ROM和RAM。ROM是一种只读半导体存储器,其中存储不需要重写的指令和将由指令使用的数据。RAM由通过指定任意地址能够读出和写入的半导体存储器构成,其中存储ROM中的指令所指定的数据或其它数据。因此,尽管指令虚拟地址空间(未示出)包括ROM,但是数据虚拟地址空间151包括ROM和RAM,如图13所示。在图13中,尽管ROM用作写禁止区域,并且RAM用作写允许区域,但是写禁止区域也可以包括由指令地址翻译单元64或数据地址翻译单元66禁止写入的RAM。
图13示出数据虚拟地址空间151和相应的物理地址空间152的结构示例图。在图13所示的示例中,物理地址空间152包括4K字节的用于存储ROM数据的地址区域161、以及4K字节的用于存储RAM数据的地址区域162。
数据虚拟地址空间151包括按照顺序排列的2K字节的用于存储ROM数据的地址区域171、2K字节的用于存储RAM数据的地址区域172、2K字节的用于存储ROM数据的地址区域173、以及2K字节的用于存储RAM数据的地址区域174。在数据虚拟地址空间151中,存储在物理地址空间152中4K字节ROM的地址区域161中的数据分割存储在为地址区域161一半容量的2K字节的地址区域171和173中,以及存储在物理地址空间152中4K字节RAM的地址区域162中的数据分割存储在为地址区域162一半容量的2K字节的地址区域172和174中。
通过以上述方式构建数据虚拟地址空间151,与具有与物理地址空间152的结构相同结构的数据虚拟地址空间151相比,即使与指令虚拟地址空间开始部分的指令相对应的数据存储在RAM中,以及即使与指令虚拟地址空间结束部分的指令相对应的数据存储在RAM中,与指令相对应的数据的虚拟地址也能够避免位于远离指令的相对较远距离处。
下面将参照图14和15描述将数据虚拟地址空间151中的虚拟地址翻译成物理地址空间152中的物理地址的方法。
在图14所示的示例中,对于图13的物理地址空间152中所示的每一4K字节的地址区域,器件(ROM和RAM)是不同的,并且,物理地址182总共具有32位:高20位用作器件选择地址,低12位用作器件内的偏移地址。器件选择地址用于选择器件(例如ROM或RAM),而器件内的偏移地址用于指定器件内的偏移位置(例如在ROM的地址区域中)。
例如,如果将图13所示数据虚拟地址空间151中的RAM地址区域172的虚拟地址181翻译到物理地址空间152中的RAM地址区域162的地址区域162的物理地址182,则不仅需要选择器件,而且需要翻译器件内的偏移位置。因此,如图14的阴影部分所示,不仅需要翻译作为器件选择地址的高20位,而且需要翻译作为器件内的偏移地址的一部分低位(在图14所示的示例中为1位)。
如图15所示,数据虚拟地址空间151中的虚拟地址181的低12位不需要翻译,而仅需通过使用数据地址翻译表使虚拟地址181的高20位(图15中的阴影部分)经历预定的地址翻译,以便获取翻译后的地址191。之后,翻译后的高20位(图15中的阴影部分)的最低1位与剩余低12位的最高1位交换,以获取物理地址182。以这种方式,通过使用数据地址翻译表,能够获得不仅具有翻译后的器件选择地址、而且具有翻译后的器件内的偏移地址的物理地址182,无需直接翻译作为器件内的偏移地址的低位。
图15所示的地址翻译方法使用比图14所示的地址翻译方法少的位数,从而能够更加高效地执行地址翻译。假定考虑翻译之后在高1位和低1位之间交换的情况下形成图15所示的方法使用的数据地址翻译表。高位的数量、低位的数量、地址位的总数量、以及翻译之后要交换的高和低位的预定数量,不仅限于上面所描述的。例如,翻译之后要交换的高和低位的预定数量可以是2位或10位。
下面将参照图16所示的流程图描述上面参照图15所描述的地址翻译处理。
为了从存储器62获取数据,CPU 61参照数据虚拟地址空间151,并通过数据总线72输出与该数据相对应的虚拟地址(例如,图15所示的虚拟地址181)到数据高速缓存65和数据地址翻译单元66。
在步骤S11,数据高速缓存65等待一直到从CPU 61输入虚拟地址为止。如果判断从CPU 61中输入了虚拟地址,流程前进到步骤S12,在此判断与CPU 61输入的虚拟地址相对应的数据在数据高速缓存65中是否存在。
如果在步骤S12中判断与CPU 61输入的虚拟地址相对应的数据在数据高速缓存65中不存在,则数据高速缓存65将该结果输出给数据地址翻译单元66,流程前进到步骤S13,在此数据地址翻译单元66通过参照预定的数据地址翻译表翻译虚拟地址的高20位,流程前进到步骤S14。在这种情况下,如从图15所示的翻译后的地址191所看到的,虚拟地址剩余下的低12位仍旧保持不变,并且不翻译它们。
在步骤S14,数据地址翻译单元66交换翻译后的高20位地址的一部分(在图15所示的示例中为1位)与剩余的低12位地址的一部分(在图15所示的示例中为1位),以获取物理地址(在图15所示的示例中为物理地址182)。所获取的物理地址输出到总线控制器67,流程前进到步骤S15。
在步骤S15,总线控制器67从存储器62获取与数据地址翻译单元66供应的物理地址相对应的数据,并将其输出到数据高速缓存65,流程前进到步骤S16,在此数据高速缓存65通过数据总线72将总线控制器67供应的数据输出给CPU 61。
如果在步骤S12中判断与CPU 61输入的虚拟地址相对应的数据在数据高速缓存65中存在,则跳过步骤S13至S15的处理,直接前进到步骤S16,在此通过数据总线72将与CPU 61输入的虚拟地址相对应的数据输出到CPU 61。
如上所述,仅仅翻译CPU 61指定的数据虚拟地址空间151中的虚拟地址的高位地址,并将翻译后的一部分高位地址与一部分剩余的低位地址交换。以这种方式,翻译为物理地址空间中的物理地址成为可能。需要翻译的位数由此能够比翻译整个虚拟地址的位数少。从而能够改善翻译效率。
图17示出根据本发明的一个实施例的摄像装置201的结构示例方框图。摄像装置201可以是可携式摄像机(内置摄像机的视频记录器)、数字静止摄像机(DSC)等等。参照图17,CPU单元211根据存储在只读存储器(ROM)211或随机存取存储器(RAM)213中的指令或程序执行各种算法计算处理。
透镜214从对象接收光,并将光聚焦到电荷耦合器件(CCD)摄像单元215(下文中简称为CCD 215)。CCD 215输出对象图像的图像数据到模拟/数字(A/D)转换器单元216。A/D转换器单元216将CCD 215供应的图像数据转换为数字数据,并将其输出到信号处理器单元217。信号处理器单元217处理由A/D转换器单元216转换的数字图像数据,并将处理后的图像数据通过存储器控制单元218存储到存储器219。
显示控制单元220通过存储器控制单元218读取存储在存储器219中的图像数据,并控制液晶显示器(LCD)编码器221以适合于LCD 222的格式对从存储器219读出的图像数据进行编码,以便在LCD 222上显示图像。
联合图像专家组(JPEG)编码器单元223通过存储器控制单元218读取存储在存储器219中的图像数据,对其进行JPEG编码并通过存储器控制单元218写回存储器29。记录控制单元224通过存储器控制单元218从存储器219读取JPEG编码器单元223编码的图像数据,并将其记录到诸如光盘和记忆棒(商标)之类的存储介质225中。
尽管未在图17中示出,信号处理器单元217、存储器控制单元218、显示控制单元220、JPEG编码器单元223、以及记录控制单元224均具有由CPU单元211控制的输入/输出(I/O)寄存器。CPU单元211从/向信号处理器单元217、存储器控制单元218、显示控制单元220、JPEG编码器单元223、以及记录控制单元224中的每一个所内置的I/O寄存器读/写数据,从而控制这些单元。
图18示出图17所示的CPU单元211的结构示例图。在图18中,与图5所示的元素相对应的元素用相应的参考标号和字符表示,并且省略其相应描述,以便适当地避免重复描述。
CPU 61获取存储在ROM 212和I/O寄存器231中的指令和数据,并根据该指令和数据执行各种算法计算处理。CPU 61从/向RAM 213和I/O寄存器231读/写数据。I/O寄存器231包括内置在分别由CPU61控制的信号处理器单元217、存储器控制单元218、显示控制单元220、JPEG编码器单元223、以及记录控制单元224中的各个I/O寄存器。
指令地址翻译单元64和数据地址翻译单元66控制RAM 213和I/O寄存器231的读/写访问权。如果写指令等从CPU 61输入,并且如果相应的虚拟地址表示写禁止(只读)区域,则指令地址翻译单元64和数据地址翻译单元66将例外信号等通知CPU 61。
图18所示的CPU单元211具有分开的用于从CPU 61传输指令的指令总线71和用于从CPU 61传输数据(常数、变量、寄存器地址)的数据总线72。正如下面将参照图19所描述的,CPU单元211具有包括ROM 212、RAM 213、以及I/O寄存器231的物理地址的物理地址空间251,以及独立的虚拟地址空间:用于指令总线71的指令虚拟地址空间252、以及用于数据总线72的数据虚拟地址空间253。
如果CPU 61从ROM 212获取指令,它通过指令虚拟地址空间252查找ROM 212,并指定相应于该指令的虚拟地址。CPU 61通过指令总线71输出所指定的虚拟地址到指令高速缓存63和指令地址翻译单元64。如果CPU 61从ROM 212、RAM 213或I/O寄存器231获取数据,它通过数据虚拟地址空间253查找ROM 212、RAM 213或I/O寄存器231,并指定相应于该数据的虚拟地址。CPU 61通过数据总线72输出所指定的虚拟地址到数据高速缓存65和数据地址翻译单元66。
总线控制器67从ROM 212获取与指令地址翻译单元64供给的物理地址相对应的指令,并通过指令高速缓存63和指令总线71将其输出到CPU 61。总线控制器67从ROM 212、RAM 213或I/O寄存器231获取与数据地址翻译单元66供给的物理地址相对应的数据,并通过数据高速缓存65和数据总线72将其输出到CPU 61。
图19示出摄像装置201的物理地址空间251、指令虚拟地址空间252和数据虚拟地址空间253各自的结构示例。在图19所示的指令虚拟地址空间252和数据虚拟地址空间253中,假定在从顶行开始数时、位于相同行上的区域使用相同的虚拟地址。
在摄像装置201中,尽管使用诸如物理地址空间251进行硬件互联,但是CPU 61可以将该物理地址空间看作是诸如指令虚拟地址空间252和数据虚拟地址空间253的虚拟地址映射结构。
物理地址空间251包括:ROM 212的用于存储指令的地址区域251-1;ROM 212的用于存储数据的地址区域251-2;RAM 213的用于存储数据的地址区域251-3;信号处理器单元217的I/O寄存器中用于存储数据的地址区域251-4;存储器控制单元218的I/O寄存器中用于存储数据的地址区域251-5;JPEG编码器单元223的I/O寄存器中用于存储数据的地址区域251-6;显示控制单元220的I/O寄存器中用于存储数据的地址区域251-7;以及记录控制单元224的I/O寄存器中用于存储数据的地址区域251-8。
指令虚拟地址空间252包括ROM 212的用于存储指令的地址区域252-1。
数据虚拟地址空间253包括:ROM 212的用于存储数据的地址区域253-1;RAM 213的用于存储数据的地址区域253-2;信号处理器单元217的I/O寄存器中用于存储数据的地址区域253-3;ROM 212的用于存储数据的地址区域253-4;RAM 213的用于存储数据的地址区域253-5;存储器控制单元218的I/O寄存器中用于存储数据的地址区域253-6;ROM 212的用于存储数据的地址区域253-7;RAM 213的用于存储数据的地址区域253-8;JPEG编码器单元223的I/O寄存器中用于存储数据的地址区域253-9;ROM 212的用于存储数据的地址区域253-10;RAM 213的用于存储数据的地址区域253-11;显示控制单元220的I/O寄存器中用于存储数据的地址区域253-12;ROM 212的用于存储数据的地址区域253-13;RAM 213的用于存储数据的地址区域253-14;以及记录控制单元224的I/O寄存器中用于存储数据的地址区域253-15。
也就是说,存储在物理地址空间251上的地址区域251-1中的ROM 212的指令存储在指令虚拟地址空间252中的地址区域252-1中。存储在物理地址空间251上的地址区域251-2中的ROM 212的数据分开存储在数据虚拟地址空间253的各个地址区域253-1、地址区域253-4、地址区域253-7、地址区域253-10、以及地址区域253-13中。存储在物理地址空间251上的地址区域251-3中的RAM 213的数据分开存储在数据虚拟地址空间253的各个地址区域253-2、地址区域253-5、地址区域253-8、地址区域253-11、以及地址区域253-14中。
存储在物理地址空间251上的地址区域251-4中的信号处理器单元217的I/O寄存器的数据存储在数据虚拟地址空间253的地址区域253-3中。存储在物理地址空间251上的地址区域251-5中的存储器控制单元218的I/O寄存器的数据存储在数据虚拟地址空间253的地址区域253-6中。存储在物理地址空间251上的地址区域251-6中的JPEG编码器单元223的I/O寄存器的数据存储在数据虚拟地址空间253的地址区域253-9中。存储在物理地址空间251上的地址区域251-7中的显示控制单元220的I/O寄存器的数据存储在数据虚拟地址空间253的地址区域253-12中。存储在物理地址空间251上的地址区域251-8中的记录控制单元224的I/O寄存器的数据存储在数据虚拟地址空间253的地址区域253-15中。
如上所述,在图18所示的摄像装置201中,如此构建指令虚拟地址空间252,以便仅仅布置(存储)指令的虚拟地址;并且,如此构建数据虚拟地址空间253,以便仅仅布置(存储)诸如常数、变量、以及寄存器地址之类的数据的虚拟地址。使得具有重复地址的指令虚拟地址空间252和数据虚拟地址空间253相互独立。因此,如前面参照图7至9所描述的,指令及相应数据的虚拟地址之间的距离不远。不需要布置诸如常数的数据,也不需要使用诸如跳转指令的指令,从而抑制浪费指令的数量增加。
在数据虚拟地址空间252中,将I/O寄存器组(信号处理器单元217、存储器控制单元218、显示控制单元220、JPEG编码器单元223、以及记录控制单元224中的I/O寄存器)划分并布置在多个地址区域中。因此,可以避免将指令及相应数据的虚拟地址布置的相距较远,并且如下机会将变得更为频繁,即,用于将由指令指定的数据的虚拟地址可以设置为与用于指令的虚拟地址相距指令的操作数能够指定的距离处的虚拟地址。
存储在物理地址空间251的地址区域251-2中的ROM 212的数据分开存储在数据虚拟地址空间253的地址区域253-1、地址区域253-4、地址区域253-7、地址区域253-10、以及地址区域253-13的虚拟地址中,存储在物理地址空间251的地址区域251-3中的RAM 213的数据分开存储在地址区域253-2、地址区域253-5、地址区域253-8、地址区域253-11、以及地址区域253-14的虚拟地址中。因此,可以避免将指令及相应数据的虚拟地址布置的相距较远,并且如下机会将变得更为频繁,即,用于将由指令指定的数据的虚拟地址可以设置为与用于指令的虚拟地址相距指令的操作数能够指定的距离处的虚拟地址。
在前面的描述中,尽管基于参照图7所描述的虚拟地址空间的结构来构建物理地址空间251、指令虚拟地址空间252、以及数据虚拟地址空间253,但是它们也可以基于图11所示的虚拟地址空间的结构构建。在这种情况下,除了上述效果外,还可以减少诸如ROM 212、RAM213、以及I/O寄存器等存储器中的浪费区域,这是因为可以将多个虚拟地址翻译到物理地址空间的同一页(地址翻译)单元中。
在图19所示的示例中,将ROM 212和RAM 213的数据分开存储在数据虚拟地址空间253的多个地址区域的虚拟地址中。类似地,信号处理器单元217、存储器控制单元218、显示控制单元220、JPEG编码器单元223、以及记录控制单元224的I/O寄存器中每一个的数据(相同寄存器的数据)也可以寄存在数据虚拟地址空间253的多个地址区域的虚拟地址中。
下面将参照图20和21所示的流程图详细描述从按照如上所述方式布置的数据虚拟地址空间253到物理地址空间251的地址翻译处理。在图21所示的处理中执行类似于图16所示的处理,因此省略其详细描述,以便适当地避免重复描述。
图20示出在数据地址翻译单元66中所执行的地址翻译示例。为了从ROM 212、RAM 213或I/O寄存器231中获取数据,或者为了向ROM 212、RAM 213或I/O寄存器231写入数据,CPU 61参照数据虚拟地址空间253,并通过数据总线72将与数据对应的虚拟地址261(n+m位)输出到数据高速缓存65和数据地址翻译单元66。
在图20所示的示例中,虚拟地址包括n位高位地址和m位低位地址。高位地址表示作为地址翻译最小单元的页的开始地址,低位地址表示页内的偏移地址。
在图21所示的步骤S31,数据高速缓存65等待一直到从CPU 61输入虚拟地址为止。如果判断从CPU 61中输入了虚拟地址,流程前进到步骤S32,在此判断与CPU 61输入的虚拟地址相对应的数据在数据高速缓存65中是否存在。
如果在步骤S32中判断与CPU 61输入的虚拟地址相对应的数据在数据高速缓存65中不存在,则流程前进到步骤S33,在此数据地址翻译单元66通过参照数据地址翻译表271翻译虚拟地址261的n位高位地址,流程前进到步骤S34。
在图20所示的示例中,(n+m)位虚拟地址261的n位高位地址表示作为地址翻译最小单元的页的开始地址。数据地址翻译单元66具有翻译表271,在将代表页开始地址的高位地址翻译成物理地址的多个页开始地址中的预定页开始地址时使用。数据地址翻译单元66参照该数据地址翻译表271,并获取对应于n位高位地址的页开始地址,以将n位高位地址翻译成相应的页开始地址。由于没有翻译剩下的m位低位地址,所以翻译后的地址262包括所翻译出的页开始地址(图20中的阴影部分)和原来的低位地址。
在图21所示的步骤S34,数据地址翻译单元66交换分别在翻译后的地址262中的翻译后的n位页开始地址的一部分(例如3位)与剩余的m位低位地址的一部分。以这种方式,获得图20所示的物理地址。物理地址263包括:(n-3)位页开始地址,3位低位地址,3位页开始地址,以及(m-3)位低位地址,以此顺序从左边(高位侧)开始。数据地址翻译单元66将所获取的物理地址263输出到总线控制器67,流程前进到图21所示的步骤S35。
在步骤S35中,总线控制器67从ROM 212、RAM 213或I/O寄存器231获取与数据地址翻译单元66供应的物理地址263相对应的数据,并将其输出到数据高速缓存65,流程前进到步骤S36。在步骤S36中,数据高速缓存65通过数据总线72将总线控制器67供应的数据输出给CPU 61。
如果在步骤S32中判断与CPU 61输入的虚拟地址相对应的数据在数据高速缓存65中存在,则跳过步骤S33至S35的处理,直接前进到步骤S36,在此通过数据总线72将与CPU 61输入的虚拟地址相对应的数据输出到CPU 61。
如上所述,仅仅翻译CPU 61指定的数据虚拟地址空间253中虚拟地址261的页开始地址的高位地址,并将一部分翻译后的高位地址与一部分剩余的低位地址交换。以这种方式,翻译为物理地址空间251中的物理地址263成为可能。不需翻译数据虚拟地址的低位地址而有可能翻译成物理地址。需要翻译的位数由此能够减少,并且能够改善翻译效率。
在前面的描述中,在图20所示的翻译后的地址262中,一部分翻译后的高位地址与一部分剩余的低位地址交换。物理地址281也可以通过图22所示的处理来获得。在图22所示的示例中,在翻译后的地址262中,参照数据地址翻译表271翻译的页开始地址(高位地址)没有改变,而是将剩余低位地址(m位)的一部分(例如低位地址的高2位和接下来的2位)交换,以获取物理地址281。在这种情况下,物理地址包括:n位页开始地址,交换的4位(2位+2位)低位地址,以及(m-4)位低位地址,以此顺序从左边(高位侧)开始。
下面将参照图23的流程图描述摄像装置201的图像数据记录处理。
透镜214从对象接收光,并将其聚焦到CCD 215。CCD 215输出对象图像的图像数据到A/D转换器单元216。据此,在步骤S51,信号处理器单元217通过A/D转换器单元216接收从CCD 215供应的图像数据,流程前进到步骤S52,在此从CCD 215供应的图像数据经历预定的信号处理,并将处理后的图像信号输出给存储器控制单元218。存储器控制单元218在存储器219中存储从信号处理器单元217供应的图像数据,流程前进到步骤S53。
在步骤S53,JPEG编码器单元223在存储器219中设置图像数据的地址,并且在存储器219中设置编码后的图像数据的地址,用于存储编码后的图像数据,流程前进到步骤S54,在此设置编码控制值,然后流程前进到步骤S55。
根据在步骤S53和S54中设置的存储器219中的图像数据和编码后的图像数据的地址、以及编码控制值,JPEG编码器单元223在步骤S55对图像数据进行编码。JPEG编码器单元223控制存储器控制单元218在存储器219中存储编码后的图像数据,流程前进到步骤S56。
在步骤S56,JPEG编码器单元223控制存储器控制单元218从存储器219中读出编码后的图像数据,然后流程前进到步骤S57,在此将从存储器219读出的编码后的图像数据记录到存储介质225中。
摄像装置201拍摄的图像数据以上面描述的方式记录到存储介质上。图23所示所有步骤中的处理由CPU 61控制ROM 212、RAM213、以及信号处理器单元217、存储器控制单元218、显示控制单元220、JPEG编码器单元223、以及记录控制单元224中的每一个所内置的I/O寄存器来执行。
也就是说,如参照图20和21的流程图所描述的,将CPU 61指定的虚拟地址翻译成物理地址,并将该物理地址输出给ROM 212、RAM213、以及信号处理器单元217、存储器控制单元218、显示控制单元220、JPEG编码器单元223、以及记录控制单元224中的每一个所内置的I/O寄存器。各步骤中的处理由分别对应于CPU 61所指定的虚拟地址的ROM 212、RAM 213、以及信号处理器单元217、存储器控制单元218、显示控制单元220、JPEG编码器单元223、以及记录控制单元224中的每一个所内置的I/O寄存器来执行。
下面参照图24和图25所示的流程图描述与图23所示的步骤S55中的编码处理相对应的CPU 61的编码开始命令处理。在图24中,JPEG编码器单元223的I/O寄存器包括:由CPU 61使用的JPEG启动寄存器以指令JPEG编码器单元223的启动,以及由CPU 61使用的JPEG状态寄存器以确认JPEG编码器单元223的状态。
在图24所示的示例中,指令虚拟地址空间包括:用于存储执行操作“读出将要写入JPEG启动寄存器的常数“0x00000100””的命令“LOAD R0,jpegstart”的虚拟地址;用于存储执行操作“将常数“0x00000100”写入JPEG启动寄存器”的命令“STORE R0,jpegcodecreg”的虚拟地址;以及用于存储执行操作“读出JPEG状态寄存器jpegstatusreg(确认结束)”的命令“LOAD R0,jpegstatusreg”的虚拟地址。
数据虚拟地址空间包括:具有标号“jpegstart”和内容“将要写入JPEG启动寄存器的数据”、用于存储“0x00000100”的虚拟地址;具有标号“jpegcodecreg”和内容“JPEG启动寄存器”、用于存储“从JPEG编码器单元223输出的值”的虚拟地址;以及具有标号“jpegstatusreg”和内容“JPEG状态寄存器”、用于存储“从JPEG编码器单元223输出的值”的虚拟地址。
严格地讲,如果CPU 61指定一虚拟地址,在所述指令或数据位于指令高速缓存63或数据高速缓存65时,则与该所指定的虚拟地址相对应的指令或数据输出到CPU 61。如果所述指令或数据没有位于指令高速缓存63或数据高速缓存65,则指令地址翻译单元64或数据地址翻译单元66将所述虚拟地址翻译成物理地址,然后总线控制器67从ROM212、RAM 213、或I/O寄存器231读出指令或数据,并将其输出到CPU 61。但是,为了便于描述,在本说明书中,将描述为例如“如果CPU 61指定虚拟地址,则读出与该虚拟地址相对应的指令或数据,并执行所述指令。”
在图25所示的步骤S71,CPU 61读出指令虚拟地址空间中的命令“LOAD R0,jpegstart”,然后流程前进到步骤S72,在此,CPU 61根据命令“LOAD R0,jpegstart”读出在数据虚拟地址空间中具有标号“jpegstart”的虚拟地址处的常数“0x00000100”,处理流程前进到步骤S73。
在步骤S73,CPU 61读出指令虚拟地址空间中的命令“STORE R0,jpegcodecreg”,然后流程前进到步骤S74,在此,CPU 61根据命令“STORE R0,jpegcodecreg”将常数数据“0x00000100”写入在数据虚拟地址空间中具有标号“jpegcodecreg”的虚拟地址处,处理流程前进到步骤S75。JPEG编码器单元223由此开始图23所示步骤S55中的编码处理。JPEG编码器单元223输出相应于JPEG状态寄存器、具有标号“jpegstatusreg”的虚拟地址处代表编码处理开始的值。
在步骤S75,CPU 61读出指令虚拟地址空间中的命令“LOAD R0,jpegstatusreg”,然后流程前进到步骤S76,在此,CPU 61根据命令“LOAD R0,jpegstatusreg”读出从JPEG编码器单元223输出的值作为结束确认,该值存储在具有数据虚拟地址空间中的标号“jpegstatusreg”的JPEG编码器单元223的JPEG状态寄存器中,由此结束整个处理过程。
为了便于比较,下面参照图26和图27所示的流程图描述现有技术中的编码开始命令处理,其与图23所示步骤S55中执行的编码处理相对应。
在图26所示的示例中,指令虚拟地址空间包括:用于存储执行操作“读出JPEG启动寄存器的地址数据jpegcodecreg”的命令“LOAD R0,jpegcodec”的虚拟地址;用于存储执行操作“读出将要写入JPEG启动寄存器的常数“0x00000100””的命令“LOAD R1,jpegstart”的虚拟地址;用于存储执行操作“将常数“0x00000100”写入JPEG启动寄存器jpegcodecreg”的命令“STORE R1,[R0]”、以及执行操作“无条件跳转到地址“next”处理“LOAD R0,jpegstatus””的命令“JMP”的虚拟地址;具有标号“jpegcodec”用于存储JPEG启动寄存器地址数据jpegcodecreg的虚拟地址;具有标号“jpegstart”用于存储将要写入JPEG启动寄存器的数据“0x00000100”的虚拟地址;具有标号“jpegstatus”用于存储JPEG状态寄存器地址数据jpegstatusreg的虚拟地址;具有标号“next”用于存储执行操作“读出JPEG状态寄存器的地址数据jpegstatusreg”的命令“LOAD R0,jpegstatus”的虚拟地址;用于存储执行操作“读出JPEG状态寄存器jpegstatusreg(确认结束)”的命令“LOAD R1,[R0]”的虚拟地址;用于存储“从JPEG编码器单元223输出的值”、具有标号“jpegcodecreg”和内容“JPEG启动寄存器”的虚拟地址;以及用于存储“从JPEG编码器单元223输出的值”、具有标号“jpegstatusreg”和内容“JPEG状态寄存器”的虚拟地址。
在现有技术的虚拟地址空间中,用于指令和数据的虚拟地址混合在一起。由于JPEG编码器单元223的JPEG启动寄存器和JPEG状态寄存器的虚拟地址布置在较远的距离处,所以每一个命令不能直接指定JPEG启动寄存器和JPEG状态寄存器的虚拟地址。现有技术的指令虚拟地址空间中的指令数量比图24所示的指令虚拟地址空间中的多3条。现有技术的数据虚拟地址空间中的数据数量比图24所示的数据虚拟地址空间中的多2个。
下面将描述图26所示的现有技术中的编码开始命令处理。在图27所示的步骤S81,CPU 61读出指令虚拟地址空间中的命令“LOAD R0,jpegcodec”,然后流程前进到步骤S82,在此,CPU 61根据命令“LOAD R0,jpegcodec”读出在虚拟地址空间中标号“jpegcodec”处的JPEG启动寄存器地址“jpegcodecreg”,处理流程前进到步骤S83。
在步骤S83,CPU 61读出虚拟地址空间中的命令“LOAD R1,jpegstart”,然后流程前进到步骤S84,在此,根据命令“LOAD R1,jpegstart”,CPU 61读出将要写入JPEG启动寄存器的数据“0x00000100”,然后流程前进到步骤S85。
在步骤S85,CPU 61读出虚拟地址空间中的命令“STORE R1,[R0]”,然后流程前进到步骤S86,在此,CPU 61根据命令“STORE R1,[R0]”将常数数据“0x00000100”写入在虚拟地址空间中的标号“jpegcodecreg”处的JPEG启动寄存器中,处理流程前进到步骤S87。以这种方式,JPEG编码器单元223开始图23所示步骤S55中的编码处理。JPEG编码器单元223输出代表编码处理开始的值到相应于JPEG状态寄存器、具有标号“jpegstatusreg”的虚拟地址处。
在步骤S87,CPU 61读出虚拟地址空间中的命令“JUMP Next”,然后流程前进到步骤S88,在此,CPU 61根据命令“JUMP Next”无条件跳转到标号“next”处读出命令“LOAD R0,jpegstatus”,然后流程前进到步骤S89,在此,CPU 61根据命令“LOAD R0,jpegstatus”读出JPEG状态寄存器地址数据“jpegstatusreg”,然后流程前进到步骤S90。
在步骤S90,CPU 61读出虚拟地址空间中的命令“LOAD R1,[R0]”,然后流程前进到步骤S91,在此,CPU 61根据命令“LOAD R1,[R0]”读出从JPEG编码器单元223输出、并写在JPEG状态寄存器“jpegstatusreg”的值作为结束确认,由此结束整个处理过程。
如上所述,由于虚拟地址空间分成图24所示的数据虚拟地址空间和指令虚拟地址空间,因此数据虚拟地址空间和指令虚拟地址空间之间的距离可以变小,从而能够提高击中效率。与图25所示的数据虚拟地址空间和指令虚拟地址空间相比,图24所示的虚拟地址空间包括3个用于指令的虚拟地址和3个用于数据的虚拟地址,而图25所示的虚拟地址空间包括6个用于指令的虚拟地址和4个用于数据的虚拟地址。也就是说,使用图24所示的虚拟地址空间,与现有技术中的虚拟空间相比,能够减少3条指令和2个数据。
图25所示的流程图包括6个步骤,而现有技术中图27所示的流程图包括11个步骤。使用图24所示的虚拟地址空间,能够减少步骤数量并改善处理速度。
在前面的描述中,图25所示的指令虚拟地址空间和数据虚拟地址空间是基于参照图7所描述的虚拟地址空间结构构建的。可替代的是,指令虚拟地址空间和数据虚拟地址空间也可以基于参照图11所描述的虚拟地址空间结构来构建。
另外,在前面的描述中,尽管两个虚拟空间分开用于指令和数据,但是虚拟空间的数量不仅限于2个,而是可以使用多个虚拟空间。虽然指令地址翻译单元64和数据地址翻译单元66分开用于指令和数据虚拟地址空间,但是通过给予从每一个总线提供的虚拟地址一个标识符,一个地址翻译也可以包括多个翻译表,以便在同一时间翻译多个虚拟地址。或者,一个地址翻译单元也可以仅翻译指令或数据的虚拟地址。
本发明不仅可以应用于摄像装置201,而且也能够应用于个人计算机、PDA、DVD播放器、机顶盒、路由器、机器人、家庭服务器、便携式终端、游戏机、网络终端,等等。
尽管上面描述的一系列处理能够由硬件执行,但是也可以通过软件执行。在这种情况下,例如图5所示的信息处理装置51变化为例如图28所示的信息处理装置301。虽然没有示出,但是图18所示的摄像装置201也能够以类似的方式变化为信息处理装置301。
参照图28,中央处理单元(CPU)311根据存储在只读存储器(ROM)312或者从存储单元318加载到随机存取存储器(RAM)313中的程序执行各种处理。
CPU 311、ROM 312、以及RAM 313通过总线314互连。输入/输出接口315也连接到总线314。
输入/输出接口315还连接到:包括键盘、鼠标等的输入单元316;包括诸如阴极射线管和液晶显示器的显示器、扬声器等的输出单元317;诸如硬盘的存储单元318;包括调制解调器、终端适配器等的通信单元319。通信单元319通过网络(未示出)执行通信处理。
如果需要,驱动器320连接到输入/输出接口315。如果需要,在驱动器320中装载磁盘321、光盘322、磁光盘323、半导体存储器324等,并且从中读出的计算机程序装入存储单元318中。
如果使用软件执行上面描述的一系列处理,则构成该软件的程序从网络或者存储介质安装到内置有专用硬件的计算机、或者通过安装各种程序能够执行各种功能的通用个人计算机中。
存储介质可以是外部封装介质,如图28所示的磁盘321(包括软盘)、光盘322(致密盘-只读存储器(CD-ROM),数字通用盘(DVD))、磁光盘323(小型盘(MD),(商标))、或者半导体存储器324,分别存储发行给用户的程序;或者,也可以是内部ROM 312或存储单元318中的硬盘,分别存储所述程序。
在本说明书中,描述记录到存储介质上的程序的步骤显然包括按照描述次序依时间顺序执行的处理,也包括不按时间顺序执行而是并行或单独执行的处理。
本领域的普通技术人员应该理解,根据这里所描述的设计条件和其它事实,能够得到本发明的各种修改、组合、子组合、以及变形等,这些都包括在所附权利要求或者其等价物的范围内。
Claims (22)
1.一种信息处理装置,包括用于执行操作的处理器部件、以及用于为所述处理器部件执行所述操作存储指令或数据的存储部件,其特征在于所述信息处理装置还包括:
多个传输部件,用于在所述处理器部件和所述存储部件之间传输所述指令或数据;以及
至少一个地址翻译部件,用于将所述处理器部件指定的虚拟地址翻译成所述存储部件的物理地址,
其中,每一个所述传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;以及
所述地址翻译部件将所述传输部件的所述虚拟地址空间翻译成单个的物理地址空间。
2.根据权利要求1所述的信息处理装置,其中:
所述传输部件包括用于传输所述指令的指令总线和用于传输所述数据的数据总线;以及
伴随对所述传输部件进行访问的指令的虚拟地址与所述指令访问的数据的虚拟地址之间的差等于或小于能够直接由指令的操作数指定为相对地址的距离。
3.根据权利要求1所述的信息处理装置,还包括:
为每一个所述传输部件提供的高速缓存,所述高速缓存使用所述虚拟地址作为标签。
4.根据权利要求3所述的信息处理装置,其中:
所述虚拟地址空间以如下方式包括虚拟地址,即,所述指令的虚拟地址和所述数据的虚拟地址之间的边界变为所述高速缓存的行边界。
5.根据权利要求1所述的信息处理装置,还包括:
用于在多个所述传输部件之间进行区分并识别高速缓存数据的高速缓存。
6.根据权利要求5所述的信息处理装置,其中:
所述虚拟地址空间以如下方式包括虚拟地址,即,所述指令的虚拟地址和所述数据的虚拟地址之间的边界变为所述高速缓存的行边界。
7.根据权利要求1所述的信息处理装置,其中:
如果将由所述地址翻译部件翻译的地址的翻译单元包含所述指令的虚拟地址和所述数据的虚拟地址两者,则包括在所述翻译单元中的数据仅为常数数据。
8.根据权利要求1所述的信息处理装置,其中:
所述地址翻译部件将所述传输部件的所述虚拟地址空间翻译成相互不具有重叠地址的所述单个物理地址空间。
9.根据权利要求1所述的信息处理装置,其中:
所述存储部件包括写禁止区域和写允许区域;以及
所述写禁止区域和所述写允许区域二者的虚拟地址布置在能够由伴随对所述存储部件进行访问的指令的操作数直接指定为相对地址的范围内的虚拟地址空间中。
10.根据权利要求1所述的信息处理装置,其中:
所述存储部件包括至少一个输入/输出(I/O)寄存器;以及
伴随对所述I/O寄存器进行访问的所述指令的虚拟地址与代表所述I/O寄存器的虚拟地址之间的差等于或小于能够直接由所述指令的操作数指定为相对地址的距离。
11.根据权利要求10所述的信息处理装置,其中:
代表同一I/O寄存器的虚拟地址被划分并布置在所述虚拟地址空间的多个区域中。
12.根据权利要求1所述的信息处理装置,其中:
所述地址翻译部件翻译(n+m)位的所述虚拟地址的高n位,并且将翻译后的高n位的至少一位或多位与剩余的m位的至少一位或多位进行交换,从而将所述虚拟地址翻译成所述物理地址。
13.根据权利要求1所述的信息处理装置,其中:
所述地址翻译部件翻译(n+m)位的所述虚拟地址的高n位,并且将所剩余的低m位的至少一位或多位与所剩余的低m位的另外一位或多位进行交换,从而将所述虚拟地址翻译成所述物理地址。
14.一种用于信息处理装置的信息处理方法,所述信息处理装置包括:
处理器部件,用于执行操作;
存储部件,用于为所述处理器部件执行所述操作存储指令或数据;
多个传输部件,用于在所述处理器部件和所述存储部件之间传输所述指令或数据;以及
至少一个地址翻译部件,用于将所述处理器部件指定的虚拟地址翻译成所述存储部件的物理地址,
其特征在于,每一个所述传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;以及
所述地址翻译部件包括翻译步骤,用于将所述传输部件的所述虚拟地址空间翻译成单个的物理地址空间。
15.根据权利要求14所述的信息处理方法,还包括步骤:
以如下方式指派虚拟地址,即,所述传输部件的所述独立虚拟地址空间包括与所述其它传输部件的虚拟地址空间相互重叠的地址。
16.一种存储用于信息处理装置的计算机可读程序的存储介质,所述信息处理装置包括:
处理器部件,用于执行操作;
存储部件,用于存储所述处理器部件执行所述操作时所需的指令或数据;
多个传输部件,用于在所述处理器部件和所述存储部件之间传输所述指令或数据;以及
至少一个地址翻译部件,用于将所述处理器部件指定的虚拟地址翻译成所述存储部件的物理地址,
其特征在于,每一个所述传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;以及
所述地址翻译部件包括翻译步骤,用于将所述传输部件的所述虚拟地址空间翻译成单个的物理地址空间。
17.根据权利要求16所述的存储介质,还包括步骤:
以如下方式指派虚拟地址,即,所述传输部件的所述独立虚拟地址空间包括与所述其它传输部件的虚拟地址空间相互重叠的地址。
18.一种用于使信息处理装置运行的程序,所述信息处理装置包括:
处理器部件,用于执行操作;
存储部件,用于存储所述处理器部件执行所述操作时所需的指令或数据;
多个传输部件,用于在所述处理器部件和所述存储部件之间传输所述指令或数据;以及
至少一个地址翻译部件,用于将所述处理器部件指定的虚拟地址翻译成所述存储部件的物理地址,
其特征在于,每一个所述传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;以及
所述地址翻译部件包括翻译步骤,用于将所述传输部件的所述虚拟地址空间翻译成单个的物理地址空间。
19.根据权利要求18所述的程序,还包括步骤:
以如下方式指派虚拟地址,即,所述传输部件的所述独立虚拟地址空间包括与所述其它传输部件的虚拟地址空间相互重叠的地址。
20.一种摄像装置,包括:
摄像部件,用于拍摄对象的图像;
编码部件,用于对所述摄像部件拍摄的对象的图像数据进行编码;
处理器部件,用于执行操作,指定所述编码部件对所述图像数据进行编码时的指令或数据;以及
存储部件,用于存储所述处理器部件执行操作时的所述指令或数据,
其特征在于,所述摄像装置还包括:
多个传输部件,用于在所述处理器部件和所述存储部件之间传输所述指令或数据;以及
至少一个地址翻译部件,用于将所述处理器部件指定的虚拟地址翻译成所述存储部件的物理地址,
其中,每一个所述传输部件包括一个包含多个地址的独立虚拟地址空间,其与其它传输部件的虚拟地址空间相互重叠;
所述地址翻译部件将所述传输部件的虚拟地址空间翻译成单个的物理地址空间;以及
所述编码部件根据与所述处理器部件指定并由所述地址翻译部件翻译的地址相对应的所述存储部件中的所述指令或数据,对所述图像数据进行编码。
21.一种信息处理装置,包括用于执行操作的处理器、以及用于为所述处理器执行所述操作存储指令或数据的存储器,其特征在于所述信息处理装置还包括:
多个传输部分,用于在所述处理器和所述存储器之间传输所述指令或数据;以及
至少一个地址翻译器,用于将所述处理器指定的虚拟地址翻译成所述存储器的物理地址,
其中,每一个所述传输部分包括一个包含多个地址的独立虚拟地址空间,其与其它传输部分的虚拟地址空间相互重叠;以及
所述地址翻译器将所述传输部分的所述虚拟地址空间翻译成单个的物理地址空间。
22.一种摄像装置,包括:
摄像部分,用于拍摄对象的图像;
编码器,用于对所述摄像部分拍摄的对象的图像数据进行编码;
处理器,用于执行操作,指定所述编码器对所述图像数据进行编码时的指令或数据;以及
存储器,用于存储所述处理器执行操作时的所述指令或数据,
其特征在于,所述摄像装置还包括:
多个传输部分,用于在所述处理器和所述存储器之间传输所述指令或数据;以及
至少一个地址翻译器,用于将所述处理器指定的虚拟地址翻译成所述存储器的物理地址,
其中,每一个所述传输部分包括一个包含多个地址的独立虚拟地址空间,其与其它传输部分的虚拟地址空间相互重叠;
所述地址翻译器将所述传输部分的所述虚拟地址空间翻译成单个的物理地址空间;以及
所述编码器根据与所述处理器指定并由所述地址翻译部分翻译的地址相对应的所述存储器中的所述指令或数据,对所述图像数据进行编码。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003107351 | 2003-04-11 | ||
JP107351/2003 | 2003-04-11 | ||
JP362812/2003 | 2003-10-23 | ||
JP2003362812A JP4085328B2 (ja) | 2003-04-11 | 2003-10-23 | 情報処理装置および方法、記録媒体、プログラム、並びに撮像装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1536493A true CN1536493A (zh) | 2004-10-13 |
CN1287295C CN1287295C (zh) | 2006-11-29 |
Family
ID=32328404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100328421A Expired - Fee Related CN1287295C (zh) | 2003-04-11 | 2004-04-09 | 信息处理装置和方法及摄像装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7213108B2 (zh) |
JP (1) | JP4085328B2 (zh) |
KR (1) | KR20040089546A (zh) |
CN (1) | CN1287295C (zh) |
GB (1) | GB2400700B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936869B (zh) * | 2005-09-22 | 2010-06-16 | 国际商业机器公司 | 用于翻译地址的方法和系统 |
WO2019134376A1 (zh) * | 2018-01-03 | 2019-07-11 | 华为技术有限公司 | 虚拟地址确定方法及装置、处理器、存储介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102004021764A1 (de) * | 2004-04-30 | 2005-06-02 | Basf Ag | Verfahren zur Herstellung von Acrylsäure durch heterogen katalysierte Gasphasenpartialoxidation wenigstens einer C3-Kohlenwasserstoffvorläuferverbindung |
US20060092163A1 (en) * | 2004-11-04 | 2006-05-04 | International Business Machines Corporation | Rendering images on a video graphics adapter |
CN100377117C (zh) * | 2005-07-14 | 2008-03-26 | 中国科学院计算技术研究所 | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 |
US7814541B1 (en) * | 2006-05-19 | 2010-10-12 | Array Networks, Inc. | Virtual routing for virtual local area networks having overlapping IP addresses |
KR101218684B1 (ko) * | 2011-01-07 | 2013-01-21 | 엘지전자 주식회사 | 이동 단말기 및 이동 단말기의 데이터 출력 방법 |
US9015351B1 (en) * | 2012-03-02 | 2015-04-21 | Marvell International Ltd. | Address translation for SR-IOV virtual function apertures |
GB2570665B (en) * | 2018-01-31 | 2020-08-26 | Advanced Risc Mach Ltd | Address translation in a data processing apparatus |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS52149444A (en) * | 1976-06-08 | 1977-12-12 | Fujitsu Ltd | Multiplex virtual space processing data processing system |
US4481573A (en) * | 1980-11-17 | 1984-11-06 | Hitachi, Ltd. | Shared virtual address translation unit for a multiprocessor system |
US4471432A (en) * | 1982-10-13 | 1984-09-11 | Wilhite John E | Method and apparatus for initiating the execution of instructions using a central pipeline execution unit |
US4991081A (en) * | 1984-10-31 | 1991-02-05 | Texas Instruments Incorporated | Cache memory addressable by both physical and virtual addresses |
US4860192A (en) * | 1985-02-22 | 1989-08-22 | Intergraph Corporation | Quadword boundary cache system |
US5347636A (en) * | 1985-11-08 | 1994-09-13 | Nec Corporation | Data processor which efficiently accesses main memory and input/output devices |
US5008811A (en) | 1988-02-10 | 1991-04-16 | International Business Machines Corp. | Control mechanism for zero-origin data spaces |
JPH04260929A (ja) * | 1991-01-21 | 1992-09-16 | Mitsubishi Electric Corp | データ処理装置 |
JP2646855B2 (ja) * | 1991-01-21 | 1997-08-27 | 三菱電機株式会社 | データ処理装置 |
US5319761A (en) | 1991-08-12 | 1994-06-07 | International Business Machines Corporation | Directory look-aside table for a virtual storage system including means for minimizing synonym entries |
JP3811140B2 (ja) * | 2003-05-12 | 2006-08-16 | 株式会社日立製作所 | 情報処理装置 |
-
2003
- 2003-10-23 JP JP2003362812A patent/JP4085328B2/ja not_active Expired - Fee Related
-
2004
- 2004-04-02 US US10/815,871 patent/US7213108B2/en not_active Expired - Fee Related
- 2004-04-05 GB GB0407733A patent/GB2400700B/en not_active Expired - Fee Related
- 2004-04-09 CN CNB2004100328421A patent/CN1287295C/zh not_active Expired - Fee Related
- 2004-04-09 KR KR1020040024628A patent/KR20040089546A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936869B (zh) * | 2005-09-22 | 2010-06-16 | 国际商业机器公司 | 用于翻译地址的方法和系统 |
WO2019134376A1 (zh) * | 2018-01-03 | 2019-07-11 | 华为技术有限公司 | 虚拟地址确定方法及装置、处理器、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20040260907A1 (en) | 2004-12-23 |
US7213108B2 (en) | 2007-05-01 |
GB2400700A (en) | 2004-10-20 |
KR20040089546A (ko) | 2004-10-21 |
GB2400700B (en) | 2006-09-06 |
JP4085328B2 (ja) | 2008-05-14 |
CN1287295C (zh) | 2006-11-29 |
JP2004326729A (ja) | 2004-11-18 |
GB0407733D0 (en) | 2004-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1276358C (zh) | 用于存储设备的地址转换单元 | |
CN1293465C (zh) | Gui显示装置及光标或gui组件动画显示处理方法 | |
CN1253790C (zh) | 指令调度方法和指令调度设备 | |
CN1109983C (zh) | 病毒清除方法和信息处理设备 | |
CN1119804C (zh) | 数据记录和/或再现系统及其方法 | |
CN1517869A (zh) | 处理器、运算处理方法和优先度决定方法 | |
CN1752947A (zh) | 存储装置、存储控制方法,以及计算机产品 | |
CN101064656A (zh) | 存储集群系统、数据处理方法和程序 | |
CN101031918A (zh) | 节点设备、共享信息更新方法、共享信息存储方法以及程序 | |
CN1855306A (zh) | 非易失性半导体存储器及其控制方法 | |
CN1586063A (zh) | 流数据处理器、流数据处理方法、程序和媒体 | |
CN1696913A (zh) | 存储系统内的数据转移 | |
CN1287295C (zh) | 信息处理装置和方法及摄像装置 | |
CN1805049A (zh) | 一种嵌入式系统中非易失性存储器的数据存取方法 | |
CN1684058A (zh) | 处理器 | |
CN101065725A (zh) | 命令供给装置 | |
CN1270232C (zh) | 信息处理装置以及电子设备 | |
CN1197082C (zh) | 使用存储器的方法、两维数据存取存储器以及操作处理设备 | |
CN1734438A (zh) | 信息处理设备、信息处理方法和程序 | |
CN1848097A (zh) | 存储器地址生成装置以及具有它的处理器、存储器地址生成方法 | |
CN1728093A (zh) | 生成比特块传输函数的交叉平台运行时间代码 | |
CN1554048A (zh) | 用于检查和操作数据的存储器引擎 | |
CN1194295C (zh) | 程序变换装置及程序变换方法 | |
CN1279435C (zh) | 数字信号处理器 | |
CN1783286A (zh) | 图像处理装置及其传送和输出控制方法、程序及记录介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061129 Termination date: 20120409 |