存储器地址生成装置以及具有它的处理器、存储器地址生成方法

文档序号:6558010阅读:128来源:国知局
专利名称:存储器地址生成装置以及具有它的处理器、存储器地址生成方法
技术领域
本发明涉及一种存储器地址生成装置以及具有它的处理器、存储器地址生成方法。
背景技术
微型计算机或DSP等进行信号处理的处理器,内置或外设在程序存储器或数据存储器等可访问的存储器中。处理器指定对这样的存储器进行访问的地址的方式,有直接地址指定方式、间接地址指定方式、相对地址指定方式、基底地址指定方式等。因此处理器具有应当实现这些地址指定方式,生成对存储器进行访问的地址的存储器地址生成装置(参照例如下述的专利文献1)。
但是,伴随着处理器所要求的处理的高度化或复杂化,对存储器所要求的应当保存的数据容量也年年增加。这种状况下,例如,处理器之一DSP(Digital Signal Processor),在实施伴随有乘法以及累加等的数字滤波运算(FIR(Finite Impulse Response)、IIR(Infinite Impulse Response)等),使用同一个乘法器以及加法器,并动态切换该数字滤波运算的滤波系数,实施多个处理。这种情况下,滤波系数中,混合有多个处理中成为公共内容的静态数据,或多个处理中成为不同内容的动态数据。因此,处理器将多个处理每一个的静态数据以及动态数据保存在存储器中,但此时虽然静态数据是各个处理中公共的内容,但也在存储器中保存有多份,因此变得冗长,从而成为使得存储器的使用容量增加的一个原因。
另外,例如在存储器是掩模ROM的情况下,该掩模ROM中所保存的程序,有可能在掩模ROM制造之后发现错误,或伴随着系统的规格变更而变更程序内容。这种情况下,由于是掩模ROM,因此用来调试或变更程序的掩模ROM的重写很困难,所以调试或变更前的程序,在保持原样的状态下存储在掩模ROM中。这同样也是增加存储器的使用容量的一个原因。
专利文献1特开平6-337812号公报。

发明内容
用来解决上述问题的本发明,主要是一种存储器地址生成装置,在这种设置在处理器中,对该处理器能够访问的存储器生成访问目标地址的存储器地址生成装置中,其特征在于具有地址变换电路,其在上述存储器所提供的地址空间中,设定了保存置换源数据的第1设定区域,与保存作为该置换源数据的置换对象的置换目标数据的第2设定区域之后,在上述处理器所指定的访问目标的上述存储器的指定地址,包括在上述第1设定区域的第1开头地址与末端地址之间的情况下,将上述指定地址,变更为给上述第2设定区域的第2开头地址,相加了上述指定地址与上述第1开头地址之间的差值之后所得到的置换目标地址;在上述指定地址包括在上述第1开头以及上述末端地址之间的情况下,将对应于上述指定地址的上述第1设定区域的上述置换源数据,置换成对应于上述置换目标地址的上述第2设定区域的上述置换目标数据。
通过本发明,能够提供一种能有效使用存储器容量的存储器地址生成装置以及具有它的处理器、存储器地址生成方法。


