实施方式1的配置决定装置,是决定分别以M个N比特的非压缩程序代码为基础压缩的M个压缩程序代码的、向作为本发明的存储器的一个实施方式的ROM(ReadOnlyMemory:只读存储器)的配置的装置。以下,可以将“程序代码”简称为“代码”。
该配置决定装置,根据对由上述M个非压缩代码构成的非压缩块内的各非压缩代码的地址值实施规定的运算而得到的结果值,来决定各压缩代码的配置。
具体而言,该配置决定装置,根据对非压缩块内的各非压缩代码的地址值实施了第一运算而得到的结果值,来决定各压缩代码之中的Xa比特(Xa<N)的配置。此外,该配置决定装置,根据对非压缩块内的数据长度比Xa比特大的各压缩代码(以下,也称为“特定压缩代码”)的地址值实施了第二运算而得到的结果值,来决定从各特定压缩代码中去除上述Xa比特的配置。而且,第一运算及第二运算的内容在后述。
此外,实施方式1的访问装置,对配置了与处理器希望的非压缩代码对应的压缩代码(以下,也称为“对象压缩代码”)的上述ROM上的位置进行确定后读取,并展开所读取的对象压缩代码,发送给处理器的装置。
该访问装置也与上述配置决定装置同样,使用第一运算及第二运算,来确定配置有对象压缩代码的ROM上的位置。
如此,根据实施方式1的配置决定装置及访问装置,能够不使用地址变换表地使用规定运算(第一运算及第二运算)来决定压缩代码的配置,并确定压缩代码的位置。
<2.功能结构>
<2-1.配置决定装置>
首先,对配置决定装置100的功能结构进行说明。
图1是表示实施方式1的配置决定装置100的主要部分的功能结构的方框图。
如该图所示,配置决定装置100与存储装置20及写入装置30连接,且具有访问部101、压缩部102及控制部110。而且,配置决定装置100是包括处理器及存储器的计算机,压缩部102及控制部110的各功能,通过上述处理器执行上述存储器所保存的程序来实现。
访问部101具有以下功能:按照控制部110的指示,访问具有M个非压缩代码用的存储器区域21以及M个压缩代码用存储器区域22的存储装置20,并进行非压缩代码的读取以及压缩代码的写入。
压缩部102具有以下功能:按照控制部110的指示,进行对访问部101所读取的N比特(例如,16比特)的非压缩代码的压缩处理,并生成小于N比特的压缩代码。压缩部102将生成的压缩代码以及表示该压缩代码的数据长度的信息(以下,称为“数据长度信息”)发送给控制部110。
控制部110除了具有对配置决定装置100内的各块进行指示的功能,还具有以下功能:决定从压缩部102接收的压缩代码的向ROM10的配置,以成为该决定的配置的方式,介由访问部101,在存储装置20的压缩代码用的存储器区域22中存储各压缩代码。
控制部110,包括第一决定部111以及第二决定部112。
第一决定部111,具有如下功能:决定为将从压缩部102接收的压缩代码之中的Xa比特(在该例中,设为N/2-1,即7比特)配置于对成为该压缩代码的基础的非压缩代码的非压缩块内地址值ADDR_a实施了第一运算而得到的结果值addr_a1所表示的ROM10上的位置。而且,该地址值ADDR_a是针对N比特单位而分配的值。
计算式1表示第一运算的一例。
[计算式1]
addr_a1=ADDR_a/2
第二决定部112,具有以下功能:决定为将从压缩部102接收到的大于Xa比特的压缩代码(特定压缩代码)中去除了Xa比特的数据后得到的剩余的数据配置于对成为该压缩代码的基础的非压缩代码的非压缩块中的地址值ADDR_a实施了第二运算而得到的结果值addr_a2所示的ROM10上的位置。计算式2表示第二运算的一例。
[计算式2]
addr_a2=M/2+Round1/2(ADDR_a/4)
其中,M是非压缩代码的个数,也是压缩代码的个数。此外,Round1/2(ADDR_a/4)是返回把将ADDR_a除以4的结果以1/2单位进行四舍五入后的结果值的函数。
控制部110分别针对M个压缩代码,以成为由第一决定部111及第二决定部112决定的配置的方式,介由访问部101,在存储装置20的压缩代码用的存储器区域22中进行保存。
而且,控制部110,针对各压缩代码,对该压缩代码之中的Xa比特(在上述示例中,N/2-1)赋予表示该压缩代码是否大于Xa比特的1比特的标志,以成为第一决定部111决定的配置的方式,在存储装置20中进行保存。
以下,也可以将由该压缩代码之中的Xa比特和1比特的标志构成的数据称为“第一数据”,将从大于Xa比特的特定压缩代码中去除了第一数据所包含的该Xa比特的部分数据称为“第二数据”。
控制部110,在介由访问部101向针对全部M个压缩代码的压缩代码用的存储器区域22的保存结束时,对所谓的ROM写入器即写入装置30进行向ROM10的写入指示。
接收到该指示的写入装置30,维持存储装置20的压缩代码用的存储区域22中的配置,在ROM10中写入各压缩代码。
<2-2.访问装置>
图2是表示实施方式1的访问装置200的主要部分的功能结构的方框图。
其中,对于ROM10,设为以配置决定装置100决定的配置保存了各压缩代码。
如该图所示,访问装置200具有:输入部201;读取部202;展开部203以及控制部210。而且,访问装置200是包含处理器(与处理器40不同的处理器)以及存储器的计算机,展开部203以及控制部210的各功能,通过上述处理器执行上述存储器所保存的程序来实现。
输入部201具有以下功能:从处理器40接收用于访问希望的非压缩代码的地址值ADDR_b,发送给控制部210。
而且,该地址值ADDR_b是针对N比特单位而分配的。
读取部202具有以下功能:按照控制部210的指示,从ROM10中读取第一数据以及第二数据,并发送给控制部210。
展开部203具有以下功能:展开从控制部210发送来的压缩代码,并将得到的非压缩代码发送给处理器40。
控制部210除了具有对访问装置200内的各块进行指示的功能,还具有以下功能:根据从输入部201接收到的地址值ADDR_b,介由读取部202,从ROM10读取与处理器40希望的非压缩代码对应的压缩代码(对象压缩代码),并发送给展开部203。
控制部210包括:第一确定部211;第二确定部212以及输出部213。
第一确定部211,具有以下功能:将对从输入部201接收到的地址值ADDR_b实施了第一运算而得到的结果值addr_b1所示的ROM10上的位置,确定为配置有包括对象压缩代码之中的Xa比特的数据在内的第一数据的位置。
虽然计算式3表示第一运算的一例,但该第一运算是与由配置决定装置100的第一决定部111进行的第一运算(参照计算式1)同样的运算。
[计算式3]
addr_b1=ADDR_b/2
而且,第一确定部211具有以下功能:介由读取部202来读取在所确定的ROM10上的位置所配置的第一数据。
第二确定部212,具有以下功能:将对从输入部201接收到的地址值ADDR_b实施了第二运算而得到的结果值addr_b2所示的ROM10上的位置,确定为配置有从大于Xa比特的特定压缩代码中去除了Xa比特后得到的第二数据的位置。
虽然计算式4表示第二运算的一例,但该第二运算是与由配置决定装置100的第二决定部112进行的第二运算(参照计算式2)同样的运算。
[计算式4]
addr_b2=M/2+Round1/2(ADDR_b/4)
其中,M既是非压缩代码、也是压缩代码的个数。此外,Round1/2(ADDR_b/4)是返回把将ADDR_b除以4后得到的结果以1/2单位进行四舍五入后的结果值的函数。
而且,第二确定部212,也具有以下功能:介由读取部202来读取所确定的ROM10上的位置所配置的第二数据。
输出部213,具有以下功能:将由第一确定部211读取的第一数据所包含的Xa比特的压缩代码,和第二确定部212读取的第二数据构成的对象压缩代码发送给展开部203。
而且,当对象压缩代码的数据长度在Xa比特以下时,不进行第二数据的读取。因此,此时,输出部213,仅将由第一确定部211读取的第一数据所包含的压缩代码构成的对象压缩代码,发送给展开部203。
<3.数据>
以下,针对ROM10的数据结构进行说明。
图3(a)是表示分别将M个N比特的非压缩代码压缩后的结果例的图。
该图所示的ADDR表示针对各非压缩代码的非压缩块内地址值ADDR_a或处理器40希望的非压缩代码的地址值ADDR_b(对于后述的图9(a)、图15(a)也同样)。
例如,在该图中,表示将ADDR为“0”的非压缩代码A1压缩后的结果,得到压缩代码A10。
此外,在该图中,表示将ADDR为“0”、“1”、“2”的非压缩代码A1、B1、D1压缩后的压缩代码A10、B10、D10的数据长度,在Xa比特(在该示例中,N/2-1比特)以下。此外,在该图中,表示将ADDR为“2”的非压缩代码C1压缩后的压缩代码C10的数据长度大于Xa比特(在该示例中,N/2-1比特)。
此外,图3(b)是表示各压缩代码(A10~D10)的向ROM10的配置例的图。
配置有各压缩代码的ROM10内的区域area0,由第一区域area1和第二区域area2构成。而且,该图所示的addr表示ROM10上的地址值(后述的图9(b)、图15(b)也同样)。
第一区域area1是针对各压缩代码的、配置了由该压缩代码之中的Xa比特以下部分和1比特的标志构成的第一数据的物理上连续的区域。
在该例中,将压缩代码的数据长度为Xa比特以下时的标志的值设为“0”,大于Xa时的标志的值设为“1”。
第二区域area2是配置了数据长度大于Xa比特的各特定压缩代码的第二数据的物理上连续的区域。
也就是说,数据长度为Xa比特以下的各压缩数据,被保存在计算式1的结果值addr_a1所示的第一区域area1内的位置。此外,数据长度大于比特的各特定压缩代码分割地被保存在计算式1的结果值addr_a1所示的第一区域area1内的位置和计算式2的结果值addr_a2所示的第二区域area2内的位置。而且,针对使用计算式1及计算式2的各压缩代码的配置决定方法,在以下的<4.动作>的<4-1.配置决定处理>以及<4-2.配置决定处理的具体例>详细地进行说明。
在图3(a)的示例中,压缩代码A10、B10、D10的数据长度在
N/2-1以下,压缩代码C10的数据长度大于N/2-1。因此,在该示例中,仅针对压缩代码C10保存第二数据。
即,在图3(b)的示例中,压缩代码A10和B10,分别被配置于ROM10的第一区域area1内的addr为“0”的区域的低位N/2比特的区域和高位N/2比特的区域。此外,压缩代码C10的Xa比特的数据C11和压缩代码D10,分别被配置于ROM10的第一区域area1内的addr为“1”的区域的低位N/2比特的区域和高位N/2比特的区域。此外,从压缩代码C10中去除了Xa比特的数据C11后得到的第二数据C12,被配置于ROM10的第二区域area2内的addr为“M/2”的区域的高位N/2比特的区域。
而且,在图中,以阴影表示了各压缩代码的有效数据长度的图像(后述的图9(b)、图15(b)也同样)。在安装中,在展开部203中进行展开时,由于得到原来的固定长度(N比特)的非压缩代码就足够,因此,无需明示有效数据长度的边界。
<4.动作>
接着,对具有上述结构的配置决定装置100以及访问装置200的动作进行说明。
<4-1.配置决定处理>
首先,针对配置决定装置100的配置决定处理进行说明。
图4是表示配置决定装置100的配置决定处理的流程图。
首先,配置决定装置100中的控制部110,将处理对象的非压缩代码的非压缩块内地址值ADDR_a(变量)初始化为“0”(步骤S1)。
控制部110,针对所有M个非压缩代码,判定是否结束以下要说明的步骤S3以后的处理。
当未完成步骤S3以后的处理时(步骤S2,否),控制部110介由访问部101读取地址值ADDR_a所示的存储装置20的非压缩代码用的区域21内的位置所保存的非压缩代码(步骤S3)。
控制部110,将所读取的非压缩代码发送给压缩部102,压缩部102对接收到的非压缩代码进行压缩,并将表示压缩代码及该压缩代码的数据长度的数据长度信息发送给控制部110(步骤S4)。
控制部110的第一决定部111,对地址值ADDR_a实施第一运算(参照计算式1)(步骤S5),控制部110判定从压缩部102接收到的数据长度信息所示的数据长度是否大于Xa比特(步骤S6)。
当从压缩部102接收到的数据长度信息所示的数据长度在Xa比特以下时(步骤S6,否),控制部110将标志和在步骤S4接收到的压缩代码介由访问部101,写入步骤S5的第一运算的结果值addr_a1所示的存储装置20的压缩代码用的区域22内的位置(步骤S8)。此时的标志被设定为“0”,以表示压缩代码的数据长度在Xa比特以下。
另一方面,当从压缩部102接收到的数据长度信息所示的数据长度大于Xa比特时(步骤S6,是),控制部110的第二决定部112,对地址值ADDR_a实施第二运算(步骤S7)。
接着,控制部110,将标志和在步骤S4接收到的压缩代码的Xa比特,介由访问部101写入步骤S5的第一运算的结果值addr_a1所示的存储装置20的压缩代码用的区域22内的位置。此时的标志被设定为“1”,以表示压缩代码的数据长度大于Xa比特。此外,控制部110,将在步骤S4接收到的从压缩代码中去除了Xa比特后的剩余部分,介由访问部101写入步骤S7的第二运算的结果值addr_a2所示的压缩代码用的区域22内的位置(步骤S8)。
若结束步骤S8的处理,则控制部110将地址值ADDR_a更新为加1后的值(步骤S9),再从步骤S2进行处理。
当针对所有M个非压缩代码结束了步骤S3以后的处理时(步骤S2,是),控制部110以向ROM10写入存储装置20的压缩代码用的区域22所配置的各压缩代码的方式,向写入装置30进行指示(步骤S10),结束配置决定处理。
而且,写入装置30,根据来自控制部110的该指示,将压缩代码用的区域22中所配置的各压缩代码以保持其配置原样的方式写入到ROM10中。
<4-2.配置决定处理的具体例>
针对上述配置决定装置100的配置决定处理,使用图3所示的示例,来具体说明图4所示的流程图。
(1)针对非压缩代码A1的处理
首先,配置决定装置100中的控制部110,将处理对象的非压缩代码的非压缩块内地址ADDR_a初始化为“0”(步骤S1)。
在该示例中,由于针对所有M个非压缩代码尚未结束步骤S3以后的处理(步骤S2,否),因此,控制部110介由访问部101来读取地址值ADDR_a(0)所示的存储装置20的非压缩用的区域21内的位置所保存的非压缩代码(A1)(步骤S3)。
控制部110对压缩部102发送所读取的非压缩代码(A1),压缩部102将接收到的非压缩代码(A1)进行压缩,并向控制部110发送压缩代码(A10)以及表示该压缩代码的数据长度的数据长度信息(步骤S4)。
控制部110的第一决定部111,对地址值ADDR_a(0)实施第一运算(参照计算式1)(步骤S5)。该第一运算的结果值addr_a1,为地址值ADDR_a(0)/2,且成为“0”。
在该示例中,从压缩部102接收到的数据长度信息所示的数据长度,在Xa比特以下(步骤S6,否)。因此,控制部110,如图3(b)所示,将标志(0)和在步骤4接收到的压缩代码(A10),介由访问部101写入到步骤S5的第一运算的结果值addr_a1(0)所示的存储装置20的压缩代码用的区域22内的位置(步骤S8)。
控制部110,将地址值ADDR_a更新为加1的值(1)(步骤S9),再从步骤S2进行处理。
(2)针对非压缩代码B1
针对将非压缩代码B1进行压缩后的压缩代码B10,也由于与上述压缩代码A10同样地被处理(步骤S2~S6、S8、S9),因此省略详细的说明,但步骤S5的第一运算的结果值addr_a1,为地址值ADDR_a(1)/2,且成为“1/2”。此外,在图3(a)的示例中,压缩代码B10的数据长度在Xa比特以下。
因此,如图3(b)所示,在第一运算的结果值addr_a1(1/2)所示的存储装置20的压缩代码用的区域22内的位置,配置标志(0)和在步骤S4中接收到的压缩代码(B10)。
(3)针对非压缩代码C1
在该示例中,由于针对所有M个非压缩代码尚未结束步骤S3以后的处理(步骤S2,否),因此,控制部110介由访问部101读取地址ADDR_a(2)所示的存储装置20的非压缩代码用的区域21内的位置所保存的非压缩代码(C1)(步骤S3)。
控制部110向压缩部102发送所读取的非压缩代码(C1),压缩部102对接收到的非压缩代码(C1)进行压缩,并向控制部110发送压缩代码(C10)以及表示该压缩代码的数据长度的数据长度信息(步骤S4)。
控制部110的第一决定部111,对地址值ADDR_a(2)实施第一运算(参照计算式1)(步骤S5)。该第一运算的结果值addr_a1,为地址值ADDR_a(2)/2,且成为“1”。
在该示例中,从压缩部102接收到的数据长度信息所示的数据长度大于Xa比特(步骤S6,是)。因此,控制部110的第二决定部112,对地址值ADDR_a实施第二运算(步骤S7)。该第二运算的结果值addr_a2,为M/2+Round1/2(ADDR_a(2)/4),且成为“M/2+1/2”。
接着,控制部110,如图3(b)所示,将标志(1)和在步骤S4接收到的压缩代码(C10)的Xa比特(C11),介由访问部101,写入到步骤S5的第一运算的结果值addr_a1(1)所示的存储装置20的压缩代码用的区域22内的位置。此外,控制部110,如图3(b)所示,将在步骤S4从接收到的压缩代码(C10)中去除了Xa比特后的剩余部分(C12),介由访问部101写入到步骤S7的第二运算的结果值addr_a2(M/2+1/2)所示的压缩代码用的区域22内的位置(步骤S8)。
若结束步骤S8的处理,则控制部110,将地址值ADDR更新为加1后的值(3)(步骤S9),再从步骤S2进行处理。
(4)针对非压缩代码D1
针对压缩非压缩代码D1的压缩代码D10,也与上述压缩代码B10同样地处理,如图3(b)所示,在第一运算的结果值addr_a1(3/2)所示的存储装置20的压缩代码用的区域22内的位置,配置标志(0)和在步骤S4接收到的压缩代码(D10)。
<4-3.访问处理>
接着,对访问装置200的访问处理进行说明。
图5是表示访问装置200的访问处理的流程图。
首先,访问装置200中的控制部210介由输入部201,从处理器40接收希望的非压缩代码的地址值ADDR_b(步骤S11,是)。
控制部210的第一确定部211,对地址值ADDR_b实施第一运算(参照计算式3)(步骤S12),控制部210介由读取部202,从第一运算的结果值addr_b1所示的ROM10的第一区域area1内的位置读取第一数据(步骤S13)。
控制部210根据所读取出的第一数据的标志的值,来判定压缩代码的数据长度是否大于Xa比特(步骤S14)。
标志值为“0”时,控制部210判定为压缩代码的数据长度在Xa比特以下(步骤S14,否),控制部210的输出部213,将读取的第一数据所包含的压缩代码输出给展开部203(步骤S17)。
另一方面,在标志值为“1”时,控制部210判定为压缩代码的数据长度大于Xa比特(步骤S14,是),控制部210的第二确定部212,对地址值ADDR_b实施第二运算(步骤S15)。控制部210介由读取部202,从第二运算的结果值addr_b2所示的ROM10的第二区域area2内的位置读取第二数据(步骤S16)。控制部210的输出部213,将由所读取出的第一数据所包含的压缩代码之中的Xa比特和第二数据构成的压缩代码输出给展开部203(步骤S17)。
若结束步骤S17的处理,则展开部203对所输出的压缩代码进行展开(步骤S18)。并将非压缩代码向处理器40发送(步骤S19),结束访问处理。
<4-4.访问处理的具体例>
针对上述访问装置200的访问处理,采用图3所示的示例,来具体说明图5所示的流程图。
以下,以从处理器40接收到希望的非压缩代码C1的访问值ADDR_b“2”的情况为例,来说明访问装置200的访问处理。
访问装置200中的控制部210,介由输入部201,从处理器40接收希望的非压缩代码(C1)的地址值ADDR_b(2)(步骤S11)。
控制部210的第一确定部211,对地址值ADDR_b(2)实施第一运算(参照计算式3)(步骤S12)。该第一运算的结果值addr_b1,为地址值ADDR_b(2)/2,且成为“1”。
控制部210介由读取部202,从第一运算的结果值addr_b1(1)所示的ROM10的第一区域area1内的位置读取第一数据(标志“1”和数据C11)(步骤S13)。
在该示例中,标志的值为“1”,因此,控制部210判定为压缩代码的数据长度大于Xa比特(步骤S14,是),控制部210的第二确定部212,对地址值ADDR_b实施第二运算(步骤S15)。该第二运算的结果值addr_b2,为M/2+Round1/2(ADDR_b(2)/4),且成为“M/2+1/2”。
控制部210介由读取部202,从第二运算的结果值addr_b2(M/2+1/2)所示的ROM10的第二区域area2内的位置读取第二数据(C12)(步骤S16)。控制部210的输出部213,将由所读取出的第一数据所包含的压缩代码的Xa比特(C11)以及第二数据(C12)构成的压缩代码输出给展开部203(步骤S17)。
若结束步骤S17的处理,则展开部203对所输出的压缩代码进行展开(步骤S18),并将非压缩代码(C1)向处理器40发送(步骤S19),结束访问处理。
<5.考察>
根据实施方式1的配置决定装置100,能够不使用地址变换表地决定在各压缩代码的ROM10上的配置,并能够在一定条件下,利用于配置各压缩代码的ROM10上的区域area0的容量削减。
以对地址值ADDR_a为“2×j”以及“2×j+1”(其中,j=0,1,…M/2)的两个非压缩代码进行压缩后的各压缩代码均不为特定压缩代码为条件,各压缩代码的ROM10上的保存区域area0(参照图3(b))的容量如下。
即,保存区域area0的容量,为第一区域area1的容量(M×N/2比特)+第二区域area2的容量(M×N/4比特)=M×N×3/4比特。
也就是说,作为不使用地址变换表的方法最简单的方法,虽然可考虑在ROM10上N比特的区域中直接分别配置M个压缩代码,但与此时的保存区域的容量M×N相比,根据实施方式1的配置决定装置100,能够削减25%的容量。
此外,针对实施方式1的访问装置200也同样,能够不使用地址变换表地使用规定的运算(第一运算以及第二运算)来进行对象压缩代码的位置的确定。
《变形例1》
在实施方式1中,访问装置200的控制部210的功能,虽然作为通过访问装置200具备的处理器执行访问装置200的存储器所保存的程序来实现进行了说明,但以下,将说明以通过比较简单的结构的电路来实现的方式进行变形的示例。
图6是表示变形例1中的访问装置的控制电路210a的电路结构的图。
而且,在该图中,表示以下示例:将介由输入部201从处理器40输入的地址值记述为“ADDR”,介由读取部202被发送到ROM10的地址值记述为“addr”,ADDR以及addr是16比特。此外,在该图中,表示以下示例:N是16比特,ROM10相对于16比特的addr输出16比特的data。针对这些,对于后述的变形例2也同样。
如该图所示,变形例1中的访问装置的控制电路210a,是构成为包括选择器214a~214e、AND电路215、及D触发器216a~216c的电路。从处理器40输入了地址值ADDR起经1或2周期之后,当后述的NDATA_ENABLE为“0”时,展开部203获取从该控制电路210a输出的DATA作为有效的压缩代码并进行展开。
其中,选择器214a~214d是在“0”侧与“1”侧两个输入之中,选择成为与NDATA_ENABLE同值一侧的输入的选择器。此外,选择器214a是选择成为与后述的byte_select同值一侧的输入的选择器。
在介由输入部201从处理器40输入地址值ADDR的时刻,各选择器(214a~214e),设为选择了“0”一侧的输入的选择器。
以下,以从处理器40输入了图3(a)所示的非压缩代码C1的地址值(2)作为地址值ADDR的情况为例,具体地说明控制电路210a的动作。
(1)第一数据的读取
介由输入部201从处理器40输入了由第0~第15比特的16比特构成的地址值ADDR[15:0]=‘0…010’b=2时,在选择器214a中,选择了“0”一侧的输入。
因此,由该地址值ADDR的第1比特至第15比特(ADDR[15:1])和最高位比特“0”构成的16比特的地址值{0,ADDR[15:1]}=‘0…001’b=1,从选择器214a作为addr[15:0]而被输出。
对该addr[15:0],ROM10输出图3(b)的addr[1]所配置的16比特数据的高位8比特data[15:8]和低位8比特的data[7:0]。
在该图3(b)的示例中,data[15:8]是包含标志“0”及D10的8比特数据,data[7:0]是由标志“1”及C11构成的8比特数据。
此外,在选择器214b中,选择了“0”侧的输入。因此,来自处理器的地址值ADDR的第0比特(ADDR[0])=‘0’b,从选择器214b作为byte_select而被输出。
因此,从选择器214e,输出data[7:0](包含C11)作为data_sel[7:0]。
在该示例中,data_sel[7:0]的第0比特(data_sel[0])为标志“1”,NDATA_ENABLE为“0”。因此,从AND电路215输出“1”,被输入D触发器216a。
此外,在选择器214c中,选择“0”一侧的输入。因此,从选择器214c输出data_sel[7:0]的第1比特至第7比特(data_sel[7:1]),并输入D触发器216b。
此外,在选择器214d中,选择“0”一侧的输入。因此,从选择器214d输出all0(9比特全为0),并输入D触发器216c。
若在D触发器216a~216c中有时钟输入,则从D触发器216a输出“1”作为NDATA_ENABLE,从D触发器216b输出data_sel[7:1](C11)作为DATA[6:0]。此外,从D触发器216c输出all0(9比特全为0)作为DATA[15:7]。
而且,在该示例中,在该定时(从处理器40输入了地址ADDR起经1周期后)中,由于NDATA_ENABLE为“1”,因此尚不进行基于展开部203的DATA的展开。
(2)第二数据的读取
如上所述,由于NDATA_ENABLE为“1”,因此,在选择器214a~214d中,选择“1”一侧的输入。
因此,从选择器214a输出由来自处理器40的地址值ADDR的第2比特至第15比特(ADDR[15:2])和高位2比特“10”构成的16比特的地址值{10,ADDR[15:2]}=‘10…0’b=215作为addr[15:0]。
对该addr[15:0],ROM10输出图3(b)的addr“M/2”所配置的16比特数据的高位8比特的data[15:8]和低位8比特的data[7:0]。
此外,从选择器214b,输出来自处理器的地址值ADDR的第1比特(ADDR[1])=‘1’b作为byte_select。
因此,从选择器214e输出data[15:8](包含C12)作为data_sel[7:0]。
由于NDATA_ENABLE为“1”,因此从AND电路215输出“0”,并输入D触发器216a。此外,从选择器214c,输出DATA[6:0](压缩代码C10的7比特即C11),并输入D触发器216b。此外,从选择器214d输出由data_sel[7:0](包含C12)和最高位比特“0”构成的9比特的数据,并输入D触发器216c。
若在D触发器216a~216c中有时钟的输入,则从D触发器216a输出“0”作为NDATA_ENABLE,从D触发器216b输出压缩代码C10的7比特即C11作为DATA[6:0]。此外,从D触发器216c输出包含从压缩代码C10中去除了C11后的剩余的数据即C12在内的数据作为DATA[15:7]。
而且,在该示例中,在该定时(从处理器40输入地址值ADDR起经2周期后),NDATA_ENABLE为“0”。因此,通过展开部203获取从该控制电路210a输出的DATA(DATA[6:0]以及DATA[15:7]),来进行展开。
《实施方式2》
以下,以与实施方式1的不同点为中心,来说明变更了实施方式1中说明的第二运算的内容的示例。
<1.功能结构>
图7是表示实施方式2中的配置决定装置120的主要部分的功能结构的方框图,图8是表示实施方式2中的访问装置220的主要部分的功能结构的方框图。
如图7所示,配置决定装置120具有控制部130来代替实施方式1中的配置决定装置100的控制部110,该控制部130与配置决定装置100的不同点在于:代替实施方式1中的控制部110的第二决定部112,而包含第二决定部131。
此外,如图8所示,访问装置220具有控制部230来代替实施方式1中的访问装置200的控制部210,该控制部230与访问装置200的不同点在于:代替实施方式1中的控制部210的第二确定部212,而包含第二确定部231。
具体而言,配置决定装置120的第二决定部131以及访问装置220的第二确定部231,与第二决定部112以及第二确定部212的不同点在于:在如计算式5所示表示地址值ADDR_a以及地址值ADDR_b时,进行计算式6~8所示的任一运算作为第二运算。
[计算式5]
ADDR_a=ADDR_b=4×j+k
其中,j=0、1、…、M/4-1,k=0、1、2、3
[计算式6]
addr_a2=addr_b2=M/2+j
[计算式7]
addr_a2=addr_b2=M/2+j+1/2
[计算式8]
addr_a2=addr_b2=3×M/4+j/2
<2.数据>
图9(a)是表示分别将M个N比特的非压缩代码压缩后的结果例的图。
在图9(a)中,表示将ADDR为“0”~“3”的非压缩代码A2~D2压缩后的结果,得到压缩代码A20~D20,压缩代码A20、C20、D20的数据长度大于N/2-2比特。
此外,图9(b)是表示各压缩代码(A20~D20)的向ROM10的配置例的图。
配置各压缩代码的ROM10内的区域area10,由第一区域area11和第二区域area12构成。
其中,虽然第一区域area11与实施方式1中的第一区域area1同样,是配置针对各压缩代码的第一数据的区域,但与第一区域area1的不同点在于:第一数据由压缩代码之中的Xb比特(Xb<N,在该示例中,设为N/2-2即6比特)和2比特的标志构成。
其中,2比特的标志表示压缩代码的数据长度是否大于Xb比特,并且,当大于Xb比特时,表示从压缩代码中去除了Xb比特后的剩余部分是否已配置在计算式6~计算式8的结果值所示的三个位置之中的任一位置。
在该示例中,将压缩代码的数据长度在Xb比特以下时的标志的值设定为“00”,当压缩代码的数据长度大于Xb比特时,如以下设定标志的值。即,在使用计算式6的运算时,设定为“10”,在使用计算式7的运算时,设定为“11”,在使用计算式8时,设定为“01”。
第二区域area12,与实施方式1的第一区域area2同样,是配置各压缩数据之中数据长度大于Xb比特的特定压缩代码的第二数据的区域。而且,在实施方式1中,虽然将各压缩代码之中数据长度大于Xa比特的压缩代码称为特定压缩代码,但在实施方式2中,将数据长度大于Xb比特的压缩代码称为特定压缩代码。
在图9(a)的示例中,压缩代码A20、C20、D20的数据长度大于N/2-2,压缩代码B20的数据长度在N/2-2以下。
因此,在图9(b)的示例中,分别将压缩代码A20、C20及D20分割地配置于ROM10的第一区域area11内和第二区域area12内。而且,针对使用计算式6~8的第二数据的配置决定方法,在以下的<3.动作>的<3-1.配置决定处理>以及<3-2.配置决定处理的具体例>中详细说明。
<3.动作>
接着,针对配置决定装置120及访问装置220的动作进行说明。
<3-1.配置决定处理>
首先,针对配置决定装置120的配置决定处理进行说明。
图10是表示配置决定装置120的配置决定处理的流程图。
如该图所示,配置决定装置120的配置决定处理,与配置决定装置100的配置决定处理的不同点在于:代替图4所示的实施方式1中的配置决定装置100的配置决定处理之中的步骤S6~S8的处理,而包含步骤S31~S33的处理。因此,以下,以步骤S31~S33的处理为中心进行说明。
若结束步骤S1~S5的处理,则控制部130在步骤S4中判定从压缩部102接收到的数据长度信息所示的数据长度是否大于Xb比特(在该示例中,N/2-2比特)(步骤S31)。
在图4所示的步骤S6中,虽然进行了与Xa比特(N/2-1比特)的比较,但由于实施方式2中的第一数据所包含的标志为2比特,因此,在步骤S31中,判定为大于Xb比特(N/2-2比特)。
当从压缩部102接收到的数据长度信息所示的数据长度在Xb比特以下时(步骤S31,否),控制部130介由访问部101,在步骤S5的第一运算的结果值addr_a1所示的存储装置20的压缩代码用的区域22内的位置写入2比特的标志和在步骤S4中接收到的压缩代码(步骤S33)。此时的标志被设定为“00”,以表示压缩代码的数据长度在Xb比特以下。
另一方面,当从压缩部102接收到的数据长度信息所示的数据长度大于Xb比特时(步骤S31,是),控制部130的第二决定部131,对地址值ADDR_a实施第二运算(步骤S32)。
即,将成为j的值共用的“4×j”、“4×j+1”、“4×j+2”及“4×j+3”的连续的四个地址值ADDR_a(其中,j=0、1、…、M/4-1)作为一组,进行计算式6~8所示的各运算之中针对相同组中所包含的其它地址值未被选择的运算。在此,作为一例,设为按照计算式6、计算式7、计算式8的顺序进行选择。细节在<3-2.配置决定处理的具体例>中进行说明。
接着,控制部130将2比特的标志和在步骤S4接收到的压缩代码的Xb比特,介由访问部101写入到步骤S5的第一运算的结果值addr_a1所示的存储装置20的压缩代码用的区域22内的位置。此时的标志是根据在步骤S32使用的运算是否是计算式6~计算式8的任一者来设定的。即,在使用了计算式6的运算时,设定为“10”,在使用了计算式7的运算时,设定为“11”,在使用了计算式8时设定为“01”。
此外,控制部130,将从在步骤S4接收到的压缩代码中去除了Xb比特的剩余部分,介由访问部101,写入到步骤S32的第二运算的结果值addr_a2所示的压缩代码用的区域22内的位置(步骤S33),进入步骤S9的处理。
<3-2.配置决定处理的具体例>
针对上述的配置决定装置120的配置决定处理,使用图9所示的示例,来具体说明图10所示的步骤S31~S33的处理内容。
(1)针对非压缩代码A2的处理
在该例中,将非压缩代码A2压缩后的压缩代码A20的数据长度大于Xb比特(步骤S31,是),非压缩代码A2的地址值ADDR_a是“4×j”(其中j=0)。因此,控制部130的第二决定部131,执行计算式6所示的运算作为第二运算(步骤S32)。该第二运算的结果值addr_a2成为“M/2”。
接着,控制部130,如图9(b)所示,将2比特标志(10)和在步骤S4接收到的压缩代码(A20)的Xb比特(A21),介由访问部写入到步骤S5的第一运算的结果值addr_a1(0)所示的存储装置20的压缩代码用的区域22内的位置。此外,控制部130,如图9(b)所示,将从在步骤S4接收到的压缩代码(A20)中去除了Xb比特后的剩余部分(A22),介由访问部101写入到步骤S32的第二运算的结果值addr_a2(M/2)所示的压缩代码用的区域22内的位置(步骤S33)。
(2)针对非压缩代码B2的处理
在该例中,将非压缩代码B2压缩后的压缩代码B20的数据长度在Xb比特以下(步骤S31,否)。因此,控制部130,如图9(b)所示,将2比特的标志(00)和在步骤S4接收到的压缩代码,介由访问部101写入到步骤S5的第一运算的结果值addr_a1(1/2)所示的存储装置20的压缩代码用的区域22内的位置(步骤S33)。
(3)针对非压缩代码C2的处理
针对将非压缩代码C2进行压缩的压缩代码C20,也进行与上述压缩代码A20同样的处理(步骤S2~S5、S31~S33、S9),虽然省略详细的说明,但步骤S5的第一运算的结果值addr_a1成为“1”。
此外,在步骤S32中,执行计算式7所示的运算,第二运算的结果值addr_a2成为“M/2+1/2”。在此,执行计算式7所示的运算,是因为已经使用了以属于相同组的压缩代码A20表示于计算式6的运算。
接着,控制部130,如图9(b)所示,将2比特标志(11)和在步骤S4接收到的压缩代码(C20)的Xb比特(C21),介由访问部101写入到步骤S5的第一运算的结果值addr_a1(1)所示的存储装置20的压缩代码用的区域22内的位置。此外,控制部130,如图9(b)所示,将从在步骤S4接收到的压缩代码(C20)中去除了Xb比特后的剩余部分(C22),介由访问部101写入到步骤S32的第二运算的结果值addr_a2(M/2+1/2)所示的压缩代码用的区域22内位置(步骤S33)。
(4)针对非压缩代码D2的处理
针对将非压缩代码D2压缩后的压缩代码D20,也与上述压缩代码A20同样进行处理,特别地,步骤S5的第一运算的结果值addr_a1成为“3/2”。
此外,在步骤S32中,执行计算式8所示的运算,第二运算的结果值addr_a2成为“3×M/4”。
接着,控制部130,如图9(b)所示,将2比特标志(01)和在步骤S4接收到的压缩代码(C20)的Xb比特(C21),介由访问部101写入到步骤S5的第一运算的结果值addr_a1(3/2)所示的存储装置20的压缩代码用的区域22内的位置。此外,控制部130,如图9(b)所示,将从在步骤S4接收到的压缩代码(D20)中去除了Xb比特的剩余部分(D22),介由访问部101写入到步骤S32的第二运算的结果值addr_a2(3×M/4)所示的压缩代码用的区域22内位置(步骤S33)。
<3-3.访问处理>
接着,针对访问装置220的访问处理进行说明。
图11是表示访问装置220的访问处理的流程图。
如该图所示,访问装置220的访问处理,与该访问装置200的访问处理的不同点在于:在图5所示的实施方式1中的访问装置200的访问处理之中,代替步骤S14、S15以及S17,而包括步骤S41~S43的处理。因此,以下,针对步骤S41~S43的处理进行说明。
若结束步骤S11~S13的处理,则控制部230根据在步骤S13中读取出的第一数据的2比特的标志的值,来判定压缩代码的数据长度是否大于Xb比特(步骤S41)。
当标志的值为“00”时,控制部230判定为压缩代码的数据长度在Xb比特以下(步骤S41,否),控制部230的输出部213,将读取出的第一数据所包含的压缩代码输出给展开部203(步骤S43)。若结束步骤S43的处理,则访问装置220,进入步骤S18的处理。
另一方面,当标志的值为“00”以外时,控制部230判定为压缩代码的数据长度大于Xb比特(步骤S41,是),控制部230的第二确定部231,对地址值ADDR_b实施第二运算(步骤S42)。即,第二确定部231,在如计算式5所示表示地址值ADDR_b时,进行计算式6~计算式8所示的运算之中与标志的值对应的运算作为第二运算。
即,当标志的值为“10”时,进行计算式6的运算,当为“11”时,进行计算式7的运算,当为“01”时,进行计算式8的运算。
控制部230,介由读取部202,从ROM10的第二区域area12内的第二运算的结果值addr_b2所示的位置读取第二数据(步骤S16)。控制部230的输出部213,将由读取出的第一数据所包含的压缩代码之中的Xb比特和第二数据构成的压缩代码,输出给展开部203(步骤S43)。若结束步骤S43的处理,则访问装置220进入步骤S18的处理。
<3-4.访问处理的具体例>
针对上述访问装置220的访问处理,采用图9所示的示例,来具体说明图11所示的S41~S43的处理内容。
以下,以从处理器40接收到希望的非压缩代码D2的地址值ADDR_b“3”的情况为例,说明访问装置220的访问处理。
在该例中,由于在步骤S13中读取出的第一数据的标志为“01”,因此,控制部230判定为压缩代码的数据长度大于Xb比特(步骤S41,是)。
控制部230的第二确定部231,在如计算式5所示表示地址值ADDR_b时,进行计算式6~计算式8所示的运算之中与标志的值对应的运算作为第二运算(步骤S42)。在该例中,由于非压缩代码D2的地址值ADDR_b为“4×j+3”(其中j=0),标志为“01”,因此,进行计算式8所示的运算,该第二运算的结果值addr_b2成为“3×M/4”。
控制部230,介由读取部202,从ROM10的第二区域area12内的第二运算的结果值addr_b2(3×M/4)所示的位置读取第二数据(D21)(步骤S16)。控制部230的输出部213,将由从读取出的第一数据中去除了标志的数据(D21)以及第二数据(D22)构成的压缩代码输出给展开部203(步骤S43)。
<4.考察>
根据实施方式2的配置决定装置120,与实施方式1的配置决定装置100的情况相比,不仅缓和了针对特定压缩代码的条件,并且能够削减配置各压缩代码的ROM10上的区域area10的容量。
以将地址值ADDR_a为“4×j”、“4×j+1”、“4×j+2”以及“4×j+3”(其中,j=0、1、…、M/4-1)的4个非压缩代码压缩后的各压缩代码都不是特定压缩代码为条件,各压缩代码的ROM10上的保存区域area10(参照图9(b))的容量如下。
也就是说,保存区域area10的容量,成为第一区域area11的容量(M×N/2比特)+第二区域area12的容量(M×N/4比特+M×N/8比特)=7×M×N/8比特。
如上所述,在实施方式1的配置决定装置100中,以地址值ADDR_a连续的2个非压缩代码的压缩代码都不是特定压缩代码为条件,能够削减25%的容量。
另一方面,根据实施方式2的配置决定装置120,以地址值ADDR_a连续的4个非压缩代码的压缩代码都不是特定压缩代码为条件,能够削减12.5%的容量。
《变形例2》
以下,对以比较简单的结构的电路来实现实施方式2的访问装置220的控制部230的变形例进行说明。
图12是表示变形例2中的访问装置的控制电路230a的电路结构的图。
如该图所示,变形例2中的访问装置的控制电路230a是构成为包括选择器232a~232f和D触发器234a~234c的电路。
从处理器40输入了地址值ADDR起经1或2周期之后,NDATA_ENABLE[1:0]为“00”时,展开部203获取从该控制电路230a输出的DATA作为有效的压缩代码进行展开。
而且,选择器232a以及232b,选择“00”一侧、“11”一侧和“01”或“10”一侧的三个输入之中与NDATA_ENABLE[1:0]成为同值一侧的输入。
在介由输入部201从处理器40输入地址值ADDR的时刻,选择器232a~232f作为选择了“00”一侧的输入。
以下,以从处理器40输入了图9(a)所示的非压缩代码D2的地址值(3)的情况为例,具体地说明控制电路230a的动作。
(1)第一数据的读取
介由输入部201从处理器40输入了地址值ADDR[15:0]=‘0…011’b=3时,由于在选择器232a中,选择了“00”一侧的输入,因此,从选择器232a输出16比特的地址值{0,ADDR[15:1]}=‘0…001’b=1作为addr[15:0]。
相对于该addr[15:0],在ROM10中,图9(b)的addr“1”所配置的16比特数据作为data[15:8]及data[7:0]而被输出。
此外,由于在选择器232b中,选择了“00”一侧的输入,因此,从选择器232b输出ADDR[0]=1作为byte_select。
因此,从选择器232e,输出data[15:8](标志“01”及D21)作为data_sel[7:0],在选择器232f中,由于选择了“00”一侧的输入,因此,从选择器232f输出data_sel[1:0](01),并且输入到D触发器234a。
此外,在选择器232c中,由于选择了“00”一侧的输入,因此,从选择器232c输出data_sel[7:2](D21),并且输入到D触发器234b。此外,在选择器232d中,由于选择了“00”一侧的输入,因此,从选择器232d输出all0(10比特全部为0),再输入D触发器234c。
若在D触发器234a~234c中有时钟的输入,则从D触发器234a输出“01”作为NDATA_ENABLE[1:0],从D触发器234b输出data[7:2](D21)作为DATA[5:0]。此外,从D触发器234c输出all0(10比特全为0)作为DATA[15:6]。
而且,在该示例中,在该定时(从处理器40输入了地址值ADDR起经1周期之后),由于NDATA_ENABLE[1:0]为“01”,因此尚不进行基于展开部203的DATA的展开。
(2)第二数据的读取
如上所述,由于NDATA_ENABLE[1:0]成为“01”,因此,选择器232a及232b选择“01”一侧的输入,在选择器232c、232d及232f中,选择“(not)00”一侧的输入。
从选择器232a输出16比特的地址值{110,ADDR[15:3]}=‘110…0’b=215+214作为addr[15:0],ROM10输出图9(b)的addr“3×M/4”所配置的16比特数据作为data[15:8]及data[7:0]。
此外,由于从选择器232b输出ADDR[2]=“0”作为byte_select,因此从选择器232e输出data[7:0](包括D22)作为data_sel[7:0]。
由于NDATA_ENABLE[1:0]为“01”,因此,从选择器232f输出all0(“00”),并输入D触发器234a。此外,从选择器232c输出DATA[5:0](D21),并输入D触发器234b。此外,从选择器232d输出{00,data_sel[7:0]},并输入D触发器234c。
若在D触发器234a~234c中有时钟的输入,则从D触发器234a输出“00”作为NDATA_ENABLE[1:0],从D触发器234b输出D21作为DATA[5:0]。此外,从D触发器234c输出包括从压缩代码D20中去除了D21后的剩余数据即D22的数据作为DATA[15:6]。
而且,在该示例中,在该定时(从处理器40输入了地址值ADDR起经2周期之后)中,NDATA_ENABLE[1:0]为“00”。因此,通过展开部203获取从该控制电路210a输出的DATA(DATA[5:0]及DATA[15:6]),而后进行展开。
《实施方式3》
以下,以变更在实施方式1中说明的第一运算及第二运算的内容的示例与实施方式1的不同点为中心进行说明。
<1.功能结构>
图13是表示实施方式3中的配置决定装置140的主要部分的功能的方框图,图14是表示实施方式3中的访问装置240的主要部分的功能结构的方框图。
如图13所示,配置决定装置140具有控制部150,而取代实施方式1中的配置决定装置100的控制部110。该控制部150与配置决定装置100的不同点在于:包含第一决定部151及第二决定部152,而取代实施方式1中的控制部110的第一决定部111及第二决定部112。
此外,如图14所示,访问装置240具有控制部250,而取代实施方式1中的访问装置200的控制部210。该控制部250与访问装置200的不同点在于:包括第一确定部251及第二确定部252,而取代实施方式1中的控制部210的第一确定部211及第二确定部212。
具体而言,配置决定装置140的第一决定部151及访问装置240的第一确定部251与第一决定部111及第一确定部211的不同点在于:在如计算式5所示那样表示地址值ADDR_a及地址值ADDR_b时,进行与以计算式9所示的k的值相应的运算作为第一运算。
[计算式9]
K=0:addr_a1=addr_b1=3×j
K=1:addr_a1=addr_b1=3×j+1/2
K=2:addr_a1=addr_b1=3×j+2
K=3:addr_a1=addr_b1=3×j+2+1/2
其中,j=0、1、…、M/4-1
此外,配置决定装置140的第二决定部152及访问装置240的第二确定部252与第二决定部112及第二确定部212的不同点在于:在如计算式5所示那样表示地址值ADDR_a及地址值ADDR_b时,进行与以计算式10所示的k值相应的运算作为第二运算。
[计算式10]
K=0,1:addr_a2=addr_b2=3×j+1
K=2,3:addr_a2=addr_b2=3×j+1+1/2
其中,j=0、1、…、M/4-1
<2.数据>
图15(a)是表示分别对M个N比特的非压缩代码进行压缩的结果例的图。
在该图中,表示将ADDR为“0”~“7”的非压缩代码A3~H3压缩后的结果,得到压缩代码A30~H30,压缩代码C30及E30的数据长度大于N/2-1比特。
此外,图15(b)是表示各压缩代码(A30~H30)的向ROM10的配置例的图。
配置各压缩代码的ROM10内的区域area20,将j的值共用的“4×j”、“4×j+1”、“4×j+2”以及“4×j+3”的连续的四个地址值ADDR(其中,j=0、1、…、M/4-1)作为一组,按照每组具有第一区域和第二区域。
例如,由“0”~“3”的连续四个地址值ADDR构成的组的第一区域为area21a,第二区域为area22a。此外,例如,由“4”~“7”的连续四个地址值ADDR构成的组的第一区域为area21b,第二区域为area22b。
而且,各第一区域(area21a、21b),与实施方式1的第一区域area1相同,是保存与其组对应的各压缩代码的第一数据的区域。此外,各第二区域(area22a、22b),与实施方式1的第二区域area2相同,是配置与其组对应的各压缩代码之中数据长度大于Xa比特的特定压缩代码的第二数据的区域。
在图15(a)的示例中,压缩代码C30及E30的数据长度大于N/2-1。因此,在图15(b)的示例中,压缩代码C30分割地配置为ROM10的第一区域area21a内和第二区域area22a内,压缩代码E30分割地配置为ROM10的第一区域area21b内和第二区域area22b内。
而且,针对使用了计算式9的第二数据的配置决定方法,在以下的<3.动作>的<3-1.配置决定处理>以及<3-2.配置决定处理的具体例>中详细地进行说明。
<3.动作>
接着,针对配置决定装置140以及访问装置240的动作进行说明。
<3-1.配置决定处理>
首先,针对配置决定装置140的配置决定处理进行说明。
图16是表示配置决定装置140的配置决定处理的流程图。
如该图所示,配置决定装置140的配置决定处理与配置决定装置100的配置决定处理的不同点在于:包括步骤S51及S52的处理,而取代了图4所示的实施方式1中的配置决定装置100的配置决定处理之中的步骤S5及S7的处理。因此,以下,以步骤S51及S52的处理为中心进行说明。
若结束步骤S1~S4的处理,则控制部150的第一决定部151,对地址值ADDR_a实施第一运算(步骤S51)。即,第一决定部151,在如计算式5所示那样表示地址值ADDR_a时,进行与以计算式9所示的k值相应的运算。
此外,控制部150进行步骤S6的判定处理,在步骤S4中,当从压缩部102接收到的数据长度信息所示的数据长度大于Xa比特时(步骤S6:是),控制部150的第二决定部152对地址值ADDR_a实施第二运算(步骤S52)。即,第二决定部152,在如计算式5所示那样表示地址值ADDR_a时,进行与以计算式10所示的k值相应的运算。
若结束步骤S2的处理,则控制部150进入步骤S8的处理。
<3-2.配置决定处理的具体例>
针对上述配置决定装置140的配置决定处理,使用图15所示的示例,来具体说明图16所示的步骤S51及S52的处理内容。
(1)针对非压缩代码A3的处理
在该示例中,非压缩代码A3的地址值ADDR_a是“4×j+0”(其中j=0)。因此,第一决定部151,执行计算式9所示的k=0时的运算作为第一运算(步骤S51)。该第一运算的结果值addr_a1为“0”。
此外,在该示例中,从压缩部102接收到的数据长度信息所示的数据长度,在Xa比特以下(步骤S6:否)。因此,控制部150,如图15(b)所示,将标志(0)和在步骤S4接收到的压缩代码(A30),介由访问部101写入到步骤S51的第一运算的结果值addr_a1(0)所示的存储装置20的压缩代码用的区域22内的位置(步骤S8)。
(2)针对非压缩代码B3的处理
针对压缩了非压缩代码B3的压缩代码B30,也与上述压缩代码A30同样地进行处理,因此,虽然省略详细的说明,但步骤S51的第一运算的结果值addr_a1成为“1/2”。因此,如图15(b)所示,在第一运算的结果值addr_a1(1/2)所示的存储装置20的压缩代码用的区域22内的位置,配置标志(0)和在步骤S4接收到的压缩代码(B30)。
(3)针对非压缩代码C3的处理
在该示例中,非压缩代码C3的地址值ADDR_a是“4×j+2”(其中j=0)。因此,第一决定部151,执行计算式9所示的k=2时的运算作为第一运算(步骤S51)。该第一运算的结果值addr_a1为“2”。
此外,在该示例中,从压缩部102接收到的数据长度信息所示的数据长度,大于Xa比特(步骤S6,是)。因此,第二决定部151,执行计算式10所示的k=2时的运算作为第二运算(步骤S52)。该第二运算的结果值addr_a2,为“1+1/2”。
因此,控制部150,如图15(b)所示,在步骤S51的第一运算的结果值addr_a1(2)所示的存储装置20的压缩代码用的区域22内的位置,介由访问部101,写入标志(1)和在步骤S4接收到的压缩代码(C30)之中的Xa比特(C31)。此外,控制部150,如图15(b)所示,在步骤S52的第二运算的结果值addr_a2(1+1/2)所示的存储装置20的压缩代码用的区域22内的位置,介由访问部101,写入从在步骤S4接收到的压缩代码(C30)中去除了Xa比特(C31)的数据(C32)(步骤S8)。
(4)
针对非压缩代码D3的处理
针对压缩了非压缩代码D3的压缩代码D30,也与上述压缩代码A30同样进行处理,虽然省略了详细的说明,但步骤S51的第一运算的结果值addr_a1,成为“2+1/2”。因此,如图15(b)所示,在第一运算的结果值addr_a1(2+1/2)所示的存储装置20的压缩代码用的区域22内的位置,配置标志(0)和在步骤S4接收到的压缩代码(D30)。
<3-3.访问处理>
接着,针对访问装置240的访问处理进行说明。
图17是表示访问装置240的访问处理的流程图。
如该图所示,访问装置240的访问处理与访问装置200的访问处理的不同点在于:包括步骤S61以及S62的处理,而代替图5所示的实施方式1中的访问装置200的访问处理之中的步骤S12及S15的处理。因此,以下,以步骤S61及S62的处理为中心进行说明。
若介由输入部210,从处理器40接收到希望的非压缩代码的地址值ADDR_b(步骤S11,是),则访问装置240的控制部250的第一确定部251,对地址值ADDR_b实施第一运算(步骤S61)。也就是说,第一确定部251,在如计算式5所示那样表示地址值ADDR_a时,进行与以计算式9所示的k的值对应的运算。
此外,控制部250,进行步骤S13的第一数据的读取处理以及步骤S14的判定处理,并在压缩代码的数据长度大于Xa比特时(步骤S14,是),控制部250的第二确定部252对地址值ADDR_b实施第二运算(步骤S62)。即,第二确定部252,在以计算式5所示那样表示地址值ADDR_b时,进行与以计算式10所示的k的值对应的运算。
若结束步骤S62的处理,则控制部150进入步骤S16的处理。
<3-4.访问处理的具体例>
针对上述访问装置240的访问处理,使用图15所示的示例,来具体说明图17所示S61及S62的处理内容。
以下,以从处理器40接收到希望的非压缩代码C3的地址值ADDR_b“2”的情况为例,来说明访问装置240的访问处理。
若介由输入部201,从处理器40接收到希望的非压缩代码的地址值ADDR_b“2”(步骤S11,是),则访问装置240的控制部250的第一确定部251,对地址值ADDR_b实施第一运算(步骤S61)。在该示例中,非压缩代码C2的地址值ADDR_b为“4×j+2”(其中j=0),因此,执行计算式9所示的k=2时的运算作为第一运算。该第一运算的结果值addr_b1为“2”。
因此,控制部250,介由读取部202,从第一运算的结果值addr_b1(2)所示的ROM10的第一区域area21a内的位置读取第一数据(标志“1”和C31)(步骤S13)。
此外,在该示例中,由于在步骤S13读取出的第一数据的标志的值为“1”,因此判定为压缩代码的数据长度大于Xa比特(步骤S14,是)。
因此,控制部250的第二确定部252,对地址值ADDR_b实施第二运算(步骤S62)。在该示例中,执行计算式10所示的k=2时的运算作为第二运算,该第二运算的结果值addr_b2为“1+1/2”。
因此,控制部250,介由读取部202,从第二运算的结果值addr_b2为(1+1/2)所示的ROM10的第二区域area22a内的位置读取第二数据(包括C32)(步骤S16)。
以后,访问装置240与实施方式1的访问装置200同样,进行步骤S17~S19的处理,并结束访问处理。
<4.考察>
根据实施方式3的配置决定装置140,与实施方式1的配置决定装置100的情况相同,以将地址值ADDR_a为“2×j”及“2×j+1”(其中,j=0、1、…、M/2)的2个非压缩代码压缩后的各压缩代码都不是特定压缩代码为条件,各压缩代码的ROM10上的保存区域area20(参照图15(b))的容量,为3×M×N/4比特。
而且,在实施方式3中,如图15(b)所示,按照每个组连续配置了第一区域和第二区域。因此,如以上说明的变形例3那样,在访问装置240中具有ROM闪存,且控制部250从该ROM闪存读取各压缩代码时,能够通过一次访问读取特定压缩代码。
《变形例》
以下,对以比较简单的电路来实现实施方式3的访问装置240的控制部250的变形例进行说明。
而且,该变形例3的访问控制装置,除了具有控制电路250a,还具有ROM闪存11,而替代访问装置240的控制部250。
该ROM闪存11,保存有ROM10上的各压缩代码之中的至少一部分的拷贝,对从控制电路250a介由读取部202发送的地址值“addr[15:0]”,输出在“addr+0”、“addr+1”、“addr+2”所保存的数据。
即,在该示例中,控制电路250a,从ROM闪存11中读取将处理器40希望的非压缩代码压缩后的压缩代码。
而且,以下,为了简单说明,设为不发生闪存失误。
图18是表示变形例3中的访问装置的控制电路250a的电路结构的图。
而且,在该图中,表示将介由输入部201从处理器40输入的地址值记述为“ADDR”,将介由读取部202发送到ROM闪存11的地址值记述为“addr”,ADDR以及addr是16比特的示例。此外,在该图中,表示N为16比特,ROM闪存11对16比特的addr分别输出16比特的data0、data1、data2的示例。
如该图所示,变形例3的访问装置的控制电路250a,构成为包括加法器253、选择器254a~254c、及D触发器255a及255b的电路。
从处理器40输入了地址值ADDR起经1周期之后,展开部203获取从该控制电路250a输出的DATA作为有效的压缩代码,并进行展开。
以下,以从处理器40输入图15(a)所示的非压缩代码C3的地址值(2)的情况为例,具体地说明控制电路250a的动作。
若介由输入部201,从处理器40,输入地址值ADDR[15:0]=‘0…010’b=2,则向加法器输入253输入{00,ADDR[15:2]}=‘0…0’b=0、和{0,ADDR[15:2],0}=‘0…0’b=0。然后,从加法器253输出‘0…0’b=0作为addr[15:0]。
对于该addr[15:0],从ROM闪存11,输出图15(b)的addr“0”、“1”、以及“2”所配置的各16比特数据作为data0[15:0]、data1[15:0]以及data2[15:0]。
由于ADDR[1:0]为“10”,因此,在选择器254a中,选择了“10”一侧的输入,从选择器254a输出data2[0]=1作为INFO。此外,从选择器254a输出data2[7:1](C31)作为DATA[6:0],并输入D触发器255a。
此外,由于ADDR[1]为“1”,因此,在选择器254b中,选择了“1”一侧的输入,由于INFO为“1”,因此,在选择器254c中,选择了“1”一侧的输入。因此,从选择器254c输出包含数据C32的{0,data1[15:8]},并输入D触发器255b。
若在D触发器255a及255b中有时钟的输入,则从D触发器255a输出DATA[6:0](C31),从D触发器255b输出DATA[15:7](包含C32)。
从该控制电路250a输出的DATA(DATA[6:0]以及DATA[15:7])由展开部203获取,并进行展开。
如以上所说明,如图15(b)所示,通过按照每个组连续配置第一区域和第二区域,从而根据变形例3的控制电路250a,能够以1周期读取被分割配置于第一区域和第二区域的一个特定压缩代码。
《补充》
以上,虽然根据各实施方式以及各变形例(以下,也简单称为“实施方式”)来说明了本发明的配置决定装置、配置决定方法、数据结构、存储器、访问装置以及存储器访问方法,但也能够如以下进行变形,本发明当然不局限于如上述实施方式所示的配置决定装置、配置决定方法、数据结构、存储器、访问装置以及存储器访问方法。
(1)在实施方式中,使用图3(a)、图9(a)以及图15(a)所示的N比特的非压缩代码作为本发明的M个N比特数据的一例,并使用图3(a)、图9(a)以及图15(a)所示的小于N比特的压缩代码作为本发明的M个小于N比特的压缩数据的一例来分别进行了说明。然而,本发明的M个N比特数据以及M个小于N比特的压缩数据,也可以是除此以外的数据。
此外,在实施方式中,虽然以N为16的情况为例进行了说明,但不局限于此,N大于或小于16均可。
此外,标志在实施方式1及3中为1比特,在实施方式2中采用2比特的示例进行了说明,但不局限于此,标志的比特长度也可以大于这些示例。
(2)实施方式中的配置决定装置,作为决定针对各压缩代码的ROM10上的配置的装置进行了说明,此外,实施方式的访问装置,作为对该ROM10进行访问的装置进行了说明。然而,不局限于ROM,本发明的配置决定装置,也可以决定各压缩代码向ROM以外的其它存储器的配置,本发明的访问装置也可以是对ROM以外的其它存储器进行访问的装置。
(3)在实施方式1以及3中,对第一数据的最大数据长度为N/2-1进行了说明,在实施方式2中,对第一数据的最大数据长度为N/2-2进行了说明。然而,在实施方式中说明的第一数据的最大数据长度仅是一个示例,除此以外也是可以的。
即,第一数据的最大数据长度,通过决定是否以某些压缩代码共有实施方式的ROM10上的地址addr的1地址的区域(在实施方式中N比特)来决定。
例如,在决定为以i个压缩代码共有的情况下,实施方式1及3的第一数据的最大数据长度能够设为N/i-1,实施方式2的第一数据的最大数据长度能够设为N/i-2。
在实施方式中,对设为以2个特定压缩数据共有ROM10上的地址addr的1地址的区域(在实施方式中N比特),且第二数据的最大数据长度为N/2的示例进行了说明。
然而,在实施方式中说明的第二数据的最大数据长度是一个示例,除此以外也是可以的。例如,在以4个特定压缩数据共有ROM10上的地址addr的1地址的区域时,能够将第二数据的最大数据长度设为N/4,在以1个特定压缩数据共有的情况下,能够将第二数据的最大数据长度设为N。即,对配置第一数据的第一区域中的ROM10上的地址addr的1地址的区域进行共有的压缩数据的个数、和对配置第二数据的第二区域中的ROM10上的地址addr的1地址的区域进行共有的特定压缩数据的个数,不局限于同一种情况,也可以是不同的情况。
此外,第二数据的开头地址,在实施方式1中设为M/2(参照计算式2及计算式4),在实施方式2中设为M/2以及3×M/4(参照计算式6~计算式8)进行了说明。然而,这些仅是一例,该开头地址能够适当进行变更。
此外,在实施方式3中,设为在相同组内的4个地址值中的配置各压缩代码的第一数据的区域(例如,图15(b)的area21a)之间设定配置第二数据的区域(例如,图15(b)的area22a)进行了说明。然而,该配置仅是一个示例,只要按照每个组设置了在配置第一数据的区域的附近配置第二数据的区域即可。
例如,既可以连续地设定配置第一数据的区域,并且接着该区域设定配置第二数据的区域,也可以接着配置第二数据的区域,设定配置第一数据的区域。
此外,在实施方式3中,虽然设为1组中连续的4个地址值进行了说明,但属于1组的地址值的个数不局限于此。此外,属于1组的地址值也可以不必连续。
(4)实施方式中的配置决定装置包括压缩部102,此外,实施方式中的访问装置作为包括展开部203的装置进行了说明。
然而,压缩部102不是配置决定装置的必需的结构,也可以由其它的装置来实现。此时,例如,需要变形为:在存储装置20中将由其它装置生成的各压缩代码与表示该数据长度的各数据长度信息建立对应来保存。然后,该变形的配置决定装置,以压缩代码用的存储器区域22中决定的配置来保存从存储装置20读取的各压缩代码。
此外,展开部203不是访问装置的必需的结构,也可以由其它装置来实现。
(5)
变形例3中的ROM闪存11设为:保存有ROM10上的各压缩代码之中的至少一部分的拷贝,对从控制电路250a介由读取部202发送的地址值“addr”,输出“addr+0”、“addr+1”、“addr+2”所保存的数据,由此进行了说明。
然而,也可以不使用ROM闪存11。即,变形例1及2也可以同样地从ROM10直接读取压缩代码。但是,此时,为了读取一个特定压缩代码整体,从处理器40输入地址值ADDR起需要2周期。
此外,在各变形例中,由于说明的简化,虽然未言及严格的输入输出方式,但当然可以调整用于压缩代码的读写的定时、或追加请求信号或响应信号等。
(6)在实施方式中,设为将各特定压缩数据分割为如下2部分来配置:将该特定压缩数据之中的X比特(在实施方式1以及3中为Xa比特,在实施方式2中为Xb比特)包含于第一数据;将从该特定压缩数据中去除了X比特后的部分的整体设为第二数据,由此进行了说明。
然而,在实施方式中说明的各特定压缩数据的分割数仅是一个示例,也可以分割为3个以上。
例如,分割为3个时,只要将特定压缩数据之中去除了第一数据所包含的Xc比特(Xc<N)和第二数据所包含的Y比特(Y<N)后的部分的整体即第三数据,配置到对成为该特定压缩数据的基础的非压缩代码的非压缩块中的地址值ADDR_a实施了第三运算的结果值所示的ROM10等的存储器位置即可。
而且,第三运算是与第一运算以及第二运算不同的运算。此外,对特定压缩数据的数据长度而言,由于有时不存在第三数据,因此,为了识别有无第三数据,在第二数据中,需要包含表示该特定压缩数据的数据长度大于Xc+Y比特的标志(例如1比特)。
(7)在实施方式中说明的各结构要素之中的全部或一部分既可以通过一个芯片或多个芯片的集成电路来实现,也可以通过计算机的程序来实现,也可以通过其它各种方式来实现。
此外,在实施方式1~3中说明的各结构要素,通过与配置决定装置以及访问装置分别具有的处理器协同动作来实现其功能。
(8)能够将用于使处理器执行在实施方式1~3中说明的配置决定装置的配置决定处理(参照图4、10、16)以及访问装置的访问处理(参照图5、11、17)的程序记录到记录介质中或介由各种通信路等流通颁布。在这样的记录介质中,有IC卡、硬盘、光盘、蓝牙、ROM、闪存等。被流通颁布的程序,通过被设备中的处理器可读取的存储器等保存来供利用,该处理器通过执行该程序来实现实施方式1~3所示的配置决定装置以及访问装置的各功能。
(9)实施方式中的配置决定装置以及访问装置,也可以将上述(1)~(8)的一部分或全部的变形组合起来应用。
(10)以下,进一步针对本发明的一实施方式以及其变形例和各效果进行说明。
(a)本发明的一实施方式的配置决定装置,决定针对以构成数据块的M个N比特数据各自为基础进行压缩后的M个小于N比特的压缩数据的存储器配置,具有:第一决定单元,其针对M个压缩数据之中数据长度在X比特(X<N)以下的各个一般压缩数据,决定为:在对成为该一般压缩数据的基础的N比特数据的所述数据块内地址值实施了第一运算后得到的结果值所示的存储器位置,配置由该一般压缩数据整体和至少表示该一般压缩数据的数据长度在X比特以下的标志构成的L比特(X<L<N)以下的第一数据,且针对M个压缩数据之中数据长度大于X比特的各个特定压缩数据,决定为:在对成为该特定压缩数据的基础的N比特数据的所述数据块内地址值实施了第一运算后得到的结果值所示的存储器位置,配置由该特定压缩数据之中的X比特和至少表示该特定压缩数据的数据长度大于X比特的标志构成的L比特的第一数据;和第二决定单元,其针对各个所述特定压缩数据,决定为:在对成为该特定压缩数据的基础的N比特数据的所述数据块内地址值实施了与所述第一运算不同的第二运算后得到的结果值所示的存储器位置,配置包括从该特定压缩数据中去除了所述第一数据所包含的X比特后的部分的一部分或整体在内的第二数据,所述第二运算是如下运算:在M个N比特数据各自的所述数据块内地址值之中,针对以K个(K≤M)为1组的各组,对相同组内的任一个地址值实施了该第二运算都生成相同的结果值,并且生成与对其它任一组内的各地址值实施了该第二运算后生成的结果值不同的结果值。
此外,所述第一运算,是各结果值分别表示存储器中的第一区域内的不同的位置的运算,所述第二运算,是各结果值分别表示所述存储器中的与所述第一区域连续的第二区域内的位置的运算。
此外,本发明的一实施方式的配置决定方法,是配置决定装置中的配置决定方法,该配置决定装置决定针对以构成数据块的M个N比特数据各自为基础进行压缩后的M个小于N比特的压缩数据的存储器配置,该配置决定方法包括:第一决定步骤,针对M个压缩数据之中数据长度在X比特(X<N)以下的各个一般压缩数据,决定为:在对成为该一般压缩数据的基础的N比特数据的所述数据块内地址值实施了第一运算后得到的结果值所示的存储器位置,配置由该一般数据整体和至少表示该一般压缩数据的数据长度在X比特以下的标志构成的L比特(X<L<N)以下的第一数据,且针对M个压缩数据之中数据长度大于X比特的各个特定压缩数据,决定为:在对成为该特定压缩数据的基础的N比特数据的所述数据块内地址值实施了第一运算后得到的结果值所示的存储器位置,配置由该特定压缩数据之中的X比特和至少表示该特定压缩数据的数据长度大于X比特的标志构成的L比特的第一数据,第二决定步骤,针对各个所述特定压缩数据,决定为:在对成为该特定压缩数据的基础的N比特数据的所述数据块内地址值实施了与所述第一运算不同的第二运算后得到的结果值所示的存储器位置,配置包括从该特定压缩数据中去除了所述第一数据所包含的X比特后的部分的一部分或整体在内的第二数据,所述第二运算是如下运算:在M个N比特数据各自的所述数据块内地址值之中,针对以K个(K≤M)为1组的各组,对相同组内的任一个地址值实施了该第二运算都生成相同的结果值,并且生成与对其它任一组内的各地址值实施了该第二运算后生成的结果值不同的结果值。
根据该配置决定装置以及配置决定方法,在第二数据作为去除了第一数据所包含的X比特后的部分的整体时,决定为:在对成为该压缩数据的基础的N比特数据的数据块内地址值实施了规定运算(第一运算或第一运算以及第二运算)后得到的结果值所示的存储器位置,配置各压缩数据。
因此,能够从在由该配置决定装置以及配置决定方法所决定的位置配置有各压缩数据的存储器中,从对该N比特数据的地址值实施了规定运算后得到的结果值所示的存储器位置读取与处理器希望的N比特数据对应的压缩数据。即,能够不使用地址变换表地读取与处理器希望的N比特数据对应的压缩数据。
而且,当第二数据为包括去除了第一数据所包含的X比特后的部分的一部分在内的数据时,可以决定为:在对成为该特定压缩数据的基础的N比特数据的所述数据块内地址值实施了与所述第一运算以及所述第二运算不同的第三运算后得到的结果值所示的存储器位置,配置从该特定压缩数据中去除了第一数据所包含的X比特和第二数据所包含的构成该特定压缩数据的数据后的部分即第三数据。
即,在第二数据为包括去除了第一数据所包含的X比特后的部分的一部分在内的数据时,也通过在对成为该压缩数据的基础的N比特数据的数据块内地址值实施了规定运算(在该示例中,第一运算、第二运算以及第三运算)后得到的结果值所示的存储器位置进行配置,而能够不使用地址变换表地读取与处理器希望的N比特数据对应的压缩数据。
(b)此外,所述第一区域,是N×M/2比特的区域,所述第一决定单元,将所述标志设为F比特,将数据长度大于N/2-F比特的压缩数据设为所述特定压缩数据,针对M个压缩数据,分别决定为:在将成为该压缩数据的基础的N比特数据的所述数据块内地址值除以2后得到的结果值所示的存储器位置,配置所述第一数据。
该配置决定装置,通过将成为该压缩数据的基础的N比特数据的数据块内地址值除以2这样的简单运算的结果值来决定配置各压缩数据的第一数据的存储器上的位置。
即,从在由该配置决定装置决定的位置配置各压缩数据的存储器中,能够从对该N比特数据的地址值实施了上述简单运算的结果值所示的存储器位置读取与处理器希望的N比特数据对应的压缩数据之中的第一数据。
(c)此外,所述第二区域,是N×M/4比特的区域,所述第二运算是如下运算:在M个N比特数据各自的所述数据块内地址值之中,按照以2个为1组的每组,生成表示各偏移N/2比特的存储器位置的结果值。
由此,将第二区域内按照每N/2比特划分的各区域,作为配置属于相同组的2个块内地址值的2个压缩数据的第二数据的区域而被共有。
因此,以属于相同组的2个块内地址值的2个压缩数据都不是特定压缩数据为条件,根据该配置决定装置,能够在读取与处理器希望的N比特数据对应的压缩数据时,不使用地址变换表,从而抑制M个压缩数据的配置需要的存储器容量。
(d)此外,所述第二区域,是N×M×3/8比特的区域,所述第二运算是如下运算:在M个N比特数据各自的所述数据块内地址值之中,按照以4个为1组的每组,生成表示3个存储器位置的结果值,所述第二决定单元,针对各特定压缩数据,分别决定为:在对成为该特定压缩数据的基础的N比特数据的所述数据块内地址值实施了第二运算后得到的结果值所示的3个存储器位置之中未配置其他特定压缩数据的所述第二数据的一个存储器位置,配置该特定压缩数据的所述第二数据,所述第一数据所包含的标志,还是表示在所述3个存储器位置之中哪个存储器位置配置有包含该第一数据在内的所述特定压缩数据的所述第二数据的2比特数据。
由此,作为配置属于相同组的4个块内地址值的4个压缩数据的第二数据的区域而共有3个区域。
因此,以属于相同组的4个块内地址值的4个压缩数据都不是特定压缩数据为条件,根据该配置决定装置,能够在读取与处理器希望的N比特数据对应的压缩数据时,不使用地址变换表,从而抑制M个压缩数据的配置需要的存储器容量。
此外,当与处理器希望的N比特数据对应的压缩数据为特定压缩数据时,读取该特定压缩数据的第一数据,并通过参照标志,能够简单地判断在上述3个区域之中的哪一区域中配置有该特定压缩数据的第二数据。
(e)此外,所述第一运算以及所述第二运算是如下的运算:在M个N比特数据各自的所述数据块内地址值之中,针对以J个(K≤J≤M)为1组的各组,若对相同组内的各地址值实施该第一运算以及该第二运算,则生成表示存储器中的第一区域内的位置的结果值,并且若对另外1组内的各地址值实施该第一运算以及该第二运算,则生成表示所述存储器中的与所述第一区域不同的第二区域内的位置的结果值。
根据该配置决定装置,能够在附近配置构成特定压缩数据的第一数据以及第二数据。
因此,在由该配置决定装置决定的位置配置有各压缩数据的存储器,例如,是相对于指定存储器位置的一个地址,能够输出多个地址的数据的具有所谓突发传输功能的存储器等时,通过一次访问,能够提高读取1个特定压缩数据整体的可能性。
(f)此外,所述第二运算是如下运算:在M个N比特数据各自的所述数据块内地址值之中,针对以连续的4个地址值为1组的各组,若对相同组内的第一以及第二地址值实施该第二运算,则生成表示所述第一区域内的部分区域内的相同位置的相同结果值,并且若对该相同组内的第三以及第四地址值实施该第二运算,则生成表示从对所示第一以及第二地址值实施了该第二运算后得到的结果值所示的相同存储器位置偏移了N/2比特的所述部分区域内的相同位置的相同结果值,所述第一运算是如下运算:在M个N比特数据各自的所述数据块内地址值之中,针对以4个为1组的各组,若对各地址值实施该第一运算,则生成表示与所述第一区域内的所述部分区域不同的位置的结果值。
该配置决定装置,在同一存储器范围内配置块内地址值连续的4个地址值的各压缩数据。
因此,在由该配置决定装置决定的位置配置有各压缩数据的存储器,例如,是具有上述所谓突发传输功能的存储器等时,通过一次访问,能够提高统一读取连续4个数据块内地址值的各压缩数据的可能性。
因此,由该配置决定装置决定的各压缩数据的配置,对读取附近的地址值的压缩数据这样的情形特别有用。例如,在执行程序时,由于有空间的局限性这样的性质,因此在该压缩数据为压缩程序代码时能够利用。
(g)此外,本发明的一实施方式的数据结构,是针对以作为被配置于连续存储器区域而进行动作的程序代码块的结构要素的M个N比特数据各自为基础进行压缩后的M个小于N比特的压缩数据的存储器配置用的数据结构,针对M个压缩数据之中数据长度在X比特(X<N)以下的各个一般压缩数据,决定为:在对成为该一般压缩数据的基础的N比特数据的所述连续存储器区域中的地址值实施了第一运算后得到的结果值所示的存储器位置,配置由该一般压缩数据整体和至少表示该一般压缩数据的数据长度在X比特以下的标志构成的L比特(X<L<N)以下的第一数据,针对M个压缩数据之中数据长度大于X比特的各个特定压缩数据,决定为:在对成为该特定压缩数据的基础的N比特数据的所述连续存储器区域中的地址值实施了第一运算后得到的结果值所示的存储器位置,配置由该特定压缩数据之中的X比特和至少表示该特定压缩数据的数据长度大于X比特的标志构成的L比特的第一数据,针对各个所述特定压缩数据,决定为:在对成为该特定压缩数据的基础的N比特数据的所述连续存储器区域中的地址值实施了与所述第一运算不同的第二运算后得到的结果值所示的存储器位置,配置包含从该特定压缩数据中去除了所述第一数据所包含的X比特后的部分的一部分或整体在内的第二数据,所述第二运算是如下运算:在M个N比特数据各自的地址值之中,针对以K个(K≤M)为1组的各组,对相同组内的任一个地址值实施了该第二运算都生成相同的结果值,并且生成与对其它任一组内的各地址值实施了该第二运算后生成的结果值不同的结果值。
根据该数据结构,当第二数据作为去除了第一数据所包含的X比特后的部分的整体时,能够从以该数据结构配置了各压缩数据的存储器中,不使用地址变换表地读取与处理器希望的N比特数据对应的压缩数据。
(h)此外,本发明的一实施方式的存储器,配置了以构成数据块的M个N比特数据各自为基础进行压缩后的M个小于N比特的各个压缩数据,该存储器具有:第一存储器区域和第二存储器区域,所述第一存储器区域是针对M个压缩数据之中数据长度在X比特(X<N)以下的各个一般压缩数据,配置有由该一般压缩数据整体和至少表示该一般压缩数据的数据长度在X比特以下的标志构成的L比特(X<L<N)以下的第一数据、且对成为该一般压缩数据的基础的N比特数据的所述数据块内地址值实施了第一运算的结果值所示的区域,并且是针对M个压缩数据之中数据长度大于X比特(X<N)的各个特定压缩数据,配置有由该特定压缩数据之中的X比特和至少表示该特定压缩数据的数据长度大于X比特的标志构成的L比特(X<L<N)的第一数据、且对成为该特定压缩数据的基础的N比特数据的所述数据块内地址值实施了第一运算后得到的结果值所示的区域,所述第二存储器区域是针对各个所述特定压缩数据,配置有包括从该特定压缩数据中去除了所述第一数据所包含的X比特后的部分的一部分或整体在内的第二数据、且对成为该特定压缩数据的基础的N比特数据的所述数据块内地址值实施了与所述第一运算不同的第二运算后得到的结果值所示的区域,所述第二运算是如下运算:在M个N比特数据各自的所述数据块内地址值之中,针对以K个(K≤M)为1组的各组,对相同组内的任一地址值实施了该第二运算都生成相同的结果值,并且生成与对其它任一组内的各地址值实施了该第二运算后生成的结果值不同的结果值。
此外,所述存储器可以作为ROM(ReadOnlyMemory)。
根据该存储器,当第二数据为去除了第一数据所包含的X比特后的部分的整体时,能够不使用地址变换表地读取与处理器希望的N比特数据对应的压缩数据。
(i)此外,本发明的一实施方式的访问装置,是对上述(h)所述的存储器进行访问的访问装置,具有:输入单元,其接收用于对处理器的1个N比特数据进行访问的地址值;第一确定单元,其对所述输入单元接收到的地址值实施第一运算,并确定该第一运算的结果值所示的、配置有由以所述1个N比特数据为基础进行压缩后的所述压缩数据的整体或X比特和至少表示该压缩数据是否大于X比特的标志构成的L比特以下的第一数据的所述存储器上的位置;第二确定单元,其当所述第一确定单元确定的所述存储器上的位置所配置的所述第一数据内的所述标志,表示所述压缩数据大于X比特时,对所述输入单元接收到的地址值实施与所述第一运算不同的第二运算,并确定该第二运算的结果值所示的、配置有包括从所述压缩数据中去除了所述第一数据所包含的X比特后的部分的一部分或整体在内的第二数据的所述存储器上的位置;和输出单元,其输出所述第一确定单元确定的所述存储器上的位置所配置的所述第一数据所包含的所述压缩数据的整体或X比特,并且在所述第二确定单元特定了所述存储器上的位置时,输出该存储器上的位置所配置的第二数据,所述第二运算是如下的运算:在M个N比特数据各自的所述数据块内地址值之中,针对以K个(K≤M)为1组的各组,对相同组内的任一地址值实施了该第二运算都生成相同的结果值,并且生成与对其它任一组内的各地址值实施了该第二运算后生成的结果值不同的结果值。
此外,本发明的一实施方式的存储器访问方法,是对上述(h)所述的存储器进行访问的访问装置中的存储器访问方法,包括:输入步骤,接收用于对处理器的1个N比特数据进行访问的地址值;第一确定步骤,对在所述输入步骤接收到的地址值实施第一运算,并确定该第一运算的结果值所示的、配置有由以所述1个N比特数据为基础进行压缩后的所述压缩数据的整体或X比特和至少表示该压缩数据是否大于X比特的标志构成的L比特以下的第一数据的所述存储器上的位置;第二确定步骤,当所述第一确定步骤中确定的所述存储器上的位置所配置的所述第一数据内的所述标志,表示所述压缩数据大于X比特时,对在所述输入步骤中接收到的地址值实施与所述第一运算不同的第二运算,并确定该第二运算的结果值所示的、配置有包括从所述压缩数据中去除了所述第一数据所包含的X比特后的部分的一部分或整体在内的第二数据的所述存储器上的位置;输出步骤,输出所述第一确定步骤中确定的所述存储器上的位置所配置的所述第一数据之中的整体或X比特,并且在所述第二确定步骤中确定了所述存储器上的位置时,输出该存储器上的位置所配置的第二数据,所述第二运算是如下运算:在M个N比特数据各自的所述数据块内地址值之中,针对以K个(K≤M)为1组的各组,对相同组内的任一地址值实施了该第二运算都生成相同的结果值,并且生成与对其它任一组内的各地址值实施了该第二运算后生成的结果值不同的结果值。
根据该访问装置以及存储器访问方法,当第二数据作为去除了第一数据所包含的X比特后的部分的整体时,能够不使用地址变换表地读取与处理器希望的N比特数据对应的压缩数据。
(j)此外,所述访问装置,还可以具有:展开单元,其对压缩数据进行展开,并将得到的N比特发送给所述处理器。
根据该访问装置,处理器能够获取对压缩数据进行展开后得到的希望的N比特数据。
产业上的利用可能性
本发明的配置决定装置,能在决定针对压缩数据的存储器配置时利用。
符号的说明:
10-ROM,
20-存储装置,
30-写入装置,
100、120、140-配置决定装置,
101-访问部,
102-压缩部,
110、130、150、210、230、250-控制部,
111、151-第一决定部,
112、131、152-第二决定部,
200、220、240-访问装置,
201-输入部,
202-读取部,
203-展开部,
211、251-第一确定部,
212、231、252-第二确定部,
213-输出部。