字节序不同的处理器间共享数据的数据共享装置和处理器的制作方法

文档序号:6393948阅读:144来源:国知局
专利名称:字节序不同的处理器间共享数据的数据共享装置和处理器的制作方法
技术领域
本发明涉及一种具有彼此不同的字节序(endian)的两个处理器与存储器的数据共享装置和其处理器,尤其是涉及处理器间的数据共享。
背景技术
在处理器的基本字长为2字节(16比特)以上的情况下,作为将2字节以上的数据存储在存储器中的字节顺序,有所谓大端字节序(big endian)与小端字节序(little endian)等两种方式。存储器按字节单位分配地址是因为基本字长为2字节以上。
首先说明大端字节序。
所谓大端字节序是在具有字节单位的地址的存储器中存储2字节以上数据时的字节列的排列顺序(字节次序)方式,指大端(big end)(即MSB(MostSignificant Bit)侧。此时,B不是Bit,应是Byte)的字节开始按存储器的地址升序存储的方式。但是,字节序不是比特列的排列顺序,而是字节列的排列顺序,字节内的比特的排列顺序不变。
图1表示大端字节序的说明图。如图所示,例如在以大端字节序将4字节数据“89ABCDEF”(16进制数,下面的“”内也一样)存储在地址100-103地址号码的存储器区域中的情况下,按100-103地址号码的顺序,存储为“89”、“AB”、“CD”、“EF”。
图2虽是与图1相同的实例,但表示将32比特作为基本字长时的存储图像(存储器数据)。存储器地址是字节单位,在基本字长中,下位地址(由地址下位2比特寻址的字节位置)从左开始顺序升序为“0”、“1”、“2”、“3”。将最上位字节“89”存储在0地址号码中。
这样,通过大端字节序,从MSB侧的字节开始按地址升序地存储在存储器中。
图3表示连接大端字节序CPU2与存储器3b的一般结构。另外,本说明书中将CPU也简称为处理器。
如图所示,CPU2的数据输入输出端子D[31:24]、D[23:16]、D[15:8]、D[7:0]分别通过数据总线连接于存储器3b的下位地址0、1、2、3上。由此,从MSB开始按存储器的地址升序存储字节数据。另外,在该图的存储器3b中,该图的结构例(structure sample)4表示由CPU2内的程序定义时的存储图像。LONG INTEGER w是基本字长(32比特)的字数据,从MSB开始顺序由w3、w2、w1、w0等4个字节构成。SHORT INTEGER x是半字的数据,从MSB开始顺序由x1、x0构成。SHORT INTEGER y也一样。CHAR a、b、c、d分别是字节数据。
下面说明小端字节序。
所谓小端字节序是指从小端部(big end)(即LSB(Least Significant Bit)侧)的字节开始按存储器的地址升序存储的方式。
图4表示小端字节序的说明图。该图是与图1相同的数据例,32比特数据“89ABCDEF”按100-103地址号码的顺序,存储为“EF”、“CD”、“AB”、“89”。
图5表示对与图4相同的实例将32比特设为基本字长的存储图像(memory image)。与图2相比,下位地址的排列相反,从右开始顺序变为“0”、“1”、“2”、“3”。
图6表示连接小端字节序CPU1与存储器3a的一般结构。如图所示,CPU1的数据输入输出端子D[7:0]、D[15:8]、D[23:16]、D[31:24]分别通过数据总线连接于存储器3a的下位地址0、1、2、3上。由此,从LSB的字节开始按存储器的地址升序存储字节数据。另外,在该图的存储器3a中,与图3相同的结构例(structure sample)4表示由CPU1内的程序定义时的存储图像。与图3的存储图像相比,字节列相反。
这样,大端字节序、小端字节序是将2字节以上的数据存储在存储器中时的字节列的次序方式,顺序相反。
因为这种差异,所以在大端字节序CPU与小端字节序CPU混合存在的系统中,为了确保共享数据的同样性,需要有变换字节序的差异的结构。
专利文献1公开了一种具备字节序变换部的信息包通信装置,当在大端字节序CPU与小端字节序CPU之间进行信息包通信时,在大端字节序处理器中将信息包上的数据变换到小端字节序。
另外,专利文献2中公开了一种数据匹配(data align)装置,通过根据访问地址和访问尺寸变换存储数据,吸收数据的尺寸/匹配/字节序差异,进行存储器访问。
专利文献1特开平06-69978专利文献2特开2000-3304但是,在专利文献1、2公开的技术中,必需向具备字节序变换部的处理器附加特殊的硬件。另外,因为字节序变换引起延迟,所以妨碍存储器访问的高速化,在共享存储器数据的情况下,成为对其它存储器存取的高速化的障碍。
另外,通常通信由小端字节序的处理器处理,图像处理由大端字节序的处理器处理。近年来,便携电话具有了图像处理功能,小端字节序处理器与大端字节序处理器可连接于同一总线上。另外,需要能实时共享数据。