图1为说明本发明的一实施方式的相关处理器的全体构成的图。
图2为说明本发明的一实施方式的相关运算器的构成的图。
图3为说明本发明的一实施方式的相关存储器地址生成装置的构成的图。
图4为说明本发明的一实施方式的相关地址变换的图。
图5为说明本发明的一实施方式的相关地址变换的具体例子的图。
图6为说明本发明的一实施方式的相关地址变换的具体例子的图。
图7为说明本发明的一实施方式的相关MSB扩展的目的的图。
图8为说明本发明的一实施方式的相关MSB扩展的目的的图。
图中10-程序计数器,20-程序存储器,30-指令寄存器,40-指令解码器,50-地址生成电路,51-地址寄存器,52-地址运算器,60-地址变换电路,601-OLC寄存器,602-OLB寄存器,603-OLE寄存器,604-OLEN标志位寄存器,605、606-减法器,607-加法器,608-AND元件,609-选择电路,610-地址寄存器,611a、611b、611c-扩展位寄存器,612a、612b、612c-MSB扩展部,70-数据存储器,701、701a、701b、701c-通常访问区域,202、702-置换源区域,203、703、703a、703b-置换目标区域,100-运算器,101a、101b、101c-寄存器,102-乘法器,103-加法器,104-ACC,200-存储器地址生成装置。
具体实施例方式
<处理器的全体构成>
图1为说明本发明的相关“处理器”的全体构成例的图。另外,以下对处理器为DSP的情况进行说明,但也可以是其他微计算机或ASIC(Application Specific IC)等。另外,DSP是专门化为数字信号处理的微处理器,用在语音、通信、测量、视频、音频等广泛领域中的数字信号处理中。DSP安装有用来高速进行在数字信号处理中用的较多的积和运算的硬件积和运算器(MAC),特征在于,通过1个命令执行多个处理的并行处理,或将程序存储器与数据存储器分离的哈佛结构等。另外,DSP高速动作是其基础,因此一般内置而不是外设有能够高速访问的程序存储器或数据存储器。
图1所示的处理器,主要由程序计数器10、程序存储器20、指令寄存器30、指令解码器40、存储器地址生成装置200、数据存储器70、运算器100构成,此外还具有I/O端口与各种寄存器等(均未图示)。
程序计数器10,是对用来指定应当执行的程序的保存目标的程序地址依次进行设定的计数器。程序存储器20,一般由ROM(EEPROM等)构成,是存储程序的命令代码的存储器。指令寄存器30是暂存从程序存储器20所取出的命令代码的寄存器。指令解码器40是对存储在指令寄存器30中的命令代码进行解码的解码器。
存储地址生成装置200,是本发明的相关“存储器地址生成装置”的一实施方式。存储器地址生成装置200具有地址生成电路50与地址变换电路60,基本上生成表示对数据存储器70的访问目标地址。另外,在数据存储器70所提供的地址空间中,设有进行通常的访问的通常访问区域701、存储置换源数据的置换源区域702(“第1设定区域”)、以及存储作为置换源数据的置换对象的置换目标数据的置换目标区域703(第2设定区域)(参照图4)。
地址生成电路50,根据指令解码器40中的命令代码的解码结果,生成对数据存储器70的访问目标地址(以下称作指定地址)。该地址指定方式,可以采用直接地址指定方式、间接地址指定方式、相对地址指定方式、基底地址指定方式等。另外,本实施方式中,采用相对地址指定方式,地址生成电路50,在地址寄存器51中存储有表示数据存储器70的访问开始目标的循环开始地址,地址运算器52中,通过从地址寄存器51中所保存的循环开始地址通过循环运算增减给定的步长(step)值,来依次生成指定地址,但并不仅限于此。
地址变换电路60,是本发明的相关“地址变换电路”的一实施方式。地址变换电路60,在地址生成电路50中所生成的指定地址,处于赋予置换源区域702的开头位置的OLB(Overlay Begin)地址(“第1开头地址”)与赋予置换源区域702的末端位置的OLE(Overlay End)地址(“末端地址”)之间的情况下,将指定地址变更为置换目标地址,该置换目标地址通过给置换目标区域703的开头位置赋予的OLC(Overlay Convert begin)地址(“第2开头地址”),追加了指定地址与OLB地址之间的差而得到。这样,处理器根据该置换目标地址,从数据存储器70的置换目标区域703读出所指定的置换目标数据,通过这样,对应于指定地址的置换源区域702的置换源数据,结果是与对应于置换目标地址的置换目标区域703的置换目标数据置换。另外,在指定地址不处于赋予置换源区域702的第1开头地址与末端地址之间的情况下,不进行从指定地址到置换目标地址的变换,直接通过由处理器所指定的指定地址,进行对数据存储器70的通常访问区域701的访问。这样,能够有效使用数据存储器70所提供的存储容量。另外,例如在数据存储器70以区块单位或页单位等给定容量的数据块进行访问的情况下,能够在置换源数据中一起且高效置换相应的数据块。
数据存储器70,是存储用来进行基于在指令解码器40中所解码的命令代码的运算的数据的存储器。数据存储器70由ROM、RAM或其组合构成。如前所述,作为数据存储器70所提供的地址空间,设有通常访问区域701、置换源区域702、以及置换目标区域703。
运算器100,使用从数据存储器70所读出的数据,进行基于在指令解码器40中所解码的命令代码的运算(相乘、累加等)。这里,运算器100的内部构成,例如是实现如图2所示的数字滤波的基本运算的卷积运算的硬件。另外,卷积运算表示为“y(n)=Σh(k)x(n-k);且k=0~N-1”。
图2中,每当输入信号x(n-k)依次输入给寄存器101a、101b、…、101c时,将寄存器101a、101b、…、101c的分接头(タツプ)输出从最延迟的x(n-N+1)到x(n)依次切换,供给到乘法器102的一方输入端子。与此同步,将预先保存在数据存储器70中的滤波系数,从h(N-1)到h(0)依次供给到乘法器102的另一方输入端子。之后,乘法器102的乘法结果,依次供给到加法器103的一方输入端子。另外,加法器103的另一方输入端子中,被依次供给存储在ACC(Accumulator)104中的上次加法器103的累加结果。其结果是,加法器103的新累加结果依次保存到ACC104中。通过执行N次这样的动作,完成卷积运算。
<存储器地址生成装置的构成>
图3为说明存储器地址生成装置200的构成的图。
首先,数据存储器70的地址空间,设定有通过表示开头位置的OLB地址与表示末端位置的OLE地址所确定的置换源区域702,以及与置换源区域702同样容量且通过表示其开头位置的OLC地址所确定的置换目标区域703。另外,通过让置换源区域702与置换目标区域703相同容量,置换目标区域703能够只通过表示其开头位置的OLC地址来确定。因此,表示置换目标区域703的末端位置的地址,在本发明的相关地址变换构造中不需要,从而简化了地址变换电路60的构成。
另外,将数据存储器70的地址空间,设为被赋予了表示置换源区域702的开头位置的OLB地址更前的地址的通常访问区域701a、被赋予了从表示置换源区域702的末端位置的OLE地址到表示置换目标区域703的开头位置的OLC地址之间的地址的通常访问区域701b、以及被赋予了比表示置换目标区域703的末端位置的地址更后的地址的通常访问区域701c。另外,如后所述,置换源区域702与置换目标区域703可以重合,这种情况下,不设置通常访问区域701b。
地址生成电路50如前所述,生成指定数据存储器70的访问目标的指定地址。
地址变换电路60,如前所述,被设为将地址生成电路50中所生成的指定地址变换成置换目标地址并输出,或将地址生成电路50中所生成的指定地址直接输出。
OLC寄存器601(“第3地址寄存器”),是保存OLC地址的地址寄存器,OLB寄存器602(“第1地址寄存器”)是保存OLB地址的地址寄存器,OLE寄存器603(“第2地址寄存器”)是保存OLE地址的地址寄存器。这里,OLC寄存器601、OLB寄存器602、OLE寄存器603的内容,也即OLC地址、OLB地址以及OLE地址,能够由与DSP可通信连接的外部微处理器等,在适当的时刻(例如DSP的初始化时,或程序执行中等)自由重写。也即,数据存储器70的地址空间中,置换源区域702以及置换目标区域703的设定位置以及容量可以自由设定。其结果是,提高了本发明的相关地址变换的自由度。
OLEN(Overlay Enable)标志位寄存器(flag register)604(“使能标志位寄存器”),是保存用来设定是否进行本发明的相关地址变换,也即从置换源数据向置换目标数据的置换的使能标志位(1enable,0disable)的控制寄存器。OLEN标志位寄存器604的内容,也即使能标志位,也一样能够由与DSP可通信连接的外部微型计算机等,在适当的时刻自由重写。其结果是,能够在程序执行中的系数切换时或调试修正时等根据需要的时刻,实施本发明的相关地址变换。
减法器605(“第1减法器”),用来计算地址生成电路50中所生成的指定地址,与OLB寄存器602中所保存的OLB地址之间的差值(“第1差值”)“指定地址-OLB地址”。也即,表示基于该差值“指定地址-OLB地址”的正或负的符号位,是判断指定地址在OLB地址前还是后的因素。另外,该差值“指定地址-OLB地址”还成为用来生成置换目标地址的因素。
减法器606(“第2减法器”),用来计算OLE寄存器603中所保存的OLE地址,与地址生成电路50中所生成的指定地址之间的差值(“第2差值”)“OLE地址-指定地址”。也即,表示基于该差值“OLE地址-指定地址”的正或负的符号位,是判断指定地址在OLE地址前还是后的因素。
加法器607,进行OLC寄存器601中所保存的OLC地址,与减法器605的差值“指定地址-OLB地址”的相加,生成其相加结果“OLC地址+指定地址-OLB地址”作为置换目标地址。
选择电路609,用来根据AND元件608的输出,选择地址生成电路50中所生成的指定地址,或加法器607中所生成的置换目标地址中的任一方。这样,在将选择电路609中所选择的指定地址或置换目标地址暂存在地址寄存器610中之后,供给到数据存储器70。其结果是,数据存储器70,根据在选择电路609中所选择的指定地址或置换目标地址,来进行访问。
AND元件608是本发明的相关“选择控制电路”的一实施方式。AND元件608,根据减法器605的差值“指定地址-OLB地址”的符号位,与减法器606的差值“OLE地址-指定地址”的符号位,判断地址生成电路50中所生成的指定地址,是否处于OLB地址与OLE地址之间。详细地说,判断是以下三种组合中的哪一个。
1.指定地址比OLB地址前的情况减法器605的差值“指定地址-OLB地址”的符号位为负。
减法器606的差值“OLE地址-指定地址”的符号位为正。
2.指定地址位于OLB地址与OLE地址之间的情况减法器605的差值“指定地址-OLB地址”的符号位为正。
减法器606的差值“OLE地址-指定地址”的符号位为正。
3.指定地址比OLE地址后的情况减法器605的差值“指定地址-OLB地址”的符号位为正。
减法器606的差值“OLE地址-指定地址”的符号位为负。
因此,AND元件608,在减法器605、606的各个差值的符号位均为正(均为0)的情况下,判断指定地址位于OLB地址与OLE地址之间,控制选择电路609应当选择作为加法器607的加法结果的置换目标地址。另外,AND元件608,在减法器605、606的各个差值的符号位不都为正的情况下,判断指定地址不在OLB地址与OLE地址之间,控制选择电路609应当选择地址生成电路50中所生成的指定地址。
另外,AND元件608,根据OLEN标志位寄存器604中所保存的使能标志位,在该使能标志位表示进行本发明的相关地址变换,也即从置换源数据向置换目标数据的置换(1enable)的情况下,让选择电路609中的指定地址或置换目标地址的选择有效。另外,在使能标志位表示不进行本发明的相关地址变换,也即从置换源数据向置换目标数据的置换(0disable)的情况下,选择电路609中只让指定地址的选择有效。
存储器地址生成装置200,首先,通过上述构成实施图4中所示的访问。另外,图4的纸面左侧表示地址生成电路50中所生成的指定地址的位置(表面的访问点)。另外,图4的纸面右侧表示选择电路609中所选择的指定地址或置换目标地址的位置(实际的访问点)。
也即,如图4所示,在为比OLB地址前的指定地址A的情况下,直接通过该指定地址A对通常访问区域701a进行访问。另外,在为处于OLB地址与OLE地址之间的指定地址B的情况下,通过将指定地址B与OLB地址之间的差值与OLC地址相加所得到的置换目标地址,对置换目标区域703进行访问。另外,在为处于OLE地址与OLC地址之间的指定地址C的情况下,直接通过该指定地址C对通常访问区域701c进行访问。另外,在为处于OLC地址与(OLC地址+OLE地址-OLB地址)之间的指定地址D的情况下,直接通过该指定地址D对置换目标区域703进行访问。另外,在为(OLC地址+OLE地址-OLB地址)之后的指定地址E的情况下,直接通过该指定地址E对通常访问区域701c进行访问。通过这样的存储器地址生成装置200的构成,能够有效使用数据存储器70所提供的存储容量。
上述存储器地址生成装置200的构成,例如能够用于图5所示的动态数据置换的情况。这里,例如在DSP所实施的多个数字滤波处理中,使用在切换各个处理时由于是公共的内容,从而不需要进行变更的静态滤波系数(以下称作静态滤波系数),与切换各个处理时由于是不同的内容,因此需要进行变更的动态滤波系数(以下称作动态滤波系数)。
这种情况下,数据存储器70所提供的地址空间,只由ROM的地址空间构成,其结果是,置换源区域702与置换目标区域703,以及通常访问区域701,均设在ROM的地址空间内。这样,在通常访问区域701a中保存静态滤波系数,在置换源区域702中保存多个动态滤波系数中的代表性的动态滤波系数A,通过OLC地址B或OLC地址C所设定的置换源区域703a、703b中,分别保存多个动态滤波系数中除了有代表性的系数之外的动态滤波系数B、C。
这种情况下,DSP,在伴随着切换数字滤波处理而切换处理中所使用的动态滤波系数时,在指定地址处于表示置换源区域702的开头位置的OLB地址与表示末端位置的OLE地址之间的情况下,将保存在对应于指定地址的置换源区域702中的动态滤波系数A,置换成保存在对应于置换目标地址的置换目标区域703a、703b中的动态滤波系数B、C。通过这样,不需要对多个数字滤波处理的每一个保存静态滤波系数,从而能够有效使用数字存储器70所提供的存储容量。
另外,上述存储器地址生成装置200的构成,特别是地址变换电路60的构成,并不仅限于对数据存储器70的访问,还能够适用于对程序存储器20的访问。另外,这种情况下,能够通过在图1所示的程序计数器10与程序存储器20之间设置与地址变换电路60同样的结构来实施。
例如,如图6所示,程序存储器20所提供的地址空间,为将ROM所提供的地址空间与RAM所提供的地址空间合成而构成的情况。另外,为将置换源区域202设定在ROM的地址空间内,同时,将置换目标区域203设定在RAM的地址空间内的情况。进而,还是置换源区域202中所保存的置换源数据,为产生错误的区域的错误数据,置换目标区域203中所保存的置换目标数据,为修正了错误的错误修正数据的情况。
这种情况下,DSP在指定地址是位于表示保存错误数据的置换源区域202的开头位置的OLB地址与表示末端位置的OLE地址之间的情况下,将该指定地址变更为置换目标区域203的置换目标地址。DSP通过根据该置换目标地址对置换目标区域203进行访问,结果将置换源区域202的错误数据,置换成对应于置换目标地址的置换目标区域203的错误修正数据。这样,即使在需要重写ROM的程序内容,但ROM的重写困难的情况下,也不需要进行掩模变更或DSP的系统程序的修正,就能够高效使用程序存储器20所提供的存储容量。
<MSB扩展>
《不进行MSB扩展也不会出问题的情况》图7为数据存储器70的所有地址空间定义在从“0000h”到“FFFFh”的范围内的情况,另外,示出了在将OLB地址设为“1000h”,将OLE地址设为“2FFFh”,将OLC地址设为“8000h”的情况下,在各个地址中不扩展“1’b0”的MSB时,与进行“1’b0”的MSB扩展时的对数据存储器70的访问点的地址变换的状态。
另外,图7的纸面左侧,示出了地址生成电路50中所生成的指定地址的位置(表面上的访问点)。另外,图7的纸面中央,示出了各个地址中不进行“1’b0”的MSB扩展,在减法器605、606中进行了运算的情况下的置换目标地址的位置(实际的访问点)。另外,图7的纸面右侧,示出了各个地址中进行了“1’b0”的MSB扩展,在减法器605、606中进行了运算的情况下的置换目标地址的位置(实际的访问点)。
另外,由于OLB地址为“1000h”,OLE地址为“2FFFh”,因此置换源区域702为“2000h”的范围。另外,置换目标区域703是从OLC地址的“8000h”,到给其加上置换源区域702的范围“2000h”所得到的“9FFFh”的范围。因此,图7所示的例子,为置换源区域702以及置换目标区域703,相当于数据存储器70的全范围“FFFFh”的一半以下的情况。
===指定地址A(0800h)的情况===在地址生成电路50中所生成的指定地址为“0800h”(指定地址A)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“0800h”-“1000h”=“F800h”
(有MSB扩展)“00800h”-“01000h”=“1F800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“2FFFh”-“0800h”=“27FFh”(有MSB扩展)“02FFFh”-“00800h”=“027FFh”因此,减法器605的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“1(负)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为截止(close),让选择电路609选择指定地址A(0800h)。
===指定地址B(1800h)的情况===在地址生成电路50中所生成的指定地址为“1800h”(指定地址B)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“1800h”-“1000h”=“0800h”(有MSB扩展)“01800h”-“01000h”=“00800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“2FFFh”-“1800h”=“17FFh”(有MSB扩展)“02FFFh”-“01800h”=“017FFh”因此,减法器605的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为导通(open),让选择电路609选择作为加法器607的加法结果的置换目标地址B。另外,置换目标地址B变为如下所示的“8800h”。
加法器607的加法结果‘OLC地址+指定地址-OLB地址’“8000h”+“0800h”=“8800h”===指定地址C(5000h)的情况===在地址生成电路50中所生成的指定地址为“5000h”(指定地址C)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“5000h”-“1000h”=“4000h”(有MSB扩展)“05000h”-“01000h”=“04000h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“2FFFh”-“5000h”=“DFFFh”(有MSB扩展)“02FFFh”-“05000h”=“1DFFFh”因此,减法器605的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“1(负)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为截止,让选择电路609选择指定地址C(5000h)。
===指定地址D(9800h)的情况===在地址生成电路50中所生成的指定地址为“9800h”(指定地址D)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“9800h”-“1000h”=“8800h”(有MSB扩展)“09800h”-“01000h”=“08800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“2FFFh”-“9800h”=“97FFh”(有MSB扩展)“02FFFh”-“09800h”=“197FFh”因此,减法器605的差值MSB在无MSB扩展的情况下为“1(正)”,在有MSB扩展的情况下为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“1(负)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为截止,让选择电路609选择指定地址D(9800h)。
===指定地址E(C000h)的情况===在地址生成电路50中所生成的指定地址为“C000h”(指定地址E)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“C000h”-“1000h”=“B800h”(有MSB扩展)“0C000h”-“01000h”=“0B800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“2FFFh”-“C000h”=“6FFFh”(有MSB扩展)“02FFFh”-“0C000h”=“16FFFh”因此,减法器605的差值MSB在无MSB扩展的情况下为“1(正)”,在有MSB扩展的情况下为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下为“0(负)”,在有MSB扩展的情况下为“1(负)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均截止,让选择电路609选择指定地址E(C000h)。
这样,在置换源区域702以及置换目标区域703,相当于数据存储器70的全范围“FFFFh”的一半以下的情况下,在指定地址A~E的任一个情况下,OLB地址、OLE地址以及指定地址的各个地址中即使不扩展MSB,也不会发生问题,从而实施了本发明中所期望的地址变换。
《不进行MSB扩展会出问题的情况》图8为数据存储器70的所有地址空间定义在从“0000h”到“FFFFh”的范围内的情况,另外,示出了在将OLB地址设为“1000h”,将OLE地址设为“9FFFh”,将OLC地址设为“6000h”的情况下,在各个地址中不扩展“1’b0”的MSB时,与进行“1’b0”的MSB扩展时的对数据存储器70的访问点的地址变换的状态。
另外,图8的纸面左侧,示出了地址生成电路50中所生成的指定地址的位置(表面上的访问点)。另外,图8的纸面中央,示出了各个地址中不进行“1’b0”的MSB扩展,在减法器605、606中进行了运算的情况下的置换目标地址的位置(实际的访问点)。另外,图8的纸面右侧,示出了各个地址中进行了“1’b0”的MSB扩展置换之后,在减法器605、606中进行了运算的情况下的置换目标地址的位置(实际的访问点)。
另外,由于OLB地址为“1000h”,OLE地址为“9FFFh”,因此置换源区域702为“9000h”的范围。另外,置换目标区域703是从OLC地址的“6000h”,到给其加上置换源区域702的范围“9000h”所得到的“EFFFh”的范围。因此,图7所示的例子,为置换源区域702以及置换目标区域703,超过了数据存储器70的全范围“FFFFh”的一半的情况。
===指定地址F(0800h)的情况===在地址生成电路50中所生成的指定地址为“0800h”(指定地址F)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“0800h”-“1000h”=“F800h”(有MSB扩展)“00800h”-“01000h”=“1F800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“9FFFh”-“0800h”=“97FFh”(有MSB扩展)“09FFFh”-“00800h”=“097FFh”因此,减法器605的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“1(负)”。另外,减法器606的差值MSB在无MSB扩展的情况下为“1(正)”,在有MSB扩展的情况下为“0(正)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为截止,让选择电路609选择指定地址F(0800h)。
===指定地址G(1800h)的情况===在地址生成电路50中所生成的指定地址为“1800h”(指定地址G)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“1800h”-“1000h”=“0800h”(有MSB扩展)“01800h”-“01000h”=“00800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“9FFFh”-“1800h”=“87FFh”(有MSB扩展)“09FFFh”-“01800h”=“087FFh”因此,减法器605的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下为“1(正)”,在有MSB扩展的情况下为“0(正)”。其结果是,AND元件608在无MSB扩展的情况下截止,让选择电路609选择与本发明中所希望的地址不同的指定地址G(1800h)。另外,AND元件608在有MSB扩展的情况下均为导通,让选择电路609选择作为加法器607的加法结果同时也是本发明所希望的置换目标地址G。另外,置换目标地址G变为如下所示的“6800h”。
·加法器607的加法结果‘OLC地址+指定地址-OLB地址’“6000h”+“0800h”=“6800h”===指定地址H(3800h)的情况===在地址生成电路50中所生成的指定地址为“3800h”(指定地址H)的情况下,减法器605、606的各个差值,在无MSB扩展时与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“3800h”-“1000h”=“2800h”(有MSB扩展)“03800h”-“01000h”=“02800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“9FFFh”-“3800h”=“67FFh”(有MSB扩展)“09FFFh”-“03800h”=“067FFh”因此,减法器605的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为导通,让选择电路609选择作为加法器607的加法结果的置换目标地址H。另外,置换目标地址H变为如下所示的“8800h”。
·加法器607的加法结果‘OLC地址+指定地址-OLB地址’“6000h”+“2800h”=“8800h”===指定地址I(6800h)的情况===在地址生成电路50中所生成的指定地址为“6800h”(指定地址I)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“6800h”-“1000h”=“5800h”(有MSB扩展)“06800h”-“01000h”=“05800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“9FFFh”-“6800h”=“37FFh”(有MSB扩展)“09FFFh”-“06800h”=“037FFh”因此,减法器605的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为导通,让选择电路609选择作为加法器607的加法结果的置换目标地址I。另外,置换目标地址I变为如下所示的“B800h”。
·加法器607的加法结果‘OLC地址+指定地址-OLB地址’“6000h”+“5800h”=“B800h”===指定地址J(7800h)的情况===在地址生成电路50中所生成的指定地址为“7800h”(指定地址J)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“7800h”-“1000h”=“6800h”(有MSB扩展)“07800h”-“01000h”=“06800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“9FFFh”-“7800h”=“27FFh”(有MSB扩展)“09FFFh”-“07800h”=“027FFh”因此,减法器605的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为导通,让选择电路609选择作为加法器607的加法结果的置换目标地址J。另外,置换目标地址J变为如下所示的“C800h”。
·加法器607的加法结果‘OLC地址+指定地址-OLB地址’“6000h”+“6800h”=“C800h”===指定地址K(9800h)的情况===在地址生成电路50中所生成的指定地址为“9800h”(指定地址K)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“9800h”-“1000h”=“8800h”(有MSB扩展)“09800h”-“01000h”=“08800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“9FFFh”-“9800h”=“07FFh”(有MSB扩展)“09FFFh”-“09800h”=“007FFh”因此,减法器605的差值MSB在无MSB扩展的情况下为“1(正)”,在有MSB扩展的情况下为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“0(正)”。其结果是,AND元件608在无MSB扩展的情况下截止,让选择电路609选择与本发明所期望的地址不同的指定地址K(9800h)。另外,AND元件608在有MSB扩展的情况下为导通,让选择电路609选择作为加法器607的加法结果且为本发明所期望的置换目标地址K。另外,置换目标地址K变为如下所示的“E800h”。
·加法器607的加法结果‘OLC地址+指定地址-OLB地址’“6000h”+“8800h”=“E800h”===指定地址L(0800h)的情况===在地址生成电路50中所生成的指定地址为“A800h”(指定地址L)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“A800h”-“1000h”=“9800h”(有MSB扩展)“0A800h”-“01000h”=“09800h”减法器606的差值‘OLE地址-指定地址’
(无MSB扩展)“9FFFh”-“A800h”=“F7FFh”(有MSB扩展)“09FFFh”-“0A800h”=“1F7FFh”因此,减法器605的差值MSB在无MSB扩展的情况下为“1(正)”,在有MSB扩展的情况下为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“1(负)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为截止,让选择电路609选择指定地址L(A800h)。
===指定地址M(E800h)的情况===在地址生成电路50中所生成的指定地址为“E800h”(指定地址M)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“E800h”-“1000h”=“D800h”(有MSB扩展)“0E800h”-“01000h”=“0D800h”减法器606的差值‘OLE地址-指定地址’(无MSB扩展)“9FFFh”-“E800h”=“B7FFh”(有MSB扩展)“09FFFh”-“0E800h”=“1B7FFh”因此,减法器605的差值MSB在无MSB扩展的情况下为“1(正)”,在有MSB扩展的情况下为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“1(负)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为截止,让选择电路609选择指定地址M(E800h)。
===指定地址N(F800h)的情况===在地址生成电路50中所生成的指定地址为“F800h”(指定地址N)的情况下,减法器605、606的各个差值,在无MSB扩展与有MSB扩展时分别如下所示。
减法器605的差值‘指定地址-OLB地址’(无MSB扩展)“F800h”-“1000h”=“E800h”(有MSB扩展)“0F800h”-“01000h”=“0E800h”减法器606的差值‘OLE地址-指定地址’
(无MSB扩展)“9FFFh”-“F800h”=“A7FFh”(有MSB扩展)“09FFFh”-“0F800h”=“0A7FFh”因此,减法器605的差值MSB在无MSB扩展的情况下为“1(正)”,在有MSB扩展的情况下为“0(正)”。另外,减法器606的差值MSB在无MSB扩展的情况下与有MSB扩展的情况下均为“1(负)”。其结果是,AND元件608在无MSB扩展的情况与有MSB扩展的情况下均为截止,让选择电路609选择指定地址N(F800h)。
这样,在置换源区域702以及置换目标区域703,超过了数据存储器70的全范围“FFFFh”的一半的情况下,如果OLB地址、OLE地址以及指定地址的各个地址中不扩展MSB,则有可能无法实施本发明所期望的地址变换。例如,如前所述,在指定地址G(1800h)或指定地址K(9800h)的情况下,存在虽然应当变换成置换目标地址G(6800h)或置换目标地址K(E800h),但并没有进行这样的变换,直接通过指定地址G(1800h)或指定地址K(9800)对数据存储器70进行访问这一问题。因此,OLB地址、OLE地址以及指定地址的各个地址中,需要扩展1’b0的MSB。
《地址变换电路的MSB扩展部》如前所述,在设在OLB地址与OLE地址之间的置换源区域702,比数据存储器70所提供的全区域的一半大的情况下,不实施本发明中所期望的地址变换。因此,在图3所示的地址变换电路60中设有扩展位寄存器611a~611c,与MSB扩展部612a~612c。
扩展位寄存器611a~611c,是存储1’b0(1位的‘0’)的寄存器。
MSB扩展部612a(“第1MSB扩展部”),是在地址生成电路50中所生成的N位的指定地址的MSB(最高位)中,追加扩展位寄存器611a中所保存的1’b0。也即,将指定地址从N位扩展到“N+1”位。
MSB扩展部612b(“第2MSB扩展部”),是在OLB寄存器602中所保存的N位的OLB地址的MSB(最高位)中,追加扩展位寄存器611b中所保存的1’b0。也即,将OLB地址从N位扩展到“N+1”位。
MSB扩展部612c(“第3MSB扩展部”),是在OLE寄存器603中所保存的N位的OLE地址的MSB(最高位)中,追加扩展位寄存器611c中所保存的1’b0。也即,将OLE地址从N位扩展到“N+1”位。
这样,将指定地址、OLB地址、OLE地址分别从N位扩展到“N+1”位之后,减法器605计算出均扩展成“N+1”位的指定地址与OLB地址之间的差值‘指定地址-OLB地址’,减法器606计算出均扩展成“N+1”位的OLE地址与指定地址之间的差值‘OLE地址-指定地址’。因此,减法器605的差值‘指定地址-OLB地址’,与减法器606的差值‘OLE地址-指定地址’均为“N+1”位。
另外,加法器607,将OLC寄存器601中所保存的N位的OLC地址,与减法器605的“N+1位”差值‘指定地址-OLB地址’中除了MSB之外的N位相加。因此,选择电路609选择位扩展前的N位的指定地址,或作为加法器607的加法结果的N位的置换目标地址。另外,AND元件608被输入减法器605、606的“N+1”位差值中的MSB,根据各个MSB判断指定地址是否包括在OLB地址与OLE地址之间。
通过设置这样的构成,能够可靠地实施本发明中所希望的地址变换。
以上,对本发明的例示的目前理想的实施例进行了详细说明,但本发明的概念还能够实施各种变更并使用,另外,附属的权利要求的范围,除了被现有技术所限定处之外,还包括各种变形例。
权利要求
1.一种存储器地址生成装置,设置在处理器中,对该处理器能够访问的存储器生成访问目标地址,具有地址变换电路,其在所述存储器所提供的地址空间中,设定了保存置换源数据的第1设定区域,与保存作为该置换源数据的置换对象的置换目标数据的第2设定区域之后,在所述处理器所指定的访问目标的所述存储器的指定地址,包括在所述第1设定区域的第1开头地址与末端地址之间的情况下,将所述指定地址,变更为给所述第2设定区域的第2开头地址,相加了所述指定地址与所述第1开头地址之间的差值之后所得到的置换目标地址,在所述指定地址包括在所述第1开头以及所述末端地址之间的情况下,将对应于所述指定地址的所述第1设定区域的所述置换源数据,置换成对应于所述置换目标地址的所述第2设定区域的所述置换目标数据。
2.如权利要求1所述的存储器地址生成装置,其特征在于所述第1设定区域与所述第2设定区域容量相同。
3.如权利要求1或2所述的存储器地址生成装置,其特征在于所述地址变换电路具有设定所述第1开头地址的第1地址寄存器;设定所述末端地址的第2地址寄存器;以及设定所述第2开头地址的第3地址寄存器。
4.如权利要求1~3中任一项所述的存储器地址生成装置,其特征在于所述地址变换电路具有第1减法器,其运算所述指定地址与所述第1开头地址之间的第1差值;第2减法器,其运算所述末端地址与所述指定地址之间的第2差值;加法器,其进行所述第2开头地址与所述第1差值之间的相加,生成所述置换目标地址;选择电路,其选择所述指定地址或所述置换目标地址;选择控制电路,其控制所述选择电路,根据所述第1差值与所述第2差值各自中的正或负的符号位,在判断为所述指定地址包括在所述第1开头地址与所述末端地址之间的情况下,选择所述置换目标地址,在判断为不包括在所述第1开头地址与所述末端地址之间的情况下,选择所述指定地址。
5.如权利要求4所述的存储器地址生成装置,其特征在于所述地址变换电路具有第1MSB扩展部,其追加1位的‘0’作为所述指定地址的MSB;第2MSB扩展部,其追加1位的‘0’作为所述第1开头地址的MSB;以及第3MSB扩展部,其追加1位的‘0’作为所述末端地址的MSB,所述第1减法器,运算追加了所述1位的‘0’的所述指定地址,与追加了所述1位的‘0’的所述第1开头地址之间的所述第1差值;所述第2减法器,运算追加了所述1位的‘0’的所述末端地址,与追加了所述1位的‘0’的所述指定地址之间的所述第2差值。
6.如权利要求4或5所述的存储器地址生成装置,其特征在于所述地址变换电路,具有使能标志位寄存器,保存有用来设定是否进行从所述置换源数据向所述置换目标数据的置换的使能标志位,所述选择控制电路,根据所述使能标志位寄存器中所保存的使能标志位,在该使能标志位表示进行所述置换的情况下,让所述选择电路中的所述指定地址或所述置换目标地址的选择有效,在该使能标志位表示不进行所述置换的情况下,在所述选择电路中只让所述指定地址的选择有效。
7.如权利要求1~6中任一项所述的存储器地址生成装置,其特征在于所述存储器所提供的地址空间,只由ROM的地址空间构成,所述第1设定区域以及所述第2设定区域,设定在所述ROM的地址空间内,在使用在多个处理中为分别相同的内容的静态数据,以及为分别不同内容的动态数据的情况下,所述第1设定区域中所保存的所述置换源数据,是所述多个动态数据中的代表数据,所述第2设定区域中所保存的所述置换目标数据,是所述代表数据以外的动态数据。
8.如权利要求1~6中任一项所述的存储器地址生成装置,其特征在于所述存储器所提供的地址空间,将ROM的地址空间以及RAM的地址空间合成起来构成,所述第1设定区域设定在所述ROM的地址空间内,同时,所述第2设定区域设定在所述RAM的地址空间内,所述第1设定区域中所保存的所述置换源数据,是产生了错误处的错误数据,所述第2设定区域中所保存的所述置换目标数据,是修正了所述错误的错误修正数据。
9.一种具有如权利要求1~8中任一项所述的存储器地址生成装置的处理器。
10.如权利要求9所述的处理器,其特征在于所述处理器是DSP(Digital Signal Processor),所述存储器是程序存储器或数据存储器。
11.一种存储器地址生成方法,是对处理器能够访问的存储器生成访问目标地址的存储器地址生成方法,在所述存储器所提供的地址空间中,设定保存置换源数据的第1设定区域,与保存置换该置换源数据的置换目标数据的第2设定区域,在所述处理器所指定的访问目标的所述存储器的指定地址,包括在所述第1设定区域的第1开头地址与末端地址之间的情况下,将所述指定地址,变更为给所述第2设定区域的第2开头地址,相加了所述指定地址与所述第1开头地址之间的差值之后所得到的置换目标地址,基于所述置换目标地址的访问,将对应于所述指定地址的所述第1设定区域的所述置换源数据,置换成对应于所述置换目标地址的所述第2设定区域的所述置换目标数据。
全文摘要
本发明的目的在于有效使用存储器的存储容量。涉及一种存储器地址生成装置,具有地址变换电路,其在存储器所提供的地址空间中,设定了保存置换源数据的第1设定区域,与保存作为该置换源数据的置换对象的置换目标数据的第2设定区域之后,在处理器所指定的访问目标的上述存储器的指定地址,包括在上述第1设定区域的第1开头地址与末端地址之间的情况下,将上述指定地址,变更为给上述第2设定区域的第2开头地址,相加了上述指定地址与上述第1开头地址之间的差值之后所得到的置换目标地址。
文档编号G06F12/10GK1848097SQ20061007323
公开日2006年10月18日 申请日期2006年4月5日 优先权日2005年4月11日
发明者黑田隆 申请人:三洋电机株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1