发明内容
本发明的目的在于提供一种在将大端字节序处理器与小端字节序处理器连接于总线上的情况下、由极简单的结构实现存储器数据共享的处理器及存储器共享装置。
为了实现上述目的,本发明的处理器,经数据总线连接于存储器上,其特征在于具备地址变换装置,在对幅度比数据总线小的数据访问存储器的情况下,变换地址的下位比特,以便指向使数据总线中的对应数据的位置逆转的位置,并输出到所述存储器,连接于所述数据总线,以便按与对应处理器的字节序相反的字节序的字节次序,与所述存储器之间传送数据。
根据该结构,就幅度与数据总线相同的数据而言,第1处理器和第2处理器都以相同的字节次序访问存储器,所以可以极简单的结构来实现幅度与数据总线相同的数据共享。另外,处理器通过地址变换装置,可就幅度比数据总线小的数据访问存储器。并且,因为可由基于地址变换装置的简单硬件构成,所以不构成存储器访问高速化的妨碍。
这里,最好构成为对于字节序与所述处理器(第1处理器)不同的其它处理器(第2处理器)之间通过所述存储器共享的结构数据,对于在所述其它处理器中执行的程序中的所述结构数据的定义,所述处理器执行在基本字长内由相反次序定义的比基本字长小的数据的程序。
根据该结构,在第1处理器与第2处理器之间,即使对幅度比数据总线小的数据也可经存储器来共享数据。例如,在数据总线幅度为32比特(4字节)的情况下,由于具备地址变换装置,从第1处理器见到的存储器的0地址号码与从第2处理器见到的存储器的3地址号码指向相同的存储器区域(同样,从第1处理器见到的存储器的1、2、3地址号码是从第2处理器见到的存储器的2、1、0地址号码)。并且,在第1处理器将结构数据定义为由B0、B1、B2、B3等4字节构成的情况下,第2处理器将结构数据定义为由B3、B2、B1、B0等4字节构成。针对定义为B0的字节数据B0,第1处理器访问0地址号码,第2处理器访问3地址号码。由此,不仅在幅度与数据总线幅度相同的数据访问的情况下,即使在幅度小的数据访问的情况下,也可共享数据。
并且,最好所述处理器还具备按所述处理器的字节序的字节次序连接于数据总线上的高速缓冲存储器,所述处理器按幅度与数据总线相同的数据单位将数据从所述存储器读入到高速缓冲存储器中。
根据该结构,因为将幅度与数据总线相同的数据从存储器读入到高速缓冲存储器,所以可以极简单的结构来高速缓冲字节序不同的处理器的数据。此外,高速缓冲访问不需要地址变换,并且无论将某个数据放置在共享存储器中还是放置在高速缓冲存储器中,处理器都可通过相同的访问动作来访问数据。
另外,本发明的数据共享装置是具有字节序彼此不同的第1处理器及第2处理器、与存储器的数据共享装置,其特征在于第1处理器及第2处理器都按第1处理器的字节序的字节次序,经数据总线连接于所述存储器上。
根据该结构,就幅度与数据总线相同的数据而言,第1处理器和第2处理器都以相同的字节次序访问存储器,所以可以极简单的结构来实现对应数据的共享。
这里,所述数据共享装置最好还具备地址变换装置,在第2处理器存储器访问幅度比数据总线小的数据的情况下,变换地址的下位比特,以指向使数据总线中的对应数据的位置逆转的位置,并输出到所述存储器。
根据该结构,通过地址变换装置,第2处理器可就幅度比数据总线小的数据访问存储器。
这里,最好所述储器存储被第1处理器及第2处理器访问的结构数据,所述第1处理器执行定义所述结构数据的第1程序,所述第2处理器执行第2程序,该第2程序通过在基本字长内对所述结构数据以与第1程序相反的次序来定义幅度比基本字长小的数据。
根据该结构,在第1处理器与第2处理器之间,不仅对幅度与数据总线相同的数据,即使对幅度比数据总线小的数据,也可经存储器来共享数据。另外,可在字节序不同的处理器之间共享未高速缓冲的数据(未存储在高速缓冲存储器中的数据)。
这里,所述数据共享装置还具备控制基于直接存储器访问(DMA)的数据传送的传送装置,所述传送装置在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,在传送源与传送目的地使基本字长内的对应数据的顺序逆转。
根据该结构,可在字节序不同的传送源与传送目的地之间确保各自必需的数据排列顺序后进行DMA传送。另外,处理器在传送目的地也可通过半字单位及字节单位的访问来利用数据。
这里,所述传送装置具备变换部,在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,变换传送源及传送目的地之一的地址的下位比特,以便指向使数据总线中的对应数据的位置逆转的位置,并输出到所述存储器。
根据该结构,变换部仅变换地址的下位数比特,所以可通过极简单的结构来实现。
这里,具备按第2处理器的字节序的字节次序连接于数据总线上的高速缓冲存储器。
根据该结构,就幅度与数据总线相同的数据而言,将数据从存储器读入高速缓冲存储器,所以可由极简单的结构来高速缓冲字节序不同的第1处理器的数据。
另外,本发明的数据共享方法也与上述数据共享装置一样。
如上所述,根据本发明的数据处理装置,(A)通过将大端字节序的第2处理器按与小端字节序的第1处理器相同的字节次序连接于共享存储器上(参照图7的总线连接点42、43),小端字节序的第1处理器与大端字节序的第2处理器可通过字单位访问共享存储器30来共享数据。此外,可以按字单位从共享存储器高速缓冲到大端字节序处理器的高速缓冲存储器中。
另外,除(A)外,通过(B)地址变换,第2处理器未必能通过半字单位及字节单位的访问来共享数据,但可访问小端字节序用的存储器。
并且,除(A)、(B)外,(C)通过在第1处理器与第2处理器中,就应用程序内的结构定义,在基本字长内逆序定义比基本字长小的变量,不仅小端字节序的第1处理器与大端字节序的第2处理器中可以按字单位访问共享存储器,也可以按半字单位及字节单位来共享数据。
并且,除(A)、(B)外,(D)在DMA传送时,通过进行与(B)相同的地址变换,DMA传送字节序不同的数据,可在传送源与传送目的地进行基于半字单位及字节单位的访问的数据共享。


参照说明本发明一特定实施例的附图,本发明的上述和其它目的、优点、和特征将从下述描述中变得清楚。其中,图1表示大端字节序的说明图。
图2表示大端字节序的说明图。
图3表示连接大端字节序CPU与存储器的一般结构。
图4表示小端字节序的说明图。
图5表示小端字节序的说明图。
图6表示连接小端字节序CPU与存储器的一般结构。
图7是表示实施方式1中数据处理装置的结构框图。
图8是表示基于地址变换部21的地址变换的输入输出逻辑的说明图。
图9是第1处理器10和第2处理器20以字访问共享存储器30时的说明图。
图10中,图10A是第1处理器10和第2处理器20在相同地址以半字访问共享存储器30时的说明图。
图10B是第1处理器10和第2处理器20在不同地址以相同半字访问共享存储器30时的说明图。
图11中,图11A是第1处理器10和第2处理器20在相同地址以字节数据访问共享存储器30时的说明图。
图11B是第1处理器10和第2处理器20在不同地址以相同字节数据访问共享存储器30时的说明图。
图12是表示共享存储器30和高速缓冲存储器23的存储图像的图。
图13是通过结构定义来进行半字单位、字节单位的数据共享的说明图。
图14是表示结构的其它定义例的图。
图15是表示将源程序中的结构定义变为逆序的处理来作为编译预处理的图。
图16是表示本发明实施方式2的数据处理装置的结构框图。
图17是表示DMAC32的详细结构框图。
图18是表示基于地址变换部104的地址变换的输入输出逻辑的说明图。
图19A是表示基于DMAC32的DMA传送的状态的时间图的一例。
图19B是表示传送源存储器与传送目的地存储器的存储图像的图。
具体实施例方式
(实施方式1)图7是表示本实施方式中的数据处理装置的结构框图。如图所示,数据处理装置具备第1处理器10、第2处理器20、共享存储器30、地址变换部21、高速缓冲存储器23,这些部件经数据总线(图中的D总线)连接。
数据处理装置通过(A)以与小端字节序的第1处理器相同的字节次序将大端字节序的第2处理器20连接于共享存储器30、(B)第2处理器20的地址变换、(C)第1处理器10、第2处理器20各自的结构的定义方法这3点,以极简单的结构来实现基于存储器的数据共享。(A)及(B)是硬件结构,(C)是软件结构。
<A总线连接>
图7中,共享存储器30及高速缓冲存储器23中的3、2、1、0表示由下位地址(这里为地址的下位2比特)寻址的字节位置。
第1处理器10是小端字节序处理器,经总线连接点41、42连接于共享存储器30。该连接与小端字节序处理器的一般存储器连接方法(参照图6)相同,第1处理器10按小端字节序的字节次序连接于共享存储器30。即,第1处理器10中数据输入输出端子的小端部D[7:0]连接于共享存储器30的0地址号码,按存储器的地址升序,从小端部开始存储字节列。
第2处理器20是大端字节序处理器,通过总线连接点43、42连接于共享存储器30。该连接涉及上述(A)。即,该连接方法不是大端字节序处理器的一般存储器连接方法(参照图3),而是与小端字节序处理器的一般存储器连接方法(参照图6)相同。该连接中,第2处理器20的数据输入输出端子不是从大端部,而是从小端部的字节D[7:0]开始按共享存储器30的地址升序连接。换言之,通过总线连接点43、42,将第2处理器20的字节次序从大端字节序改换成小端字节序。
根据该连接,第1处理器10与第2处理器20可通过对共享存储器30的32比特数据(下面称为字)的访问来共享数据。另外,可以32比特单位将数据从共享存储器32高速缓冲(读入)到高速缓冲存储器23。其中,基于16比特数据(称为半字)、8比特数据(字节)的访问的数据共享只通过该连接不能实现。可结合上述(B)、(C)来实现。
共享存储器30中第1处理器的数据输入输出端子D[31:32]、D[24:16]、D[15:8]、D[7:0]对应于作为下位地址(地址的下位2比特(A1、A0))所指的字节位置的3、2、1、0地址号码。
<B地址变换>
地址变换部21变换第2处理器20的下位地址后输出到共享存储器30。该地址变换涉及上述(B),对于作为比基本字长的32比特小的数据,变换下位地址,以指向使基本字长内的相应数据位置逆转的位置。
图8是表示基于地址变换部21的地址变换的输入输出逻辑图。对地址变换部21的输入是[访问尺寸]、[变换前地址],都从第2处理器20输入。访问尺寸表示字访问、半字访问、字节访问之一。变换前地址是从地址总线最下位开始的2比特、即A1、A0。
地址变换部21的输出是变换后地址。变换后地址如图所示,地址变换部21在字访问的情况下,原样输出A1、A0(即无变换)。在半字访问的情况下,仅反转A1,而原样输出A0。在字节访问的情况下,将A1与A0都反转后输出。这里,就字访问、半字访问而言,第2处理器20不访问错误匹配的数据。
图9是第2处理器20访问字时的说明图。第2处理器20以字单位来访问时,可与第1处理器10共享共享存储器30的数据。此时,地址变换部21不进行地址变换。
图10A是第2处理器20访问半字时的说明图。在半字访问中,地址变换部21将变换前的下位地址0地址号码(A1、A0=0、0)变换为下位地址2地址号码(1、0),另外,将下位地址2地址号码(A1、A0=1、0)变换为下位地址0地址号码(0、0)。如图所示,若第2处理器20执行将半字“89AB”存储到存储器的0地址号码中的指令(movhw #89ABh,mem(0)),则如存储图像(存储器数据)4b那样,将“89AB”存储到2地址号码与3地址号码中。相反,若第1处理器10执行同样的指令,则如存储图像4a那样,将“89AB”存储到0地址号码与1地址号码中。
这样,在半字访问中,从第1处理器见到的共享存储器30的下位地址的0地址号码是从第2处理器20见到的共享存储器30的下位地址2地址号码,同样,从第1处理器见到的2地址号码是从第2处理器20见到的0地址号码。
图11A是第2处理器20字节访问时的说明图。在字节访问中,地址变换部21将例如变换前的下位地址0地址号码(A1、A0=0、0)变换为地址3地址号码(1、1),如图所示,若第2处理器20执行将字节“89”存储到存储器的0地址号码中的指令(movhw #89h,mem(0)),则如存储图像(memory image)5b那样,将“89”存储到3地址号码中。相反,若第1处理器10执行同样的指令,则如存储图像5a那样,将“89”存储到0地址号码中。
这样,在字节访问中,第2处理器20通过地址变换部21将下位地址0地址号码变换为3地址号码,将1地址号码变换为2地址号码,将2地址号码变换为1地址号码,将3地址号码变换为0地址号码。即,在字节访问中,从第1处理器10见到的共享存储器30的下位地址的0、1、2、3地址号码是从第2处理器20见到的共享存储器30的下位地址3、2、1、0地址号码。
但是,即使在上述(A)中加入(B)的地址变换,第2处理器20也不能实现经共享存储器30与第1处理器10之间以半字单位和字节单位共享数据。(B)的地址变换在第2处理器20伴随基于(A)的字节次序的改换、以半字和字节来访问上有意义。
即,若不具备地址变换部21,则尽管第2处理器20能以字单位访问共享存储器30,但不能以半字和字节单位来访问。例如,在图10A的实例中,共享存储器30的0、1地址号码如存储图像4a那样,是字的下位侧(图的右侧)半字,但第2处理器20向0、1地址号码、即字的上位侧的半字输出“89AB”。在该状态下,若假定不进行地址变换地将0地址号码指定给共享存储器30,则会在共享存储器30中未输入“89AB”的下位侧半字(0、1地址号码)中写入总线上的无效数据。
这样,(B)的地址变换在消除由(A)的字节次序改换产生的半字、字节访问的缺陷上有意义。另外,因为地址变换部21可由简单组合的电路实现,所以可忽视变换引起的下位地址输出的延迟。
另外,就半字、字节而言,如图10A、图11A所示,从第1处理器10见到的地址与从第2处理器20见到的地址不一致,所以可以认为不能共享半字单位、字节单位的数据。针对该不一致,例如图10B、图11B所示,第1处理器10和第2处理器20若对半字及字节的共享数据直接指定不一致的地址,则不仅字单位、即使是半字单位和字节单位也可共享。在本实施方式中,由上述(C)来实现这点。
高速缓冲存储器23经总线连接点44、通过一般的大端字节序处理器与存储器的连接方法(参照图3)与第2处理器20相连接。图7中,高速缓冲存储器23配备在第2处理器20外部,但也可在第2处理器20内部。高速缓冲存储器23可以按字单位来调整缓冲共享存储器30的数据。这依赖于上述(A)的改换字节次序的连接。
图12是表示共享存储器30和高速缓冲存储器23的存储图像的图。高速缓冲存储器23通过以字单位从共享存储器30高速缓冲数据,去除共享存储器30与下位地址的次序不同的点,保持相同的存储图像。但是,高速缓冲存储器23以半字单位、字节单位从共享存储器30进行高速缓冲不能仅由上述(A)的连接来实现。
<C结构定义>
图13是通过结构定义(上述(C))来进行半字单位、字节单位的数据共享的说明图。图中,根据结构10b那样定义的源程序生成第1处理器10执行的第1程序10a。另外,根据结构20b那样定义的源程序生成第2处理器20执行的第2程序20a。结构20b定义与结构10b一样的变量,但在基本字长的范围内逆序定义比基本字长小的变量的顺序。
例如,就16比特整数型的变量x,y而言,在结构10b中,定义为[SHORTINTEGER y,x;],在结构20b中,逆序定义为[SHORT INTEGER x,y;]。另外,就字符型变量a、b、c、d而言,在结构10b中,定义为[CHAR d、c、b、a;],在结构20b中,逆序定义为[CHAR a、b、c、d;]。这些结构由程序来记述,或由编译器逆序记述。
由此,通过在结构的定义中改换,可允许图10A、图11A所示的半字和字节访问中的地址的不一致。即,如图10B、图11B所示,在第1处理器10和第2处理器半字及字节访问应共享的相同变量的情况下,可指向不一致的地址。
如图13所示,由结构10b定义的共享存储器30的存储图像与由结构20b定义的存储图像一致。但是,从第2处理器20见到的半字、字节的下位地址与第1处理器10顺序相反(不一致)。例如,就变量a而言,从第1处理器10看是存储在下位地址3地址号码中,在第2处理器20内部为下位地址0地址号码。由此,即使通过字节访问也可共享变量a。
另外,变量y从第1处理器10看是存储在下位地址0、1地址号码中,在第2处理器20内部为下位地址2、3地址号码。由此,即使通过半字访问也可共享变量y。
另外,即使在高速缓冲存储器23中,若是定义为应共享的结构的数据,则不仅字单位、即使是半字单位和字节单位也可高速缓冲。
图14是表示结构的其它定义例的图。图中,就第1处理器10用的结构10c而言,通过没有最后的码的8比特变量[CHAR b2;]的定义,在基本字长内余8比特。因此,在结构20c中,插入比特长度与余数相同的空(dummy)字节数据[CHAR bDummy0;]。由此,在结构20c中,还包含8比特的余数地在基本字长内逆序定义。
图15是表示将源程序中的结构定义变为逆序的处理来作为编译预处理的图。
如图所示,预处理部100输入第1处理器10用的第1源程序与第2处理器20用的第2源程序,检测二者中的应共享的结构(S11),改换变量的顺序,使一个源程序中的基本字长内的变量顺序与另一源程序中的变量的顺序相反(S12)。此时,必要时插入图14所示的空字节数据或空半字。之后,由各自的编译器编译两个源程序。
由此,编码者不必挨个考虑应共享结构数据的顺序来编程,只要仅使应共享的变量名一致即可,所以可减小编程者的负担。
如上所述,根据本实施方式的数据处理装置,(A)通过将大端字节序的第2处理器20按与小端字节序的第1处理器10相同的字节次序连接于共享存储器30上(参照图7的总线连接点42、43),小端字节序的第1处理器10与大端字节序的第2处理器20可通过字单位访问共享存储器30来共享数据。此外,可以按字单位从小端字节序的共享存储器30高速缓冲到大端字节序处理器的高速缓冲存储器中。
另外,除(A)外,通过(B)地址变换部21,第2处理器20未必能通过半字单位及字节单位的访问来共享数据,但可访问小端字节序用的存储器。例如,对于由小端字节序连接的第1处理器10与共享存储器30,可通过将小端字节序的第2处理器20成为(A)(B)的简单结构,作为第2处理器20的存储器来访问。
并且,除(A)、(B)外,(C)通过在第1处理器10与第2处理器20中,就结构定义,在基本字长内逆序定义比基本字长小的变量,不仅小端字节序的第1处理器10与大端字节序的第2处理器20中可以按字单位访问共享存储器30,也可以按半字单位及字节单位来共享数据。
另外,上述实施方式中,说明第1处理器10为小端字节序、第2处理器20为大端字节序时的结构,但也可为相反的字节序。此时,从两个处理器开始,作为大端字节序来连接共享存储器30,地址变换部21可以是变换小端字节序处理器的地址的结构。
另外,在上述实施方式中,第1处理器10和第2处理器20将32比特设为基本字长,但也可以是64比特或128比特等其它的基本字长。此时,地址变换部21可以是变换表示基本字长内部的字节位置的下位地址的结构。
(实施方式2)在上述实施方式中,就通过上述(A)(B)来存储在共享存储器30中的数据而言,通过上述(C)来解决在从第1处理器10看时和从第2处理器20看时在半字地址及字节地址中产生一致的情况。在本实施方式中,说明不通过(C)而由DMA传送来解决该不一致的结构。
图16是表示本发明实施方式2的数据处理装置的结构框图。该图的数据处理装置与图7相比,不同之处在于新追加了SDRAM(Synchronous DynamicRandom Access Memory)31、DMAC(Direct Memory Access Controller)32、I/O(Input/Output device)33、I/O34。对于与图7相同的结构要素附加相同符号,所以省略说明,主要说明不同之处。
本数据处理装置配备在DVD记录器或数字播放接收机等AV(AudioVisual)设备中。此时,第2处理器20进行基于MPEG(Moving Picture ExpertGroup)的压缩动态图像数据的解码或编码等图像处理,第1处理器10进行图像处理装置整体的控制。共享存储器30用于第1处理器10与第2处理器20之间的各种数据的传递。
SDRAM31由第1处理器10和第2处理器20用作作业存储器,保持表示MPEG压缩动态图像的流数据、解码中的图象、解码后的参照图象、解码后的视频数据等。
DMAC32在DMA传送时,传送源数据与传送目的地数据是不同字节序的数据,在传送数据尺寸比字小的情况下,进行改换字节次序的地址变换。另外,DMA传送在存储器-存储器之间和存储器-I/O之间进行。这里,存储器是共享存储器30和SDRAM31,I/O是I/O33、I/O34等。
I/O33、34分别是8比特、16比特的I/O器件,例如,是将解码后的图象数据作为串行视频数据输出的视频输出部、输入解码后的视频数据并作为声音信号输出的音频输出部等。
图17是表示DMAC32的详细结构框图。如图所示,DMAC32具备第1地址计数器101、第2地址计数器102、终端计数器103、数据锁存部105和控制部106。
第1地址计数器101、第2地址计数器102分别保持传送源、传送目的地地址,并在每个传送时进行正计数或倒计数。两个地址计数器同传送源与传送目的地的对应也可相反。
终端计数器103在计数完应在脉冲传送时传送的数据数量时,通知控制部106并使DMA传送结束。
地址变换部104在传送源数据与传送目的地数据之间、或I/O33、34与存储器数据之间字节序不同且传送数据尺寸比字小的情况下,为了在传送源与传送目的地使基本字长内的对应数据的顺序逆转,变换从第1地址计数器101输出的传送源/传送目的地地址。
这里,所谓[字节序不同]是指访问传送源数据与传送目的地数据不同的字节序的处理器,或用于字节序不同的处理器和I/O。例如,是由第2处理器20加载/存储传送源数据、由第1处理器10加载/存储传送目的地数据的情况,或由第2处理器20存储传送源数据、传送目的地是从LSB侧顺序请求字节数据的I/O的情况等。
另外,因为由第2处理器加载存储的数据以小端字节序存储在存储器中,所以字单位的DMA可不通过基于地址变换部104的地址变换而原样进行DMA变换。但是,比字小的半字单位、字节单位的DMA如图10A、图11A所示,从第1处理器10见到的地址与从第2处理器20见到的地址不一致。因此,地址变换部104在传送源与传送目的地必需不同字节序的数据的情况下,为了更正半字单位和字节单位的地址的不一致而变换地址。
图18是表示基于地址变换部104的地址变换的输入输出逻辑的说明图。向地址变换部104的输入是[字节序][访问尺寸][变换前地址]。[字节序]从控制部106输入,表示传送源数据与传送目的地数据是相同字节序还是不同字节序。更正确地,是表示访问传送源数据的处理器与访问传送目的地数据的处理器是相同字节序还是不同字节序。另外,传送源、传送目的地之一是I/O,在该I/O必需的传送数据的字节次序(或半字的次序)是小端字节序的情况下,若访问传送源/传送目的地数据的处理器是第1处理器10,则字节序相同,若是第2处理器20,则字节序不同。[访问尺寸]从控制部106输入,指示字、半字、字节之一。[变换前地址]是从第1地址计数器101输入的地址的下位2比特。
如[变换后地址]所示,地址变换部104在字节序相同的情况下,无论是字传送、半字传送还是字节传送,都原样输出(不变换)变换前地址。另外,即使字节序不同,但是字传送的情况下,也原样输出(不变换)变换前地址。在字节序不同、为半字传送的情况下,仅反转A1后输出。在字节序不同、为字节传送的情况下,反转A1、A0的两比特后输出。
这样,图18中的字节序不同时的输入输出逻辑与图8所示的地址变换部21的输入输出逻辑相同,但重要的是通过地址变换部21对第2处理器20的半字地址及字节地址与第1处理器10不一致进行变换,更正不一致。
数据锁存部(latch)105在存储器-存储器间的DMA传送中暂时保持传送数据。
控制部106在内部具有第1处理器10或第2处理器20可访问的控制寄存器,根据控制寄存器的设定内容来控制DMAC32整体。控制寄存器保持传送源和传送目的地的开始地址(I/O的情况下为其地址或从控制部106输出的I/O选择信号的指定)、传送数据尺寸、传送源和传送目的地的字节序(访问第1处理器10的数据或访问第2处理器20的数据)等。
图19A是表示基于DMAC32的DMA传送的状态的时间图的一例。图中,源存储器(传送源存储器)例如是DSRAM31,目的存储器(传送目的地存储器)是共享存储器30。表示将SDRAM31的100地址号码以后由第2处理器存储的一定量的数据DMA传送到共享存储器30的900地址号码以后的情况的实例。另外,SA表示从第1地址计数器101经地址变换部104输出的源地址,SD表示从传送源存储器读出的半字的源数据,DA表示基于第2地址计数器102的目的地址,DD表示写入传送目的地存储器的半字的目的数据。
此时,第1地址计数器101将100地址号码作为开始地址,每次增加2,第2地址计数器102将900地址号码作为开始地址,每次增加2。地址变换部104在字节序不同的半字DMA传送中仅反转A1。结果,输出到地址总线的源地址SA 102、100、106、104、...,目的地址DA输出为900、902、904、906、...。由此,从小端部的半字开始传送传送源数据。
图19B是表示基于19A的DMA传送的传送源存储器与传送目的地存储器的存储图像的图。如图所示,将传送源存储器的下位地址0地址号码的半字传送到传送目的地存储器的下位地址2地址号码,将2地址号码的半字传送到0地址号码。
由此,由大端字节序的第2处理器20存储的传送源数据在经DMA传送后,在传送目的地存储器中可以以半字单位由第1处理器进行访问。这样,DMAC32更正图10A、图11A所示的地址不一致,进行DMA传送。可由第1处理器10以半字单位无地址不一致地访问传送后的数据。另外,若传送目的地的900地址号码为I/O34,则可通过DMA传送从LSB顺序提供半字。图19中,示出半字的DMA传送,但字节传送的情况也一样。
另外,在存储器-I/O之间的DMA传送的情况下,因为控制部106向I/O直接输出芯片选择信号,所以不经数据锁存部105,而将从存储器读出的数据直接(或反方向)传送到I/O。此时,例如也可以字节单位或半字单位将大端字节序的第2处理器20存储的数据从小端部传送到I/O。字节序相反的情况也一样。
如上所述,根据本实施方式的数据处理装置,即使是未定义为上述(C)结构数据的数据,由于在DMA传送时由地址变换部104更正由上述(A)(B)产生的半字地址及字节地址的不一致,所以传送后的数据可通过半字或字节单位的访问由其它处理器正确读出。另外,存储器-I/O之间的DMA传送也一样,可由地址变换部104更正半字地址和字节地址的不一致。I/O在从LSB侧需要数据的情况和从MSB侧需要数据的情况下都可通过DMAC32来传送必需的数据。
另外,地址变换部104也可变换从第2地址计数器102输出的地址,来代替变换从第1地址计数器101输出的地址。
另外,在图17所示的DMAC中,在半字或字节传送时通过地址变换对发送目的地数据改换半字或字节的排列,但也可以按字单位将传送源数据取入数据锁存部105中,在数据锁存部105改换半字或字节的排列,以字单位写入传送目的地存储器。
虽然参照附图以实施例来完整描述了本发明,但值得注意的是,对于本领域的技术人员而言,不同的改变和变更是显而易见的。因此,除非这样的改变或变更脱离了本发明的范围,否则认为它们被包含在其中。
权利要求
1.一种处理器,经数据总线连接于存储器上,其特征在于具备地址变换装置,在对幅度比数据总线小的数据访问存储器的情况下,变换地址的下位比特,以便指向使数据总线中的对应数据的位置逆转的位置,并输出到所述存储器,连接于所述数据总线,以便按与对应处理器的字节序相反的字节序的字节次序,与所述存储器之间传送数据。
2.根据权利要求1所述的处理器,其特征在于还具备按所述处理器的字节序的字节次序连接于数据总线上的高速缓冲存储器,所述处理器按幅度与数据总线相同的数据单位将数据从所述存储器读入到高速缓冲存储器中。
3.根据权利要求1所述的处理器,其特征在于就字节序与所述处理器不同的其它处理器之间经所述存储器应共享的结构数据而言,对于在所述其它处理器中执行的程序中的所述结构数据的定义,执行在基本字长内由相反次序定义的比基本字长小的数据的程序。
4.根据权利要求3所述的处理器,其特征在于还具备按所述处理器的字节序的字节次序连接于数据总线上的高速缓冲存储器,所述处理器按幅度与数据总线相同的数据单位将数据从所述存储器读入到高速缓冲存储器中。
5.一种数据共享装置,具有字节序彼此不同的第1处理器及第2处理器、与存储器,其特征在于第1处理器及第2处理器都按照第1处理器的字节序的字节次序,经数据总线连接于所述存储器上。
6.根据权利要求5所述的数据共享装置,其特征在于还具备地址变换装置,在第2处理器对幅度比数据总线小的数据进行存储器的访问的情况下,变换地址的下位比特,以便指向使数据总线中的对应数据的位置逆转的位置,并输出到所述存储器。
7.根据权利要求6所述的数据共享装置,其特征在于还具备传送装置,控制直接存储器访问中的数据传送;所述传送装置在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,在传送源与传送目的地使基本字长内的相应数据的顺序逆转。
8.根据权利要求7所述的数据共享装置,其特征在于所述传送装置具备变换部,在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,变换传送源及传送目的地之一的地址的下位比特,以便指向使数据总线中的相应数据的位置逆转的位置,并输出到所述存储器。
9.根据权利要求6所述的数据共享装置,其特征在于所述存储器存储被第1处理器及第2处理器访问的结构数据,所述第1处理器执行定义了所述结构数据的第1程序,所述第2处理器执行第2程序,该第2程序通过在基本字长内对所述结构数据以与第1程序相反的次序来定义幅度比基本字长小的数据。
10.根据权利要求9所述的数据共享装置,其特征在于还具备控制直接存储器访问中的数据传送的传送装置,所述传送装置在需要字节序在传送源与传送目的地不同的数据,并且在传送幅度比数据总线小的数据的情况下,使在传送源与传送目的地中基本字长内的相应数据的顺序逆转。
11.根据权利要求10所述的数据共享装置,其特征在于所述传送装置具有变换部,在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,变换传送源和传送目的地之一的地址的下位比特,以便指向使数据总线中的相应数据位置逆转的位置,并输出到所述存储器。
12.根据权利要求5所述的数据共享装置,其特征在于还具备按第2处理器的字节序的字节次序连接于数据总线上的高速缓冲存储器。
13.根据权利要求12所述的数据共享装置,其特征在于还具备地址变换装置,在第2处理器对幅度比数据总线小的数据进行存储器的访问的情况下,变换地址的下位比特,以便指向使数据总线中的相应数据的位置逆转的位置,并输出到所述存储器。
14.根据权利要求13所述的数据共享装置,其特征在于还具备控制直接存储器访问中的数据传送的传送装置,所述传送装置在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,使在传送源与传送目的地中基本字长内的对应数据的顺序逆转。
15.根据权利要求14所述的数据共享装置,其特征在于所述传送装置具有变换部,在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,变换传送源和传送目的地之一的地址的下位比特,以便指向使数据总线中的相应数据位置逆转的位置,并输出到所述存储器。
16.根据权利要求13所述的数据共享装置,其特征在于所述存储器存储被第1处理器及第2处理器访问的结构数据,所述第1处理器执行定义了所述结构数据的第1程序,所述第2处理器执行第2程序,该第2程序通过在基本字长内对所述结构数据以与第1程序相反的次序来定义幅度比基本字长小的数据。
17.根据权利要求16所述的数据共享装置,其特征在于还具备传送装置,控制直接存储器访问中的数据传送;所述传送装置在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,使在传送源与传送目的地中基本字长内的对应数据的顺序逆转。
18.根据权利要求17所述的数据共享装置,其特征在于所述传送装置具有变换部,在需要字节序在传送源与传送目的地不同的数据,并且传送幅度比数据总线小的数据的情况下,变换传送源和传送目的地之一的地址的下位比特,以便指向使数据总线中的相应数据位置逆转的位置,并输出到所述存储器。
19.一种数据处理装置的数据共享方法,该数据处理装置具有字节序彼此不同的第1处理器和第2处理器;和都按第1处理器的字节序的字节次序经数据总线连接第1处理器和第2处理器的存储器,其特征在于具有执行步骤,就应由所述存储器共享的结构数据而言,对于所述第1处理器的所述结构数据的定义,使第2处理器执行在基本字长内按相反次序定义比基本字长小的数据的程序;和变换步骤,在第2处理器对于幅度比数据总线小的数据访问存储器的情况下,变换地址的下位比特,以便指向使数据总线中的相应数据位置逆转的位置。
全文摘要
本发明提供一种在将大端字节序处理器与小端字节序处理器连接于总线上的情况下、由极简单的结构实现存储器数据共享的处理器及存储器共享装置。字节序不同的第1处理器(10)和第2处理器(20)均按第1处理器10的字节序的字节次序,经数据总线连接于所述存储器。地址变换部(21)在第2处理器(20)对幅度比数据总线小的数据访问共享存储器的情况下,变换地址的下位比特,以指向使数据总线中的相应数据位置逆转的位置,并输出到所述存储器。
文档编号G06F12/04GK1532722SQ20041003004
公开日2004年9月29日 申请日期2004年3月18日 优先权日2003年3月19日
发明者舟桥和年, 井川智, 永安胜 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1