CN1306416C - 防冲突储存装置以及采用该装置的地址运算与数据选路方法 - Google Patents

防冲突储存装置以及采用该装置的地址运算与数据选路方法 Download PDF

Info

Publication number
CN1306416C
CN1306416C CNB01132936XA CN01132936A CN1306416C CN 1306416 C CN1306416 C CN 1306416C CN B01132936X A CNB01132936X A CN B01132936XA CN 01132936 A CN01132936 A CN 01132936A CN 1306416 C CN1306416 C CN 1306416C
Authority
CN
China
Prior art keywords
address
data
access
storage module
linear
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.)
Expired - Fee Related
Application number
CNB01132936XA
Other languages
English (en)
Other versions
CN1402136A (zh
Inventor
朴宗元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CN1402136A publication Critical patent/CN1402136A/zh
Application granted granted Critical
Publication of CN1306416C publication Critical patent/CN1306416C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

一种支持对pq个数据要素同时存取以缩短储存装置存取时间的防冲突储存装置以及采用该装置的地址运算与数据选路方法,该pq个数据要素是指在具有pq个处理部件的SIMD处理器中的M×N阵内数据,其始于任意位置、具一定间隔、呈4方向块(pq)和8方向线性形态。同已有储存装置相比在数据存取形态、间隔、数据阵大小限制、硬件造价、速度以及复杂性方面有很大改进。

Description

防冲突储存装置以及采用该装置的地址运算与数据选路方法
技术领域
本发明涉及储存装置,特别是涉及支持对pq个数据要素同时存取(access)以缩短储存装置存取时间的防冲突储存装置,该pq个数据要素是指在具有pq个PE(processing element;处理部件)的SIMD处理器中的M×N阵内数据,其始于任意位置、具一定间隔、呈4方向块(pq)和8方向线性形态。
背景技术
实际应用中,如图1所示,在具有主存储装置的计算机中都安装有由普通控制装置构成的单一指令多数据(SIMD)处理器、储存有SIMD指令程序的共用储存模块、以及多个具防冲突储存装置的PE(处理部件)。
所适于应用的领域包括:图像处理运算(M.J.B.Duff,Computingstructures for image processing,Academic Press,1983.,J.L.Potter,IEEEComputer,vol.16,No.1,pp.62-67,Jan.1983.,K.Preston,Jr.,IEEEComputer,vol.16,No.1,pp.36-47,Jan.1983.,T.J.Fountain,K.N.Matthews,and M.J.B.Duff,IEEE Trans.PAMI,vol.10,No.3,pp.310-319,May 1988.,H.S.Wallace and M.D.Howard,IEEE Trans.PAMI,vol.11,No.3,pp.227-232,Mar.1989.,L.A.Schmitt and S.S.Wilson,IEEETrans.PAMI,vol.10,No.3,pp.320-330,May 1988.,V.Dixit and D.I.Moldovan,IEEE Trans.PAMI,vol.9,No.1,pp.153-160,Jan.1987.,L.Uhr,Parallel computer vision,Academic press,1987.,A.Rosenfeld,Multiresolutionimage processing and analysis,Springer-Verlag,1984.,G.Y.Kim,Parallelmemory architectures for image processing and wavelet-based video coding,Ph.D.thesis,Korea Advanced Institute of Science and Technology,1999.,G.A.Baxes,Digital image processing,Prentice-Hall,1984.,H.E.Burdick,Digital imaging,McGraw-Hill,1997.)、双方向合并排列(E.Horowitz and S.Sahni,Data structuresin pascal,Computer Science Press,1984.)、连续二维高速傅里叶变换(J.W.Cooley,P. A.W.Lewis,and P.D.Welch,IEEE Trans.Educ.,vol.E-12,No.1,pp.27-34,1969.,D.T. Harper III and D.A.Linebarger,″Storageschemes for efficient computation of a radix 2 FFT in a machine with parallelmemories,″in Proc.1988 Int.Conf.Parallel Processing,1988)、递归加倍(recursive doubling)(H.S.Stone,High-performance computer architecture,Addison Wesley,1993.)、基本行列运算(D.J.Kuck and R.A.Strokes,IEEETrans.Comput.vol.C-31,pp.362-376,May 1982.),等等。为了适于在这些领域中使用,按数据存取形态、基准坐标、数据间隔从防冲突储存装置中检索数据,向SIMD计算机控制装置发送分配该数据给PE的指令,然后,在控制装置对各种数据施以同一方式运算。为了提高SIMD处理装置的效率,要求储存装置满足以下要求。
1.多种子阵存取形式和间隔:储存装置必须支持对间隔为非0正整数数据以多种形态同时存取。
2.无位置限制的同时存取:无论数据处于阵内何处都必须可以同时存取。
3.简单而快速的地址运算与选路电路:地址运算与选路(routing)必须要简单快速。
4.简单而快速的选路电路:数据选路必须要简单快速。
5.无负荷PE:地址运算与选路、数据选路不得给PE施加负荷,要在储存装置内实行。故此,在PE与储存装置的接口处有数据寄存器。
6.储存模块要少:储存装置的模块数同PE数相同或略大,要尽可能减少。
长期以来,提高具有多重储存模块(memory module)的储存装置之效率一直是人们研究的课题。其中,有人提出当有连续请求存取储存装置时对各个模块的储存装置存取时间加以重复的方案(D.T.Harper III,IEEE Trans.ParallelDistrib.Syst.,vol.2,pp.43-51,Jan.1991.,D.T.Harper III,IEEE Trans.Comput.,vol.C-41,pp.227-230,Feb.1992)。但是,这并不适合上述SIMD处理器。
SIMD处理器所用的储存装置采用交错存取。假设储存装置的储存模块数为m,则地址a处于(a mod m)储存模块中。其中,mod表示模运算。由于交错存取方式的储存模块数目同SIMD处理器的PE数一样、可以简单地实现地址运算和数据选路,故多数SIMD处理器采用这一方式。然而,这一交错存取方式由于不支持同时存取以一定间隔关联的各种子阵存取形态数据,故会在储存模块产生冲突,使得性能降低(W.Oed and O.Lange,IEEE Trans.Comput.,vol.C-34,pp.949-957,Oct.1985.,D.Baily,IEEE Trans.Comput.,vol.C-36,pp.293-298,Mar.1987.)。
另外,也有人提出了关于改善交错存取储存装置综合性能的方案。但对于SIMD处理器来说并无多大用处。这是由于若在储存装置出现请求同一模块的冲突时SIMD处理器中所有PE运算都必须延迟。
关于存取方式,有许多人在非线性方式方面作了研究。几乎所有非线性斜线方式都是基于最初由Batcher(K.Batcher,IEEE Trans.Comput.,vol.26,no.1,pp.174-177,1977)提出的比特运算XOR的。Frailong进一步具体化的XOR方式是以数据地址点倍数与行列之变形运算存储位置。按XOR方式,储存模块数为2的乘幂,数据的地址运算和选路比较简单。然而,根据这一方式,数据的子阵存取方式、数据间隔、数据位置都受到限制。
还有一种目前储存装置所采用存取方式是线性斜线方式。
处于行列(i,j)的数据放置在(ai+bj)mod(m)的储存模块里。在此,a,b为常数,m为储存模块数。线性斜线方式最初由Budnik & Kuck提出(P.Budnikand D.J.Kuck,IEEE Trans.Comput.,vol.C-20,pp.1566-1569,Dec.1971.])。后来,Shapiro(H.Shapiro,IEEE Trans.Comput.,vol.C-27,no.5,421-428,May 1978.)和Wijshoff及Van Leeuwen(H.Wijshoff and J.VanLeeuwen,IEEE Trans.Comput.,vol.C-34,no.6,pp.501-505,June 1985.,H.Wijshoff and J.Van Leeuwen,IEEE Trans.Comput.,vol.C-36,no.2,pp.233-239,Feb.1987.)提等又对其特性作了研究。以后,Budnik,Kuck,Shapiro,Wijshoff,Van Leeuwen,Lawrie等又进一步证明:若有一些储存模块比数据数大且为素数的话,就可以在按块(block)、行、列、对角线、反对角线存取形态的子阵内同时无冲突地存取各个数据(D.H.Lawrie,IEEE Trans.Comput.,vol.C-24,no.12,pp.1145-1155,Dec.1975.)。然而,线性斜线方式的缺点在于,在地址运算、地址选路以及数据选路场合,当同时运算m个储存模块地址时,过于复杂、速度慢。若要避开耗费时间的模块(m)运算,譬如,数据数为2的乘幂时,储存模块数就必须要达到数据数的2倍才可以同时存取。
表1a和表1b所示为:在线性斜线方式下实现了上述要求1至6的SIMD处理器的存储技术、线性有无、选路方式、子阵存取方式、间隔、硬件表现、同时性、存取位置、PE负荷、以及已有储存装置和本发明储存装置的储存模块数。
对SIMD处理器,还要求其在图像处理中减少整个储存装置存取时间,为此,要可以同时存取块、行、列、对角线、反对角线形态的多个图像点(G.Y.Kim,Parallel memory architectures for image processing and wavelet-based video coding,Ph.D.thesis,Korea Advanced Institute of Science and Technology,1999.)。为了进行图像点的算术运算和逻辑运算,在分配各个PE时,必须要保证可以对数字图像处理(G.A.Baxes,Digital image processing,Prentice-Hall,1984.)、块、列、行存取形态的各个图像点进行并行运算。故在Wavelet变换(K.R.Castleman,Digital image processing,Prentice-Hall,1996.,S.Mallat,IEEE Trans.PAMI,vol.11,No.7,pp.674-693,July 1989.)中要求储存装置可存取列、行存取形态的图像点。由于要在2n2×2n2个PE中进行大小为2n1×2n1的图像边缘检索,卷积和低频滤波器(G.A.Baxes,Digital image processing,Prentice-Hall,1984.,H.E.Burdick,Digital imaging,McGraw-Hill,1997.,J.R.Parker,Algorithms for ImageProcessing and Computer Vision,John Wiley & Sons,1997.,D.H.Ballard and C.M.Brown,Computer Vision,Prentice-Hall,1982.,J.S.Lim,Two-dimensionalsignal and image processing,Prentice-Hall,1990.)这种存取运算,各个PE必须要分配一个3×3或4×4块,也就是说,储存装置存取时要对间隔为3或4、共2n2×2n2个块进行存取。那么,图像大小为2n2×2n2个、PE有2n2×2n2个下进行8×8DCT(离散余弦转换)(K.R.Rao and P.Yip,Discrete CosineTransform,Academic Press,1990.)处理时,各个PE就必须要分配8×8模块,储存装置存取时要对间隔为8、共2n2×2n2个块进行存取。还有,在动态估计(J.S.Lim,Two-dimensional signal and image processing,Prentice-Hall,1990.)时,为了对16×16块的参考图像与16×16块的以前图像作快速比较,在储存装置存取时要对1,2,4间隔的块进行存取。在采用2×2、3×3部分抽样方法的连续传送(W.Y.Kim,P.T.Balsara,D.T.Harper,and J.W.Park,IEEE Trans.Circuits and Systems for Video Technology,vol.5,No.1,pp.1-13,Feb.1995.)中,为了缩短储存装置存取时间,要可以对间隔为2l、3l(l为整数)的块形态数据同时进行存取。
另外,在压缩、文字分析以及动态分析等采用高斯棱锥(A.Rosenfeld,Multiresolution image processing and analysis,Springer-Verlag,1984.,P.J.Burt,Comput.Vision,Graphics,Image processing 16,pp.20-51,1981.,P.J.Burt,Comput.Vision,Graphics,Image processing 21,pp.368-382,1983.)以及分层离散相关窗口函数(Hierarchical Discrete Correlation window Function)可以迅速实现。为了递归且直接运算K水平,必须要分配整个水平的全节点值和0水平的所有第2个节点值给SIMD处理器的各个PE。在此,防冲突储存装置对高斯棱锥生成(J.W.Park and D.T. Harper III,IEEE Symp.Parallel and DistributedProcessing,pp.444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEETrans.Parallel Distrib.Syst..,vol.7,No.8,pp.855-860,Aug.1996.)可以缩短整个储存装置存取时间,可支持在任意位置存取间隔为2l(l>=0)的块以及行形态的图像点。当在一列中节点数少于PE数的水平时,同时存取块形态图像比起同时存取行形态图像的效果要好。还有,当需要让部分图像快速90度旋转或图像反射时,就要求储存装置可以存取4方向块存取形态图像点(后述)。而当需要让部分图像快速45或5度旋转(J.W.Park,″Efficient image analysisand processing memory system,Korea patent 58542,1993;Efficient image analysis andprocessing memory system,Japan Patent 2884815,2000.,J.W.Park,S.R.Maeng,and J.W.Cho,Int.J.of High Speed Computing,vol.2,No.4,pp.375-385,Dec.1990.)时,就要求储存装置可以存取8方向线性图像点。
为了双方向合并算法、连续增加FFT算法、递归增加算法、行列、信号处理等,储存装置要可以同时存取行、列、对角线、反对角线存取形态的各个数据,故要求SIMD处理器可缩短整个储存装置存取时间。
双方向合并排列一开始是输入n个数据文件,这些文件长度皆为1且已作排列。然后,把这n个数据文件合并成大小为2的n/2个文件。之后,再次对这n/2个文件进行合并,以此类推,直到最后合并成一个文件。为了实行这一快速的双方向合并排列算法,SIMD处理器需要储存装置能存取间隔为2l(l>0)的行形态数据。
在SIMD处理器实行连续增加FFT算法(J.W.Cooley,P. A.W.Lewis,and P.D.Welch,IEEE Trans.Educ.,vol.E-12,No.1,pp.27-34,1969.,D.T. Harper II and D.A.Linebarger,in Proc.1988 Int.Conf.ParallelProcessing,1988.)时,若储存装置能存取间隔为2l(l>0)的行形态数据的话,则有利于缩短储存装置存取时间。
进行加法、乘法、最大、最小、AND、OR、XOR等运算的递归增加算法(H.S.Stone,High-performance computer architecture,Addison Wesley,1993.)上。为了缩短储存装置存取时间,储存装置最好能存取间隔为2l(l>0)的行存取形态数据。当同时存取块、行、列、对角线、反对角线形态的数据时,采用行列的加法、乘法以及公式(57)和(58)(后述)比较有效。在SIMD处理器的信号处理(J.S.Lim,Two-dimensional signal and image processing,Prentice-Hall,1990.,D.H.Johnson and D.E.Dudgeon,Array signal processing,Prentice-Hall,1993.)中防冲突储存装置若能支持同时存取块、行、列、对角线、反对角线形态的数据以提高各种行列运算速度的话,就有利于缩短整个储存装置存取时间。
拿由pq个PE构成的SIMD处理器和由m个储存模块构成的储存装置来说,不同储存模块同时请求pq个数据时,虽然在储存装置存取时间之后,pq个请求结束、所有储存模块也都结束运算,但是不得限制结束时数据所处位置。为了在图像处理、双向合并排列算法、连续增加FFT算法、递归加倍算法,行列及信号处理等上缩短储存装置存取时间、提高运算速度,要求储存装置能够以数据大小为i(*,*)而间隔为r的块、行、列、对角线、反对角线存取形态,对pq个数据同时存取。在此,间隔既可以为阳数也可以为阴数,假设始于基准坐标(i,j)的间隔r为阳数,则有12种存取类型:东南块、西南块、西北块、东北块、东块、东南线性、南线、西南线、西线、西北线、北线、东北线。
SEB(i,j,r)={I(i+ar,j+br)|0≤a<p,0≤b<q},
0≤i≤M-rp,0≤j≤N-rq                      (1)
SWB(i,j,r)={I(i+ar,j-br)|0≤a<p,0≤b<q},
0≤i≤M-rp,rq≤j≤N                        (2)
NWB(i,j,r)={I(i-ar,j-br)|0≤a<p,0≤b<q},
rp≤i≤M,rq≤j≤N                          (3)
NEB(i,j,r)={I(i-ar,j+br)|0≤a<p,0≤b<q},
rp≤i≤M,0≤j≤N-rq                        (4)
EL(i,j,r)={I(i,j+ar)|0≤a<pq},
0≤i≤M,0≤j≤N-rpq                        (5)
SEL(i,j,r)={I(i+ar,j+ar)|0≤a<pq}
0≤i≤M-rpq,0≤j≤N-rpq                    (6)
SL(i,j,r)={I(i+ar,j)|0≤a<pq},
0≤i≤M-rpq,0≤j≤N                        (7)
SWL(i,j,r)={I(i+ar,j-ar)|0≤a<pq},
0≤i≤M-rpq,rpq≤j≤N                      (8)
WL(i,j,r)={I(i,j-ar|0≤a<pq},
0≤i≤M,rpq≤j≤N                          (9)
NWL(i,j,r)={I(i-ar,j-ar|0≤a<pq},
rpq≤i≤M,rpq≤j≤N                        (10)
NL(i,j,r)={I(i-ar,j)|0≤a<pq},
rpq≤i≤M,0≤j≤N                          (11)
NEL(i,j,r)={I(i-ar,j+ar)|0≤a<pq},
rpq≤i≤M,0≤j≤N-rpq                      (12)
在上述公式中,设r为正整数。
进一步,始于基准坐标(i,j)的间隔r的12种存取类型(1)至(12)可以由图2a以及2b给出。图2a是4方向块(SEB,SWB,NWB,NEB)的示意图,图2b是8方向线性(EL,SEL,SL,SWL,WL,NWL,NL,NEL)示意图。
图3是具有SIMD处理器的防冲突储存装置的一般结构框图。其中,接口为数据寄存器。储存应处理数据时,储存装置的各个单元响应SIMD处理器的请求在控制装置控制下依次执行以下运算。
(1)向t,r,i,j寄存器分别置入SIMD处理器所指定的存取类型、基准坐标、存取类型(1)至(12)所要求的间隔,数据按行优先顺序置入数据寄存器。在此,k=a·q+b、0≤k<pq。譬如设东南块(SEB)(14,15,2)上行优先顺序改变了的4个数据为I(14,15),I(14,17),I(16,15),I(16,17)。而在东西块(SWB)(14,15,3)上行优先顺序改变了的4个数据为I(14,15),I(14,12),I(17,15),I(17,12)。在西北线(NWL)(14,15,3)上行优先顺序改变了的4个数据为I(11,12),I(8,9),I(5,6),I(2,3)。
(2)地址运算与地址选路电路运算对应各个数据的m个地址、将之选路到m个储存模块中。
(3)储存模块选择电路对可以存取的pq个储存模块作选择。
(4)数据选路电路把数据寄存器内的各数据选路到m个储存模块中。
(5)根据写信号把pq个数据储存到所选择的pq个储存模块中。
其中,上述步骤(2),(3),(4)的运算是并行执行的。
当从储存装置读取数据时,储存装置的各个单元则依次实行以下运算。
(1)确定t,r,i,j寄存器值。
(2)地址运算与地址选路电路运算对应各个数据的m个地址、将之选路到m个储存模块中。
(3)储存模块选择电路对可以存取的pq个储存模块作选择。
(4)根据读信号从所选择的pq个储存模块中读取pq个数据。
(5)数据选路电路把数据从m个储存模块中选路到数据寄存器内,对行优先顺序改变了的数据按上述存取形态(1)至(12)中之一排列。
其中,上述步骤(2),(3)的运算是并行执行的。
当把大小为M×N的数据I(*,*)分散于m个储存模块中时,储存模块分配函数要使得同时存取的各个数据处于其它模块中。另外,地址分配函数也要对被分配到同一储存模块的数据分配其它地址。
发明内容
本发明目的就在于提供一种具备简单而快速的地址运算电路与选路电路的防冲突储存装置以及采用该装置的地址运算与数据选路方法。
具体来说,本发明目的在于提供:使防冲突储存装置对于M×N阵列内各个数据,支持同时存取处于任意位置、具有一定间隔的4方向块(pq)形态和8方向线性形态的pq个数据要素,可以缩短储存装置存取时间。
本发明目的还在于:使储存装置比已有技术,在数据存取形态、间隔、数据阵排列上大小限制以及硬件费用与速度方面,都要优越。
本发明提供一种防冲突存储装置,用于对于具有pq个存储部件的单一指令多数据流处理装置中的存储装置的存取时间,所述防冲突存储装置包括:m个存储模块,其中m>pq;地址计算和路由电路,用于计算数据单元的m个地址,并且将这些数值路由到m个存储模块;存储模块选择电路,用于选择将被存取的pq个存储模块;数据寄存器,用于存储指定的子阵类型、基坐标以及所述子阵类型所需的间隔信息;以及数据路由电路,用于将所述数据寄存器中的数据路由到所述m个存储模块;其中所述防冲突装置支持对于多种子阵类型的pq个数据单元的同时存取,这些子阵类型包括4方向矩形块类型以及8方向线形类型,所述4方向矩形块类型包括东南块、西南块、西北块、东北块,所述8方向线形类型包括正东线形、东南线形、正南线形、西南线形、正西线形、西北线形、正北线形、东北线形,这些类型中的每一个是位于数据阵中的任何地方的子阵,其中这些数据单元通过正整数的固定间隔而相互关联。
根据上述防冲突存储装置,其中所述地址计算和路由电路包括:4个5×1的多路复用器,用于接收基坐标、子阵类型以及间隔信息;第一和第二SRAM,用于预先排列并存储地址差别;用于存取(i/p)s值的第三SRAM;m+3个加法器,其中两个加法器用于将所述多路复用器的输出值提供给所述第一和第二SRAM,一个加法器用于接收来自所述第三SRAM的输出值用以进行加法运算;桶形移位器,用于根据所述数据路由电路的旋转信号,将所述m个加法器的输出提供给m个存储模块。
本发明提供一种使用防冲突存储装置的地址计算和数据路由的方法,所述方法包括步骤:对于每个子阵类型和每个固定间隔,预先排列p×m个地址差别和q×m个地址差别;对于每个子阵类型和每个固定间隔,将预先排列的p×m个地址差别和q×m个地址差别分别存储在存储模块A和存储模块B中;根据所要求的子阵类型、i%p和j%q以及所述固定间隔,从存储模块A和存储模块B中读取m个地址差别;将读取的m个地址差别与基地址α(i,j)相加;对于所有12个子阵类型和固定间隔,将m个地址旋转μ(0);将旋转计算后的m个地址路由到m个存储模块。
附图说明
本发明实施例由以下附图给出。
图1是主计算机与多重SIMD计算机之关系示意图。
图2a是4方向块存取形态、间隔以及基准坐标的示意图。
图2b是8方向线性存取形态、间隔以及基准坐标的示意图。
图3是防冲突储存装置的一般结构示意图。
图4是数据选路电路详图。
图5a是8×8逆向奥米加网络切换要素的路径冲突示意图。
图5b是N=16Theta网络切换要素的路径冲突示意图。
图6是对应于μ(i,j)=(iq+j)%m,p=q=2和M×N=32×32,m=5的储存模块分配函数所分配的储存模块编号示意图。
图7是对应于p=q=2,M×N=32×32,s=16的地址分配函数所分配的地址示意图。
图8是对应于p=q=2,M×N=32×32,s=16,m=5的地址运算与选路电路示意图。
图9是对应于p=q=2,M×N=32×32,s=16的储存模块A和B的示意图。
图10适用于本发明的图形显示装置结构框图。
图11是存取形态与基准坐标示意图。
图12是本发明地址运算与选路电路(ACRC)详图。
具体实施方式
以下参照附图对本发明防冲突储存装置结构以及采用该储存装置的地址运算与数据选路方法作以说明。
确定数据储存模块编号的储存模块分配函数如下。
(i,j)=(iq+j)%m                               (13)
储存模块分配函数(13)是由Van Voorhis和Morrin对于m=pq+1,2pq,pq2而提出的(D.C.Van Voorhis and T.H.Morrin,IEEE Trans.Comput.,vol.C-27,pp.113-125,Feb.1978.),以及对于m=pq+1由Park(J.W.Park,IEEETrans.Comput.,vol.C-35,pp.669-674,July 1986)和Park&Harper(J.W.Parkand D.T.Harper III,IEEE Symp.Parallel and Distributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEE Trans.Parallel Distrib.Syst..,vol.7,No.8,pp.855-860,Aug.1996.)提出的。
从以下理论1,可以推论出:按上述12种存取类型、以函数(13)执行存取是可能的。
理论1——当m为大于pq的素数时,根据储存模块分配函数(i,j),可以把间隔为r(r%m≠0)的存取形态(东南块(SEB)、西南块(SWB)、西北块(NWB)、东北块(NEB)、东线(EL)、东南线(SEL)、南线(SL)、西南线(SWL)、西线(WL)、西北线(NWL)、北线(NL)、东北线(NEL))的pq个数据,置于互相不同的pq个储存模块中。
确定储存模块中数据地址的分配函数如以下公式所示。
(i,j)=(i/p)s+j/q                          (14)
其中,S是大于或等于N/q的整数部分的整数,符号″/″表示整除。该函数是由Van Voorhis & Morrin(D.C.Van Voorhis and T.H.Morrin,IEEETrans.Comput.,vol.C-27,pp.113-125,Feb.1978.),和Park(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986),以及Park & Harper(J.W.Park and D.T.Harper III,IEEE Symp.Parallel and Distributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEE Trans.Parallel Distrib.Syst..,vol.7,No.8,pp.855-860,Aug.1996.)提出的。
在上述(1)至(12)存取类型中当储存模块与数据地址变更后重新排列行优先顺序时,若k=a·q+b、0≤k<pq,则储存模块分配函数(13)与地址分配函数(14)可以下公式(15)和(16)表示。
μ(k)=(μ(0)+μ′(k))%m,0≤k<pq                    (15)
其中,μ(0)以公式(13)的(i,j)来求。
α(k)=α(0)+α′(k),0≤k<pq                         (16)
其中,α(0)是公式(14)的基准地址α(i,j)。
运算储存模块内处理数据地址时采用α(μ)(0≤μ<m)时速度极慢而且成本高(D.C.Van Voorhis and T.H.Morrin,IEEE Trans.Comput.,vol.C-27,pp.113-125,Feb.1978.,D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982.)。数据地址运算可以和地址选路分开进行,这样可以简化运算。在Park提出的储存装置(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986),和Park & Harper提出的储存装置(J.W.Park and D.T.Harper III,IEEE Symp.Parallel and Distributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEE Trans.Parallel Distrib.Syst..,vol.7,No.8,pp.855-860,Aug.1996.)中,是优先运算地址间差α′(k)(=α(k)-α(0)),然后再把α(0)加到该差值上以运算公式(16)中的α′(k)项。
最终,地址α(k)被选路到储存模块中。地址运算与地址选路方法方面的缺点在于:由于选路形态依存于存取形态与间隔,故若是存取类型与间隔增加的话,就会使得地址选路电路变得非常复杂。
而根据本发明提出的新的地址运算与选路方法,对地址间差α′(k)所需数据,预先从第1个数据μ(0)储存模块编号开始依次按储存模块编号排列。对基准地址加上地址间差后,要按所有12种存取类型和间隔μ(0)作右旋转。
求μ′(k)和α′(k)时,把上述公式(15),(16)换成以下公式。
μ′(k)=μ((k)-μ(0))%m,0≤k<pq                      (17)
α′(k)=α(k)-α(0),0≤k<pq                           (18)
当μ′(k)=(λ·k)%m时
k=(μ′(k)λ′)%m=((μ(k)-μ(0))λ′)%m              (19)
其中,λ·λ′=1%mm
在公式(18)中,以((μ(k)-μ(0))·λ′)%m代替k的话,则α′(k)可以下式求出。
α′(k)=α′(((μ(k)-μ(0))·λ′)%m)
=α(((μ(k)-μ(0))·λ′)%m)-α(0),0≤k<pq                 (20)
其中,α′(k)(0≤k<pq)表示储存装置内pq个数据地址间差。于是,数据从第(i,j)开始按变化了的优先顺序排列。通过按储存模块编号从储存模块″0″开始进行地址间差(20)排列,可以下式(21)求α′(μ)。
α′(μ)
=α′(((μ-μ(0))·λ′)%m)
=α(((μ-μ(0))·λ′)%m)-α(0),0≤μ<m                    (21)
α′(μ)(0≤μ<m)表示对应于pq个数据的pq个地址间差同m-pq个伪地址间差。这些,从″0″开始按储存模块编号μ被排列。
由于α′(μ)(0≤μ<m)依存于基准地址(i,j)数据的储存模块编号μ(0)(=μ(i,j)),故地址间差的个数会随储存模块数m增加。当储存模块数m大时,存取类型(1)至(12)的数据地址运算时α′(μ)(0≤μ<m)使用就变得极为复杂。若用(μ+μ(0))%m取代μ,则可以用下式(22)从储存模块μ(0)开始按模块编号殊勋求地址间差。
α′(μ+μ(0))=α′(μ·λ′)%m,0≤μ<m                    (22)
公式(22)的地址间差α′(μ·λ′)%m(0≤μ<m),由于不含有(i,j)以及(i,j)项,故对数据影响不大。
为此,在编译时间运算地址间差后,可以把该地址间差储存在一个储存模块内。公式(22)的地址间差α′(μ+μ(i,j))加α(i,j)后求α(μ)。为此,以μ(i,j)右旋转一次。
12种存取类型(1)至(12)的地址间差以下列公式表示。
AD_SEB(i,j,r,a,b)=α(i+ar,j+br)-α(i,j)
=s·((i+ar)/p-(i/p))+(j+br)/q-j/q
=s·((i%p+ar)/p)+(j%q+br)/q,0≤a<p,0≤b<q     (23)
AD_SWB(i,j,r,a,b)=α(i+ar,j-br)-α(i,j)
=s·((i+ar)/p-(i/p))+(j-br)/q-j/q
=s·((i%p+ar)/p)+(j%q-br)/q,0≤a<p,0≤b<q     (24)
AD_NWB(i,j,r,a,b)=α(i-ar,j-br)-α(i,j)
=s·((i-ar)/p-(i/p))+(j-br)/q-j/q
=s·((i%p-ar)/p)+(j%q-br)/q,0≤a<p,0≤b<q     (25)
AD_NEB(i,j,r,a,b)=α(i-ar,j+br)-α(i,j)
=s·((i-ar)/p-(i/p))+(j+br)/q-j/q
=s·((i%p-ar)/p)+(j%q+br)/q,0≤a<p,0≤b<q     (26)
AD_EL(i,j,r,a)=α(i,j+ar)-α(i,j)
=(j%q+ar)/q,0≤a<pq                              (27)
AD_SEL(i,j,r,a)=α(i+ar,j+ar)-α(i,j)
=s·((i%p+ar)/p)+(j%q+ar)/q,0≤a<pq             (28)
AD_SL(i,j,r,a)=α(i+ar,j)-α(i,j)
=s·((i%p+ar)/p),0≤a<pq                         (29)
AD_SWL(i,j,r,a)=α(i+ar,j-ar)-α(i,j)
=s·((i%p+ar)/p)+(j%q-ar)/q,0≤a<pq             (30)
AD_WL(i,j,r,a)=α(i,j-ar)-α(i,j)
=(j%q-ar)/q,0≤a<pq                              (31)
AD_NWL(i,j,r,a)=α(i-ar,j-ar)-α(i,j)
=s·((i%p-ar)/p)+(i%q-ar)/q,0≤a<pq                       (32)
AD_NL(i,j,r,a)=α(i-ar,j)-α(i,j)
=s·((i%p-a)/p)),0≤a<pq                                   (33)
AD_NEL(i,j,r,a)=α(i-ar,j+ar)-α(i,j)
=s·((i%p-ar)/p)+(j%q+ar)/q,0≤a<pq                       (34)
上述公式(23)至(34)求出的地址间差从基准坐标(i,j)开始按以下列公式进行变形后行优先顺序排列。
AD_SEB(i,j,r,k)=s·((i%p+(k/q)r)/p)+(j%q+(k%q)r)/q,
0≤k<pq                                                       (35)
AD_SWB(i,j,r,k)=s·((i%p+(k/q)r)/p)+(j%q-(k%q)r)/q,
0≤k<pq                                                       (36)
AD_NWB(i,j,r,k)=s·((i%p-(k/q)r)/p)+(j%q-(k%q)r)/q,
0≤k<pq                                                       (37)
AD_NEB(i,j,r,k)=s·((i%p-(k/q)r)/p)+(j%q+(k%q)r)/q,
0≤k<pq                                                       (38)
AD_EL(i,j,r,k)=(j%q+kr)/q,0≤k<pq                       (39)
AD_SEL(i,j,r,k)=s·((i%p+kr)/p)+(j%q+kr)/q,0≤k<pq     (40)
AD_SL(i,j,r,k)=s·((i%p+kr)/p)),0≤k<pq                 (41)
AD_SWL(i,j,r,k)=s·((i%p+kr)/p)+(j%q-kr)/q,0≤k<pq     (42)
AD_WL(i,j,r,k)=(j%q-kr)/q,0≤k<pq                       (43)
AD_NWL(i,j,r,k)=s·((i%p-kr)/p)+(j%q-kr)/q,0≤k<pq     (44)
AD_NL(i,j,r,k)=s·((i%p-kr)/p)),0≤k<pq                 (45)
AD_NEL(i,j,r,k)=s·((i%p-kr)/p)+(j%q+kr)/q,0≤k<pq     (46)
由于地址间差受具有二进制项的j%q影响,故上述公式(35)至(46)求出的SEB,SWB,NWB,NEB,EL,SEL,SWL,WL,NWL,NEL的地址间差分成2值:作为加法器输入C而储存在储存模块B内的二进制值、和作为地址间差的大小减小结果之输入B而储存在储存模块A的余值。
SEB的地址间差按以下公式分离。
AD_SEB(i,j,r,k)=s·((i%p+(k/q)r)/p)+((k%q)r)/q,
0≤k<pq(地址间差用储存模块A)
+(j%q+(k%q)r)/q-((k%q)r)/q,
0≤k<pq(地址间差用储存模块B)                   (47)
其它11个存取类型的地址间差按以下公式分离。
AD_SWB(i,j,r,k)=s·((i%p+(k/q)r)/p)-((k-(k/q)q)r)/q,
(地址间差用储存模块A)
+(j%q-(k%q)r)/q+((k%q)r)/q
(地址间差用储存模块B),0≤k<pq                 (48)
AD_NWB(i,j,r,k)=s·((i%p-(k/q)r)/p)-((k-(k/q)q)r)/q,
(地址间差用储存模块A)
+(j%q-(k%q)r)/q+((k%q)r)/q,
(地址间差用储存模块B),0≤k<pq                 (49)
AD_NEB(i,j,r,k)=s·((i%p-(k/q)r)/p)+((k-(k/q)q)r)/q,
(地址间差用储存模块A)
+(j%q+(k%q)r)/q-((k%q)r)/q
(地址间差用储存模块B),0≤k<pq                 (50)
AD_EL(i,j,r,k)=(kr)/q,
(地址间差用储存模块A)
+(j%q+(k%q)r)/q-((k%q)r)/q
(地址间差用储存模块B),0≤k<pq             (51)
AD_SEL(i,j,r,k)=s·((i%p+kr)/p)+(kr)/q,
(地址间差用储存模块A)
+(j%q+kr)/q-(kr)/q
(地址间差用储存模块B),0≤k<pq             (52)
AD_SL(i,j,r,k)=s·((i%p+kr)/p))
(地址间差用储存模块A),0≤k<pq             (53)
AD_SWL(i,j,r,k)=s·((i%p+kr)/p)-(kr)/q,
(地址间差用储存模块A)
+(j%q-(k%q)r)/q+((k%q)r)/q
(地址间差用储存模块B),0≤k<pq             (54)
AD_WL(i,j,r,k)=-(kr)/q
(地址间差用储存模块A)
+(j%q kr)/q+(kr)/q
(地址间差用储存模块B),0≤k<pq             (55)
AD_NWL(i,j,r,k)=s·((i%p-kr)/p)-(kr)/q,
(地址间差用储存模块A)
+(j%q-(k%q)r)/q+((k%q)r)/q
(地址间差用储存模块B),0≤k<pq             (56)
AD_NL(i,j,r,k)=s·((i%p-kr)/p))
(地址间差用储存模块A),0≤k<pq             (57)
AD_NEL(i,j,r,k)=s·((i%p-kr)/p)+(kr)/q,
(地址间差用储存模块A)
+(j%q+(k%q)r)/q-((k%q)r)/q,
(地址间差用储存模块B),0≤k<pq                (58)
12种地址间差整理结果见表2。
地址运算电路(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986.,J.W.Park and D.T.Harper III,IEEE Symp.Parallel andDistributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.HarperIII,IEEE Trans.Parallel Distrib.Syst..,vol.7,No.8,pp.855-860,Aug.1996.)根据储存地址加法和公式(47)的块、公式(51)的行、公式(53)的行存取类型的地址间差,运算pq地址。关于12种存取类型(1)至(12)的地址,由于不仅因临界值p-i%p或q-j%q,而且还因阳数间隔多样性等,以公式(47)至(58)实现12种存取形态(1)至(12)和间隔的地址间差会这使得地址选路方法变得更复杂。那么,预先把被请求数据的储存模块编号从最前面的数据的储存模块编号开始按顺序整理、储存到储存模块A和B内的话,通过在地址间差上加基准地址α(i,j),让所有12种存取形态(1)至(12)以及间隔同第1个数据的储存模块同值,就可以直接选路于m个地址。这样一来,地址选路电路的m个地址运算就变得很简单。
根据理论1,被存取的pq个储存模块编号,可以下列公式表示12种存取形态(1)至(12)和间隔r%m≠0。
IN_SEB(i,j,r)=μ(i+ar,j+br)=(μ(i,j)+qar+br)%m,
0≤a<p,0≤b<q                        (59)
IN_SWB(i,j,r)=μ(i+ar,j-br)=(μ(i,j)+qar-br)%m,
0≤a<p,0≤b<q                        (60)
IN_NWB(i,j,r)=μ(i-ar,j-br)=(μ(i,j)-qar-br)%m,
0≤a<p,0≤b<q                        (61)
IN_NEB(i,j,r)=μ(i+ar,j+br)=(μ(i,j)-qar+br)%m,
0≤a<p,0≤b<q                                        (62)
IN_EL(i,j,r)=μ(i,j+br)=(μ(i,j)+br)%m,0≤b<pq (63)
IN_SEL(i,j,r)=μ(i+ar,j+ar)=(μ(i,j)+(q+1)ar)%m,
0≤a<pq                                                (64)
IN_SL(i,j,r)=μ(i+ar,j)=(μ(i,j)+qar)%m,0≤a<pq(65)
IN_SWL(i,j,r)=μ(i+ar,j-ar)=(μ(i,j)+(q-1)ar)%m,
0≤a<pq                                                (66)
IN_WL(i,j,r)=μ(i,j-ar)=(μ(i,j)-br)%m,0≤a<pq (67)
IN_NWL(i,j,r)=μ(i-ar,j-ar)=(μ(i,j)-(q+1)ar)%m,
0≤a<pq                                                (68)
IN_NL(i,j,r)=μ(i-ar,j)=(μ(i,j)-qar)%m,0≤a<pq(69)
IN_NEL(i,j,r)=μ(i-ar,j+ar)=(μ(i,j)-(q-1)ar)%m,
0≤a<pq                                                (70)
上述公式(59)至(70)的编号根据下列公式按从基准地址(i,j)开始变形的行优先顺序排列。
μSEB(k)=(μ(0)+q·(k/q)·r+(k%q)·r)%m=(μ(0)+kr)%m,
0≤k<pq                                                (71)
μSWB(k)=(μ(0)+q·(k/q)·r-(k%q)·r)%m
=(μ(0)+(q·(k/q)-(k%q))·r)%m,0≤k<pq             (72)
μNWB(k)=(μ(0)-q·(k/q)·r-(k%q)·r)%m
=(μ(0)-kr)%m,0≤k<pq                               (73)
μNEB(k)=(μ(0)-q·(k/q)·r+(k%q)·r)%m
=(μ(0)-(q·(k/q)-(k%q))·r)%m,0≤k<pq             (74)
μEL(k)=(μ(0)+kr)%m,0≤k<pq                        (75)
μSEL(k)=(μ(0)+(q+1)kr)%m,0≤k<pq    (76)
μSL(k)=(μ(0)+qkr)%m,0≤k<pq         (77)
μSWL(k)=(μ(0)+(q-1)kr)%m,0≤k<pq    (78)
μWL(k)=(μ(0)-kr)%m,0≤k<pq          (79)
μNWL(k)=(μ(0)-(q+1)kr)%m,0≤k<pq    (80)
μNL(k)=(μ(0)-qkr)%m,0≤k<pq         (81)
μNEL(k)=(μ(0)-(q-1)kr)%m,0≤k<pq    (82)
其中,μ(0)为μ(i,j)。
关于东南块(SEB)的地址间差——
μ编号模块的东南块(SEB)的地址间差、ASEB(μ)可以通过(17)至(22)过程以公式(47)和(71)求出。
ASEB(μ)=s·((i%p+((((μ-μ(0))r′)%m)/q)r)/p)+(((((μ-μ(0))r′)%m)%q)r)/q,
0≤μ<m(储存模块A)
+(j%q+((((μ-μ(0))r′)%m)%q)r)/q-(((((μ-μ(0))r′)%m)%q)r)/q,
0≤μ<m(储存模块B)                       (83)
其中,r·r′=1%m。
把(μ+μ(0))%m当做μ代入公式(83)后,以下列公式可以求出从μ(0)开始以升序排列的储存模块的地址间差。
ASEB(μ+μ(0))=s·((i%p+(((μr′)%m)/q)r)/p)+((((μr′)%m)%q)r)/q,
0≤μ<m(储存模块A)
+(j%q+(((μr′)%m)%q)r)/q-((((μr′)%m)%q)r)/q,
0≤μ<m(储存模块B)                       (84)
其中,r·r′=1%m。
关于西南块(SWB)的地址间差——
由于在公式(19)中没有SWB(i,j,r)的公式(72)编号,故可以考虑用SEB(i,j-(q-1)r,r)编号与地址间差来代替SWB(i,j,r)。SEB(i,j-(q-1)r,r)的地址间差为:
AD_SEB(i,(j-(q-1)r),r,k)=s·((i%p+(k/q)r)/p)+((k%q)r)/q,
0≤k<pq(储存模块A)
+(j%q-(q-1)r+(k%q)r)/q-((k%q)r)/q,
0≤k<pq(储存模块B)                           (85)
SEB(i,j-(q-1)r,k)储存模块指数如下:
(μ(0)-(q-1)r+kr)%m,0≤k<pq                (86)
第μ个编号模块的东南块(SEB)的地址间差ASEB(μ)可以通过公式(85)和(86)求出。
ASWB(μ)=s·((i%p+((((μ-μ(0)+(q-1)r)r′)%m)/q)r)/p)
+(((((μ-μ(0)+(q-1)r)r′)%m)%q)r)/q,
0≤μ<m(储存模块A)
+(j%q-(q-1)r+((((μ-μ(0)+(q-1)r)r′)%m)%q)r)/q
-(((((μ-μ(0)+(q-1)r)r′)%m)%q)r)/q,
0≤μ<m(储存模块B)                           (87)
其中,r·r′=1%m。
把(μ+μ(0)+(q-1)r)%m当做μ代入公式(87)后,以下列公式可以求出从μ(0)开始以升序排列的储存模块的地址间差。
ASWB(μ+μ(0))=s·((i%p+((((μ+(q-1)r)r′)%m)/q)r)/p)
+(-(q-1)r+((((μ+(q-1)r)r′)%m)%q)r)/q,
0≤μ<m(储存模块A)
+(j%q-(q-1)r+((((μ+(q-1)r)r′)%m)%q)r)/q
-(-(q-1)r+((((μ+(q-1)r)r′)%m)%q)r)/q,
0≤μ<m(储存模块B),                            (88)
其中,r·r′=1%m。
关于从μ(0)开始以升序排列的储存模块的其它10种存取形态的地址间差的求法同上述SEB和SWB的相同。表3给出了从μ(0)开始以升序排列的储存模块的上述12种存取形态(1)至(12)和间隔的地址间差。
关于地址间差的大小——
表3所示的SEB,SWB,NWB,NEB,SEL,SWL,NWL及NEL地址间差受r,i%p,及j%q影响。另外,关于SEB,SWB,NEB,NWB,SEL,SWL,NWL,NEL的地址间差的大小,若用#r表示间隔个数的话,则在储存模块A大自为8×p×m×#r×log2(MN/pq)比特,而在储存模块B大约为8×q×m×#r比特。东线和西线的地址间差受k,r,j%p影响,其地址间差的大小在储存模块A为2×q×m×#r×log2(MN/pq)比特,而在储存模块B大约为2×q×m×#r比特。南线和北线的地址间差受k,r,i%p影响,其地址间差的大小在储存模块A为2×p×m×#r×log2(MN/pq)比特。由于南线和北线的地址间差不受j%q影响,故在储存模块B没有地址间差。那么,整个储存装置的地址间差的大小为(12×p×m×log2(MN/pq)+10×q×m)×#r比特。上述方法和储存装置的缺点在于:表3所示整个12种存取形态和间隔(1)至(12)的地址间差在储存时要占据过大的储存模块A和B。在编译时间内对所要求的存取形态和间隔的地址间差进行运算、并储存到储存模块A和B中。
本发明地址运算电路和地址选路电路执行下列运算。
(1)把预先排列好的p×m个地址间差和q×m个之差分别对应于存取形态和间隔储存到储存模块A和B中。
(2)由于上述求出的m个地址间差不仅受存取形,i%p,j%q间隔而且也受μ(0≤μ<m)等影响,故根据被请求的存取形态,i%p,j%q间隔从储存模块A和B取出。
(3)以上求出的m个地址间差加基准地址α(i,j)。
(4)就整个12种存取形态和间隔(1)至(12),以μ(0)旋转以上m个地址。
(5)把求出的m个地址选路到m个储存模块。
从数据寄存器把数据选路到m个储存模块的数据选路电路作用就在于把pq个数据选路到适当储存模块中。对应于pq个数据的储存模块编号同公式(71)至(82)中的地址相同。于是,以下列公式对pq个数据进行排列之后,进行约μ(i,j)右旋转,以便以数据的储存模块编号从编号0开始按升序排列。
SEB:D2((kr)%m)←D1(k),0≤k<pq                    (89)
SWB:D2(((q·(k/q)-k%q)·r)%m)←D1(k),0≤k<pq    (90)
NWB:D2((-kr)%m)←D1(k),0≤k<pq                   (91)
NEB:D2(((-q·(k/q)+k%q)·r)%m)←D1(k),0≤k<pq   (92)
EL:D2((kr)%m)←D1(k),0≤k<pq                     (93)
SEL:D2(((q+1)kr)%m)←D1(k),0≤k<pq               (94)
SL:D2((qkr)%m)←D1(k),0≤k<pq                    (95)
SWL:D2(((q-1)kr)%m)←D1(k),0≤k<pq               (96)
WL:D2((-kr)%m)←D1(k),0≤k<pq                    (97)
NWL:D2((-(q+1)kr)%m)←D1(k),0≤k<pq              (98)
NL:D2((-qkr)%m)←D1(k),0≤k<pq                   (99)
NEL:D2((-(q-1)kr)%m)←D1(k),0≤k<pq              (100)
其中,D1和D2为数据寄存器和暂时寄存器。由于选路形态受存取形态和间隔影响,故采用选路形态(89)至(100)的数据选路电路的控制很复杂。然而,通过下述方式可以降低控制复杂程度。
关于东南块(SEB)——
对于公式(89)的东南块(SEB)的数据选路形态,间隔为r的储存模块编号(kr)%m为(k·m·l1+k·r1)%m。其中,r1=r%m,l1为阳数。于是,公式(89)的间隔r的东南块(SEB)的数据选路形态从下列公式选择具有r1(=r%m)的(m-1)个相互不同的选路路径。
SEB:D2((kr1)%m)←D1(k),0≤k<pq                    (101)
关于西南块(SWB)——
对于公式(90)的西南块(SWB)的数据选路形态,间隔为r的储存模块编号((q·(k/q)-k%q)·r)%m为(k·m·l2+(q·(k/q)-k%q)·r1)%m。其中,r1=r%m,l2为阳数。于是,公式(90)的间隔r的西南块(SWB)的数据选路形态从下列公式选择具有r1(=r%m)的(m-1)个相互不同的选路路径。
SWB:D2(((q·(k/q)-k%q)·r1)%m)←D1(k),0≤k<pq    (102)
关于西北块(NWB)——
对于公式(91)的西北块(NWB)的数据选路形态,间隔为r的储存模块编号(-kr)%m同公式(89)的东南块(SEB)的数据选路形态(kr)%m间隔(-r)%m储存模块编号相同。于是,可以往公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入间隔(-r)=r%m当做间隔r,借此求西北块(NWB)的选路路径。
关于东北块(NEB)——
对于公式(92)的东北块(NEB)的数据选路形态,间隔为r的储存模块编号((-q·(k/q)+k%q)·r)%m同公式(90)的西南块(SWB)的数据选路形态间隔(-r)%m储存模块编号((q·(k/q)-k%q)·r)%m相同。于是,可以往以公式(102)求出的西南块(SWB)的(m-1)个相互不同的选路路径,代入间隔(-r)%m当做间隔r,借此求东北块(NEB)的选路路径。
关于东线(EL)——
对于公式(93)的东线(EL)的数据选路形态,间隔为r的储存模块编号(kr)%m同公式(89)的东南块(SEB)的数据选路形态间隔r的储存模块编号相同。于是,可以往以公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入间隔r%m当做间隔r,借此求东线(EL)的路径。
关于东南线(SEL)——
对于公式(94)的东南线(SEL)的数据选路形态,间隔为r的储存模块编号((q+1)r)%m同公式(89)的东南块(SEB)的数据选路形态间隔((q+1)r)%m的储存模块编号(kr)%m相同。于是,可以往以公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入间隔((q+1)r)%m当做间隔r,借此求东南线(SEL)的路径。
关于南线(SL)——
对于公式(95)的南线(SL)的数据选路形态,间隔为r的储存模块编号(qkr)%m同公式(89)的东南块(SEB)的数据选路形态间隔(qr)%m的储存模块编号(kr)%m相同。于是,可以往以公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入间隔(qr)%m当做间隔r,借此求南线(SL)的路径。
关于西南线(SWL)——
对于公式(96)的西南线(SWL)的数据选路形态,间隔为r的储存模块编号((q-1)kr)%m同公式(89)的东南块(SEB)的数据选路形态间隔((q1)r)%m的储存模块编号((kr)%m)相同。于是,可以往以公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入把间隔((q-1)r)%m当做间隔r,借此求西南(SWL)的路径。
关于西线(WL)——
对于公式(97)的西线(WL)的数据选路形态,间隔为r的储存模块编号(-kr)%m相当于在公式(89)的东南块(SEB)的数据选路形态储存模块编号(kr)%m上加入间隔(-r)%m)后的(k(-r)%m)。于是,可以往以公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入把间隔(-r)%m当做间隔r,借此求西线(WL)的路径。
关于西北线(NWL)——
对于公式(98)的西北线(NWL)的数据选路形态,间隔为r的储存模块编号(-(q+1)kr)%m相当于在公式(89)的东南块(SEB)的数据选路形态储存模块编号(kr)%m上加入间隔(-(q+1)r)%m后的(k(-(q+1)r)%m。于是,可以往以公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入间隔(-(q+1)r)%m当做间隔r,借此求西北线(NWL)的路径。
关于北线(NL)——
对于公式(99)的北线(NL)的数据选路形态,间隔为r的储存模块编号(-qkr)%m相当于在公式(89)的东南块(SEB)的数据选路形态储存模块编号(kr)%m上加入间隔(-qr)%m后的(k(-qr))%m。于是,可以往以公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入间隔(-qr)%m当做间隔r,借此求北线(NL)的路径。
关于东北线(NEL)——
对于公式(100)的东北线(NEL)的数据选路形态,间隔为r的储存模块编号(-(q1)kr)%m相当于在公式(89)的东南块(SEB)的数据选路形态储存模块编号(kr)%m上加入间隔(-(q1)r%m后的(k(-(q1)r)%m。于是,可以往以公式(101)求出的东南块(SEB)的(m-1)个相互不同的选路路径,代入间隔(-(q1)r)%m当做间隔r,借此求东北线(NEL)的路径。
表4给出了经简化的选路形态。
对应于12种存取形态的整个选路形态有2(m-1)个。于是,对数据选路电路来说,对应于间隔(1)至(12)的12种存取形态,只需要对应于公式(101)的SEB和公式(102)的SWB这两者的选路形态。
数据选路电路由图4给出。
在此,利用ROM,log2(2(m-1))×2(m-1)检波器以及3相缓冲选择器,作成具有12种存取形态和间隔的2(m-1)个分枝的选路形态。由于有12种存取形态和间隔r,如图5a和5b所示,选路形态在下列网络因路径冲突而不能实现:奥米加(Omega)网络(J.Frailong,W.Jalby.and J.Lenfant,in Proc.Int.Conf.Parallel Processing,1985,pp.276-283.,C.S.Raghavendra and R.Boppana,inProc.Int.Conf.Parallel Processing,1990,pp.76-83.,D.H.Lawrie,IEEETrans.Comput.,vol.C-24,no.12,pp.1145-1155,Dec.1975.)、Theta网络(D.Lee,″Scrambled storage for parallel memory systems,″in Proc.Int.Symp.onComp.Architecture,pp.232-239,1988)。本发明数据选路电路采用纵横网络(Crossbar Network)(D.T.Harper III,IEEE Trans.Comput.,vol.C-43,pp.618-622,May 1994.,H.Shapiro,IEEE Trans.Comput.,vol.C-27,no.5,pp.421-428,May 1978.,D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982.)的话,比较简单,读运算时的选路形态固定。
Van Voorhis和Morrin曾经提出过对应于具有间隔的列、块、行的储存模块选择电路(D.C.Van Voorhis and T.H.Morrin,IEEE Trans.Comput.,vol.C-27,pp.113-125,Feb.1978.),Park也提出过(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986)。储存模块选择电路按通过公式(71)至于(82)求出的编号选择pq个储存模块。一般,由于(m-pq)<<pq,比较容易实现检索没使用储存模块的储存模块选择电路。根据以下理论2可以检索出对应12种存取形态(1)至(12)的(m-pq)个没存取的储存模块。
理论2——对应12种存取形态的(m-pq)个没存取储存模块编号如下公式所示。
SEB(k)=((0)+kr)%m,pq≤k<m                        (103)
SWB(k)=(μ(0)+(q·(k/q)-(k%q))·r)%m,pq≤k<m    (104)
NWB(k)=(μ(0)-kr)%m,pq ≤k<m                     (105)
NEB(k)=(μ(0)-(q·(k/q)-(k%q))·r)%m,pq≤k<m    (106)
EL(k)=(μ(0)+kr)%m,pq≤k<m                       (107)
SEL(k)=(μ(0)+(q+1)kr)%m,pq≤k<m                 (108)
SL(k)=(μ(0)+qkr)%m,pq≤k<m                      (109)
SWL(k)=(μ(0)+(q-1)kr)%m,pq≤k<m                 (110)
WL(k)=(μ(0)-kr)%m,pq≤k<m                       (111)
NWL(k)=(μ(0)-(q+1)kr)%m,pq≤k<m                 (112)
NL(k)=(μ(0)-qkr)%m,pq≤k<m                      (113)
NEL(k)=(μ(0)-(q-1)kr)%m,pq≤k<m                 (114)
上述公式中,μ(0)为(i,j)。
上述公式(103)至(114)中的(m-pq)个编号提供给(m-pq)个译码器,对译码器的翻转结果施以OR运算后得到m个结果,根据该结果来控制m个以及模块的存取。
特别是,当m=pq+1时,把pq当做k代入公式(103)至(114)而求出的没存取储存模块编号之一提供给译码器,译码器的m个翻转结果用作pq个存取的储存模块的存取信号和没存取的储存模块的非存取信号。
关于地址运算和选路以及储存模块的例子——
图6给出了p=q=2,M×N=32×32及m=5时储存模块分配函数所分配的各个数据的储存模块编号。图7给出了p=q=2,M×N=32×32及s=16时地址分配函数所分配的各个数据地址。图8示意的是p=q=2,M×N=32×32及s=16、m=5时地址运算电路和地址选路电路。图9给出了12种存取形态与间隔r=1,2,3,4时的储存模块A与B的地址间差。通过下述例子可以理解本发明地址运算和地址选路以及储存模块选择方法。
例1
对于间隔1的位置(14,15)的东南块(SEB),可以从图7求出按行优先顺序变更的I(14,15),I(14,16),I(15,15),I(15,16)的储存模块编号μ(k)=(3,4,0,1)。从图7求出地址α(k)=(119,120,119,120)、按储存模块编号排列地址后,就变成α(μ)=(119,120,×,119,120)。其中,×表示没存取储存模块编号2。本发明地址运算和地址选路以及储存模块选择方法具体过程如下所示。
当i%p=0,j%q=1,r=1时,地址间差通过下式求出。
ASEB(μ+μ(0))%m=(0,0,0,0,16)各个加法器的输入B
+(0,1,0,1,0)各个加法器的输入C
=(0,1,0,1,16)(根据图9)
把该求出的地址间差适用于基准地址的话,可以得到:
α(k)=α(0)(=119)+ASEB(μ+μ(0))
=(119,120,119,120,135)
对该地址以μ(0)(=3)右旋转,可得:
α(μ)=(119,120,135,119,120)
由于以公式(103)所求出的编号为((i、j)+kr)%m=(3+4)%5即第2个储存模块是没存取储存模块,故同上述一样可以得出结果:(119,120,×,119,120)。
其它例子由表5a和表5b给出。
由于可以对文本和图像进行迅速而正确的修正以及显示的要求不断增加,故对高速高解像度图形显示装置的需求不断增加。已有图形显示装置使用含有二维图像阵的缓冲储存装置、以进行修正和显示。图形显示装置依据主计算机指令来修正缓冲储存装置的图像点。其从缓冲储存装置读取图像点,然后根据最后扫描形态向显示器送图像点。就高速高解像度图形显示装置来说,要能够减少缓冲储存装置内容修正时间。随着芯片技术不断发展,一个储存芯片所含有的比特数越来越多。对高速缓冲储存装置来说,为适应多存取形态的多图像点并行存取,与其通过扩大单一储存模块容量来缩短存取时间,不如模块储存容量相对不增大而是增多一个储存芯片种含有的储存模块数量。为了缩短对缓冲储存装置内容进行修正的时间,缓冲储存装置要能够并行存取各种图像存取形态的多图像点。
以下,对适用于图形显示装置的缓冲储存装置的具有块、水平、垂直、对角线、反对角线存取形态的储存装置,一边同已有储存装置进行比较,一边加以说明。
关于具有块、水平、垂直、对角线、反对角线存取形态的储存装置——
看一下适用于高速高解像度图形显示装置的高效缓冲储存装置,它对于块(p×q)、水平(1×pq)、垂直(pq×1)、对角线、反对角线存取形态的二维图像的pq个图像点可并行存取。
在此,媒介变量p与q都是2的乘幂。
图形显示装置如图10所示,一般由主计算机、显示处理器、缓冲储存装置100、图像生成器以及显示器构成。显示处理器依据主计算机指令对缓冲储存装置的图像点加以修正。
图像生成器从缓冲储存装置读取图像点,按最后扫描形态发送给显示器。设图像数据大小为M×N,为了缩短对图像点的存取时间,要求缓冲储存装置应可以对图形显示装置的M×N图像中的pq个图像点并行存取。表6给出了已有图像显示装置的显示领域大小。缓冲储存装置的大小至少要同特定显示装置的显示领域的大小相等。
譬如,拿960(行数)×1280(每行图像点数)的显示器来说,M,N最小值分别是960和1280。许多图形装置的N值不为2的乘幂。
缓冲储存装置100必须要可以并行存取水平、垂直以及块形态的图像点,以利于缩短对水平线、垂直线或一文字的写入时间。还有。从可以缩短45度整数倍的线性形态图像数据的写入时间、或便于以45度整数倍旋转的观点来看,还应该附带可以对对角线、反对角线图像点作并行存取。为提高缓冲储存装置100的修正速度,缓冲装置100要可以对M×N图像i(*,*)的基准坐标(i,j)下的块(NL)、水平(HR)、垂直(VR)、对角线(FD)以及反对角线(BD)存取形态的pq个图像点进行并行存取。
BL(i,j)={I(i+a,j+b)|0≤a<p,0≤b<q},0≤i≤M-p,0≤j≤N-q   (115)
HR(i,j)={I(i,j+a)|0≤a<pq},0≤i≤M-1,0≤j≤N-pq            (116)
VR(i,j)={I(i+a,j)|0≤a<pq},0≤i≤M-pq,0≤j≤N-1            (117)
FD(i,j)={I(i+a,j+a)|0≤a<pq},0≤i≤M-pq,0≤j≤N-pq         (118)
BD(i,j)={I(i+a,j-a)|0≤a<pq},0≤i≤M-pq,pq-1≤j≤N-1       (119)
图11显示了上述具有基准坐标(i,j)的存取形态。在此,基准坐标是指基准图像点i(i,j)的坐标。当要修正图像点时,图11所示的缓冲储存装置的构成单元根据显示处理器的请求在控制电路控制下依次执行下列运算。
(1)向t,i,j寄存器分别置入显示处理器所选择的数据存取形态t(块为1,水平为2,垂直为3,对角线为4,反对角线为5)和存取形态(1)至(5)所要求的基准坐标(i,j),数据按行优先顺序置入数据寄存器。
(2)地址运算与选路电路(ACRC)运算m个图像点的地址、将之选路到m个储存模块中。
(3)储存模块选择电路对可以存取的pq个储存模块作选择。
(4)数据选路电路把数据寄存器内的pq个图像点选路到m个储存模块中。
(5)根据写信号把图像点储存到所选择的pq个储存模块中。
其中,上述步骤(2),(3),(4)的运算是并行执行的。
当从缓冲储存装置读取图像点时,缓冲储存装置的各个单元则依次实行以下运算。
(1)设置t,i,j寄存器所要求值。
(2)地址运算与选路电路(ACRC)运算m个图像点地址、将之选路到m个储存模块中。
(3)储存模块选择电路对可以存取的pq个储存模块作选择。
(4)根据读信号从所选择的pq个储存模块中读取图像点。
(5)数据选路电路把pq个图像点从m个寄存器中选路到数据寄存器内,对按上述存取形态(1)至(5)的优先顺序排列pq个图像点。
其中,上述步骤(2),(3)的运算是并行执行的。
本发明地址运算与选路电路由图12给出。
地址运算与选路电路包括:用于地址间差的2个SRAM、4个5×1MUX、(m+3)个加法器、用于(i/p)值的SRAM以及桶型移位器。
块、水平、对角线、反对角线存取形态的地址间差的第1个间隔根据μ(0≤μ<m)的i%p值以p个差值表示。水平存取形态的地址间差的第1个间隔不因μ(0≤μ<m)的i%p值而变化。块、水平、对角线、反对角线存取形态的地址间差的第2个间隔根据μ(0≤μ<m)的i%p值以q个差值(二进制值)表示。
垂直存取形态的地址间差的第2个间隔不因μ(0≤μ<m)的,j%q值而变化。因地址间差,第1个SRAM按存取形态和i%p值存取、通过输入B向m个加法器提供输入。因地址间差第2个SRAM按存取形态和j%q值存取、通过输入C向m个加法器提供输入。因地址间差,第1和第2SRAM的大小分别为(4p+1)×m×log2(MN/pq)和(4q+1)×m比特。
根据图2,用于地址间差的第1个SRAM被选择地址为:块存取形态的第0个p×m个地址间差用t·p+i%p、水平存取形态的第1个1×m个地址间差用t·p、垂直、对角线、反对角线存取形态的第2、第3、第4个p×m个地址间差用((p-1)之2的补数)+t·p+i%p)即(t·p+i%p-(p-1))。
用于地址间差的第2个SRAM被选择地址为:块和水平存取形态的第0和第1个q×m个地址间差用(t·q+i%q)、垂直存取形态的第2个1×m个地址间差用(t·p)、对角线、反对角线存取形态的第3、第4地址间差用((t·q+j%q+((q-1)之2的补数))即(t·q+j%q-(q-1))。
(t·p+i%p)和(t·q+j%q)之值,若p和q皆为2的乘幂,不用进行乘法和加法运算,只要连接(t·p),(i%p),(t·q),(j%q)就可以容易地求出。
为了在基准地址α(i,j)运算中所必须的一次乘运算(i/p)s值,以SRAM存取代替。若在选择时为了在基准地址运算上排除一次乘运算把s而不是N作为2的乘幂,则在M×N=960×1280图像存取部分的60%即q(s-(则大于或等于N/q整数部分的整数)M就是在没使用储存装置领域中追加的容量。
根据本发明地址运算与选路电路,当s不是2的乘幂时,对SRAM存取所得(i/p)s值为了基准地址加j/q值。当s为2的乘幂时,对(i/p)s值在i值最下位比特加大约为log2(s/p)的0。i/p和j/q值合计以A输入提供给m个加法器。
以下,关于地址运算与地址选路,对本发明硬件结构和已有储存装置(D.C.VanVoorhis and T.H.Morrin,IEEE Trans.Comput.,vol.C-27,pp.113-125,Feb.1978.,J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986.,D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982.,J.W.Park and D.T.Harper III,IEEESymp.Parallel and Distributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.HarperIII,IEEE Trans.Parallel Distrib.Syst.,vol.7,No.8,pp.855-860,Aug.1996.)从硬件价格、控制复杂性以及速度等诸方面作以比较。
在这一比较中,数据的任意位置处的至少3种存取形态数据的并行处理被支持,地址运算与地址选路电路的硬件实现被考察。Van Voorhis和Morrin(D.C.VanVoorhis and T.H.Morrin,IEEE Trans.Comput.,vol.C-27,pp.113-125,Feb.1978.)以及Lawrie和Vora(D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May1982.)等提出的储存装置中,是直接运算各个储存模块μ(0≤μ<m)地址α(μ)。地址运算与选路电路(D.C.Van Voorhis and T.H.Morrin,IEEE Trans.Comput.,vol.C-27,pp.113-125,Feb.1978.,D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982.)中,由于地址运算同地址选路旋转分离,故控制复杂、造价高。地址运算与选路电路(D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982.)对应于各个储存模块k运算块、水平、垂直存取形态的α(μ)即(i+((k-(i,j))%m)/q,j+((k-(i,j))/m)%q),(i,j+(k-(i,j))/m),(i+(p((i,j)-k))%m,j)。
如表7所示,第1格的硬件构成要素和运算延迟时间对于在储存装置(D.C.VanVoorhis and T.H.Morrin,IEEE Trans.Comput.,vol.C-27,pp.113-125,Feb.1978.)中对m个储存模块尽可能快速运算α(μ)来说是必要的。
对于储存装置(D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982.)的BSD,为了α(μ)运算和选路,若需要17个储存模块和16个处理器的话,则要具备表7第2格显示的硬件构成要素和运算延迟时间。在Park(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986),以及Park和Harper(J.W.Park and D.T.Harper III,IEEE Symp.Parallel and Distributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEE Trans.Parallel Distrib.Syst..,vol.7,No.8,pp.855-860,Aug.1996.)等提出的储存装置中,地址运算同地址选路分离。根据Park储存装置(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986),地址运算电路(ACC)通过需要加法器阵一次加法运算时间的a(i,j),(0,s,或k,k=0,...,(p-1));(0,1)加法运算来运算块存取形态和水平存取形态的pq个地址,而通过需要2次加法运算时间的α(i,j),(0或s),以及(ks,k=0,...(q-1))加法运算来运算垂直存取形态的pq个地址。
地址选路电路(ARC)首先通过2次选路将按垂直存取形态的(iq+j-1)%(pq+1)和垂直存取形态的(iq+j-q)%(pq+1)的数目排列的地址向右旋转。
储存装置(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986)为了运算m个储存模块用α(μ),需要具备表7中第3格所示的硬件构成要素和运算延迟时间。
另一储存装置(J.W.Park and D.T.Harper III,IEEE Symp.Parallel and DistributedProcessing,pp.444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEE Trans.ParallelDistrib.Syst..,vol.7,No.8,pp.855-860,Aug.1996.)中,地址运算电路(ACC)在一次加法运算时间内以第1个SRAM地址间差同第2SRAM地址间差即(i,j)的加法运算来运算块、水平、垂直存取形态的pq个地址。对输入于pq个加法器的输入B的地址间差的大小,在这3种形态中都是p×pq。
关于M个加法器的输入C的地址运算电路(ACC)的地址间差的大小,由于块存取形态地址间差不仅依赖于i%p,而且依赖于j%q,故块形态下为q×p。关于5种存取形态(115)至(119)的地址运算电路的第1个SRAM和第2个SRAM的大小大约为5p×pq和3q×q。地址选路电路首先按储存模块编号对块、水平、垂直存取形态的pq个地址进行排列,然后,对应于块、水平、垂直形态作大约(iq+j)%(pq+1)右旋转。在储存装置中,为了运算α(μ)要求具备表7第4格的硬件构成要素和运算延迟时间。地址运算与选路电路的缺点在于:因地址运算电路所输出地址没有按储存模块编号排列,故按存取形态作地址运算后,必须要按储存模块编号进行排列,处理比较复杂。相比之下,在本发明所提出的储存装置,当运算α(μ)时需要具备表7中第5格的硬件要素和运算延迟时间,在此,输出地址已经从μ(i,j)开始按储存模块编号排列。同上述电路(J.W.Park and D.T.Harper III,IEEESymp.,Parallel and Distributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.HarperIII,IEEE Trans.Parallel Distrib.Syst.,vol.7,No.8,pp.855-860,Aug.1996.)相比,本发明地址运算与数据选路电路的主要优点在于:(1)以SRAM取代乘法器而使速度提高,(2)摈弃多路转换器而使控制得到简化和门(gate)数减少,地址间差大小由(4p+q)×pq×log2(MN/pq)j+3q×q比特减少到(4p+1)×m×log2(MN/pq)+(4q+1)×m。
一般,字大小为8×8或更大时,为了得到比较好的图形显示,p和q至少要满足p=8,q=8。另外,pq值也必须要等于或小于M和N之间的最小值。
表8所显示的是:地址运算与选路电路的硬件构成要素和运算延迟时间为M×N×b=960×1280×24情况下,p=q=8与m=7的场合同p=q=16与m=257的场合之比较结果。
为了提高上述储存装置(J.W.Park and D.T.Harper III,IEEE Symp.Parallel andDistributed Processing,pp.d 444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEE Trans.Parallel Distrib.Syst.,vol.7,No.8,pp.855-860,Aug.1996.)的乘法器电路之运算速度,本发明储存装置以SRAM取代之。假设一个1位5×1多路转换器的门数为12、一个全体加法器的门数为7,则m×log2(MN/pq)比特5×1多路转换器的门数为12,一个全体加法器的门数大大多于全体加法器即一个log2(4p+1)比特加法器+一个log2(4q+1)比特加法器+(pq+1)个log2(MN/pq)比特加法器的门数。
同具有上述构成要素的已有储存装置相比,本发明地址运算与选路电路不需要用于地址运算后按储存装置编号排列地址的5×1多路转换器,故控制简单、造价低。另外,在(pq+1)个加法器中5×1多路转换器之间连接有5m×log2(MN/pq)条线,当p=q=8或p=q=16的场合,整个连线数将多达5,025条或16,705条,所以从(pq+1)个加法器到5×1多路转换器的选路电路的实现和控制非常复杂。已有地址运算与选路电路中在多路转换器和用于地址间差的SRAM的加法器之间连接有2pq×log2(MN/pq)+pq条线,在m个多路转换器和m个桶型移位器之间。还有,在已有地址运算与选路电路中在m个多路转换器、在m个储存模块之间的连线数也有m×log2(MN/pq)条。然而,本发明地址运算与选路电路上的所有连线数仅为4m×log2(MN/pq)条,比过去减少一半还多。
表9给出的是地址运算与选路电路的门数同三星电子ASIC即KG76(0.6m门阵列库)的门数之比较例。
这一比较基于表10所示运算延迟时间假设。表10所示运算延迟时间设置满足如是条件:在当M×N×b=960×1280×24,pq>M时,媒介变量p和q两者取非32的8至32之间的2的乘幂之值。
门数比和运算延迟时间比是指已有地址运算与选路电路门数和运算延迟时间分别与本发明地址运算与选路电路门数和运算延迟时间之比。平均门数比和平均运算延迟时间比分别为1.198和1.295。门数比和运算延迟时间比相乘的平均值为1.549。本发明地址运算与选路电路标准化门数是除以p=q=8时的门数、然后再除以pq/64后所得值。标准化运算延迟时间是除p=q=8时的运算延迟时间得到的。将标准化门数和标准化运算延迟时间相乘可以求标准化结果。根据标准化结果,对本发明地址运算与选路电路来说,p和q的最佳值分别为8和8。之所以是这样的值,是由于标准化结果在M×N×b=960×1280×24时有最小值。标准化结果用于对地址运算与选路电路选择最佳p和q值。表11是被请求|(p1,q1)|和最佳|(p2,q2)|的对照表。这里,|(p1,q1)|和表示制造参数为p1和q1的缓冲储存装置。
在此,|(p1,q1)|和|(p2,q2)|中,p1与q1和p2与q2表示缓冲储存装置的p与q值。
譬如,当被请求|(32,8)|的地址运算与选路电路时,可以组合使用4个|(8,8)|地址运算与选路电路。若用|(8,8)|地址运算与选路电路分别组成|(8,16)|,|(16,8)|,|(16,16)|,|(8,32)|,|(32,8)|,|(16,32)|,|(32,16)|地址运算与选路电路,则按1.353平均运算延迟时间比的结果,运算延迟时间比将分别增加到1.353。
数据选路电路进行一次模运算和一次旋转运算,储存模块选择电路进行一次模运算和一次译码运算,所以,数据选路电路和储存模块选择电路的运算延迟时间比本发明地址运算与选路电路的运算延迟时间短。那么,假设m个储存模块存取时间比本发明地址运算与选路电路运算延迟时间短、地址运算与选路电路的m个储存模块之间有m个储存装置地址寄存器、数据选路电路和m个储存模块之间有m个储存装置缓冲寄存器,则本发明缓冲储存装置可以按地址运算与选路电路的运算延迟时间比单位的管路(pipeline)方式运行。
另外,若显示处理器在本发明地址运算与选路电路运算延迟时间内从缓冲储存装置对pq个图像点执行要素运算,则本发明帧缓冲显示装置整个性能平均可以比采用已有地址运算与选路电路的帧缓冲显示装置提高1.353倍。故此,本发明地址运算与选路电路可以比已有储存装置降低造价、减低控制复杂性、和提高速度。
以下,对已有那种支持同时对处于数据阵列任意位置的至少3种存取类型的数据进行存取、并兼顾地址运算电路和地址选路电路以及数据选路电路的硬件实现的储存装置方式,和本发明地址运算与地址选路、数据选路方式,从存取类型、间隔、数据阵大小限制、硬件价格、控制复杂性以及速度等诸方面作以比较。
对应于间隔的块、列、行、对角线、反对角线存取形态的本发明地址运算与选路电路,同已有储存装置相比,具有造价低、控制复杂性降低、速度加快等特点。
当pq<=md(m为素数)时,已有储存装置(A.Deb,IEEE Trans.Parallel Distrib.Syst.,Vol.7,No.6.pp.595-604,Jun.1996.)由m个储存模块和pq个处理部件构成。Lawrie和Vora(D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982.)以性pq矢量V(a,b,c,d)定义以下列线性函数形成的阵列要素即pq要素集合。
V(a,b,c,e)={A(i,j):i=ax+b,j=cx+e},0≤x<pq≤m
Lawrie和Vora(D.H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982)以如下公式求α(μ)即模块地址。
α(μ)=((a+cM)((-(b+eM+base))d′%m)+b+eM+base)/pq,
其中,(a+cM)d′=1%m已,base表示数据阵基准地址(i,j),M为阵的行数。
若(a+cM)d′=1%m,则当d′为m的倍数即间隔M,M+1,M-1时,不可求。这是由于正如下列各式所示那样,a和c值因存取形态而定义不同。
行:a=0,c=阳数间隔
列:c=0,a=阳数间隔
对角线:a=c=阳数间隔
反对角线:a=-c=阳数间隔
故,该储存装置(D,H.Lawrie and C.R.Vora,IEEE Trans.Comput.,vol.C-31,pp.435-442,May 1982.)存在间隔和数据阵大小以及储存模块数上的限制。
而本发明储存装置与上述已有储存装置不同,其没有数据阵大小上的限制。本发明储存装置的限制仅仅在于:按理论1,间隔一定不可以是储存模块数倍数。在已有储存装置(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986.,J.W.Park and D.T.Harper III,IEEE Symp.Parallel and Distributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEE Trans.Parallel Distrib.Syst..,vol.7,No.8,pp.855-860,Aug.1996.)中,在μ(i,j)右旋转之前要进行地址排列,故需要一个多路转换器和占用多路转换运算时间。而在本发明,由于地址运算电路与地址选路电路预先对地址间差作排列,故不需要多路转换器和占用多路转换运算时间。若在12种存取形态下由多路转换器实施地址运算与选路(J.W.Park,IEEE Trans.Comput.,vol.C-35,pp.669-674,July 1986.,J.W.Park and D.T.Harper III,IEEE Symp.Parallel andDistributed Processing,pp.444-451,Dec.1992.,J.W.Park and D.T.Harper III,IEEE Trans.Parallel Distrib.Syst.,vol.7,No.8,pp.855-860,Aug.1996.)的话,控制过程将会变得非常复杂。这是由于存取形态和间隔依赖于地址排列。还有,在储存装置(D.C.VanVoorhis and T.H.Morrin,IEEE Trans.Comput.,vol.C-27,pp.113-125,Feb.1978.)中的数据选路电路中必须要有μ(i,j)控制的多种右旋转变换器。根据Park(J.W.Park,IEEETrans.Comput.,vol.C-35,pp.669-674,July 1986)和Park同Harper(J.W.Park and D.T.Harper III,IEEE Symp.Parallel and Distributed Processing,pp.444-451,Dec.1992.,J.W.Parkand D.T.Harper III,IEEE Trans.Parallel Distrib.Syst.,vol.7,No.8,pp.855-860,Aug.1996.)提案,本发明储存装置的数据选路是由多路转换器和桶型移位器实施的。在该储存装置中,是以复杂、高价、慢速的纵横网络取代了以往储存装置数据选路电路内的多种右旋转变换器。本发明所提出的方案是使用多路转换和旋转的数据选路方法。
在此,对于12种存取形态具有阳间隔的12种数据选路形态,被减少到通过以ROM和log2(2(m-1))×2(m-1)译码器、3相缓冲选择器、桶型移位器来实现的间隔为r1(=r%m)的2种选路形态。另外,从表11可见,本发明地址运算、地址选路以及数据选路电路可以支持更多的存取类型和间隔。
可见,就地址运算、地址选路以及数据选路来说,本发明方法比已有技术方法在存取形态、间隔、数据阵大小上的限制、硬件造价、速度以及复杂性方面有很大改进。
(六)关于本发明的效果
综上所述,本发明防冲突储存装置比已有技术大有改进。其支持同时存取处于数据阵任意位置处的至少3种存取形态数据要素。而且,在储存装置的地址运算与地址选路电路和数据选路电路的硬件实现方面,也考虑和解决了存取形态、间隔以及数据阵大小限制、硬件造价、速度以及复杂性问题。
在多种行列运算和图像处理运算方面,利用具有pq个处理部件的SIMD处理器和具有m(m为素数,m>pq)个储存模块的储存装置可以提高速度。
对SIMD处理器来说,储存装置可以存取具有间隔和数据阵大小以及数据要素位置不受限制的数据阵内阳数间隔的多种形态的四角形块和8方向线性存取形态的pq个数据要素。
本发明具有素数个储存模块的防冲突储存装置,无论4方向四角形块阳数间隔关联的数据要素处于数据阵哪一个位置(东南块、西南块、西北块、东北块)或8方向线性中(东线、东南线、南线、西南线、西线、西北线、北线、东北线)哪一个线上,都支持同时对诸存取形态的pq个数据要素同时存取。
表1a
  储存技术   线型   选路方法   子阵存取形态  间隔   硬件实现   同时性   存取位置   PE负荷   储存模块数
  Harper重叠法   非线性   无记载   块,列,行  任意阳整数   有   无   任意   地址运算   pq
  HarperXOR方法   非线性   无记载   列  任意阳整数   有   无   任意   无   pq
  Oed和Lange交错方法   线性   移位   列  任意阳整数   有   无   任意   无   pq
  Harper歪储存法   线性   无记载   列  任意阳整数   有   无   任意   无   pq
  Raghavan等的任意交错方法   线性   无记载   列  任意阳整数   无   无   任意   无   pq
  BatcherXOR法   非线性   全混洗   列,行  1   有   有   任意   无   pq
  Frailonget等的XOR法   非线性   奥米加   块,列,行  任意阳整数(列,行,1块)   无   有   限制   无   pq
  Norton等的XOR法   非线性   反相基线   列  2的乘幂   有   有   限制   地址运算   pq
  Lee   非线性   Theta   四角块被分配块,列,行  1   无   有   任意   无   pq
  Kim和Kumar   非线性   无记载   列,行,对角线  1   有   有   限制   无   pq
  Raghavendra和Boppana   非线性   奥米加   四角块列,行,对角线  1   无   有   限制   地址运算   pq
  HarperXOR法   非线性   纵横式   各种形态块,列,行  1   有   有   限制   无   pq
表1b
  储存技术   线型   选路方法   子阵存取形态  间隔   硬件实现   同时性   存取位置   PE负荷   储存模块数
  Budnik &Kuck   线性   无记载   块,列,行,对角线,反对角线  1   无   有   任意   无   素数(>pq)
  Wijshoff   线性   无记载   列,行,对角线,反对角线  无记载   无   有   任意   无记载   素数(>pq)
  Lawrie   线性   奥米加   列,行,对角线,反对角线  1   无   有   任意   无   2N(N×N阵列)
  VanVoorhis &Morrin   线性   多路转换,旋转   块,列,行  1   有   有   任意   无   pq+1,pq2,2pq
  Park   线性   多路转换和旋转   块,列,行  1   有   有   任意   无   pq;1
  Lawrie &Vora   线性   纵横式   列,行,对角线,反对角线  1   有   有   任意   无   素数(>pq)
  Harper &林奈博格   线性   不需要   列,行,对角线  任意阳整数   有   无   任意   无   pq
  德宝歪储存法   线性   移位   块,列,行  任意阳整数   无   有   任意   无   pq
  Park &Harper   线性   多路转换和旋转   块,列,行  2(列),1(行),1(块)   有   有   任意   无   pq+1
  Park &Harper   线性   多路转换和旋转   块,列,行  2乘幂(列),1(行),1(块)   有   有   任意   无   pq+1
  Park   线性   多路转换和旋转   块,8方向线,5度间隔线  1   有   有   任意   无   pq+1
  Park   线性   多路转换和旋转   块,列,行,对角线,反对角线  任意阳整数   有   有   任意   无   pq+1
  本发明   线性   多路转换和旋转   4方向块,8方向线  任意阳整数   有   有   任意   无   素数(>pq)
表2
  地址间差用储存模块A   地址间差用储存模块B
  SEB   ((i%p+(k/q)r)/p)+((k%q)r)/q   (j%q+(k%q)r)/q-((k%q)r)/q
  SWB   ((i%p+(k/q)r)/p)-((k-(k/q)q)r)/q   (j%q-(k%q)r)/q+((k%q)r)/q
  NWB   ((i%p-(k/q)r)/p)-((k-(k/q)q)r)/q   (j%q-(k%q)r)/q+((k%q)r)/q
  NEB   ((i%p-(k/q)r)/p)+((k-(k/q)q)r)/q   (j%q+(k%q)r)/q-((k%q)r)/q
  EL   (kr)/q   (j%q+(k%q)r)/q-((k%q)r)/q
  SEL   ((i%p+kr)/p)+(kr)/q   (j%q+kr)/q-(kr)/q
  SL   ((i%p+kr)/p))
  SwL   ((i%p+kr)/p)-(kr)/q   (j%q-(k%q)r)/q+((k%q)r)/q
  WL   (j%q-kr)/q-(kr)/q   (j%q-kr)/q+(kr)/q
  NWL   ((i%p-kr)/p)-(kr)/q   (j%q-(k%q)r)/q+((k%q)r)/q
  NL   ((i%p-kr)/p))
  NEL   ((i%p-kr)/p)+(kr)/q   (j%q+(k%q)r)/q-((k%q)r)/q
表3
  存取形态   地址间差用储存模块A   地址间差用储存模块B
SEB   s·((i%p(((μr′)%m)/q)r)/p)+((((μr′)%m)%q)r)/q   (j%q+(((μr′)%m)%q)r/q-((((μr′)%m)%q)r)/q
  r·r′=1%m
SWB   s·((i%p+((((μ+(q-1)r)r′)%m)/q)r)/p)+(-(q-1)r+((((μ+(q-1)r)r′)%m)%q)r)/q   (j%q-(q-1)r+((((μ+(q-1)r)r′)%m)%q)r)/q-(-(q-1)r+((((μ+(q-1)r)r′)%m)%q)r/q
  r·r′=1%m
NWB   s·((i%p-(((μ(-r)′)%m/q)r)/p)-((((μ(-r)′)%m%q)r)/q   (j%q-(((μ(-r)′)%m%q)r)/q+((((μ(-r)′)%m%q)r)q
  (-r)·(-r)′=1%m
NEB   s·((i%p-(p-1)r+((((μ+(p-1)qr)r′)%m/q)r/p)+(((((μ+(p-1)qr)r′)%m)%q)r/q   (j%q+((((μ+(p-1)qr)r′)%m)%q)r/q-(((((μ+(p-1)qr)r′)%m)%q)r)/q
  r·r′=1%m
EL   (((μr′)%m)r/q   (j%+(((μr′)%m)%q)r)/q-((((μr′)%m)%q)r)/q
  r·r′=1%m
SEL   s·((i%p+((μ((q+1)r)′)%m)r)/p)+(((μ((q+1)r)′)%m)r/q   (j%q+(((μ((q+1)r)′)%m)%q)r/q-((((μ((q+1)r)′)%m)%q)r/q
  ((q+1)r)·((q+1)r)′=1%m
SL   s·((i%p+((μ(qr)′)%m)r)/p)
  (qr)·(qr)′=1%m
SWL   s·((i%p+((μ((q-1)r)′%m)r)/p)-(((μ((q-1)r)′)%m)r)/q   (j%q-(((μ((q-1)r)′)%m)%q)r)/q+((((μ((q-1)r)′)%m)%q)r)/q
  ((q-1)r)·((q-1)r)′=1%m
WL   -(((μ(-r)′)%m)r)/q   (j%q-(((μ(-r)′)%m)%q)r)/q+((((μ(-r)′)%m)%q)r)/q
  (-r)·(-r)′=1%m
NWL   s·((i%p-((μ(-(q+1)r)′)%m)r)/p)-(((μ(-(q+1)r)′)%m)r)/q   (j%q-(((μ(-(q+1)r)′)%m)%q)r/q+((((μ(-(q+1)r)′)%m)%q)r)/q
  (-(q+1)r)·(-(q+1)r)′=1%m
NL   s·((i%p-((μ(-qr)′)%m)r)/p))
  (-qr)·(-qr)′=1%m
NEL   s·((i%p-((μ(-(q-1)r)′)%m)r)/p)+(((μ(-(q-1)r)′)%m)r/q   (j%q+(((μ(-(q-1)r)′)%m)%q)r)/q-((((μ(-(q-1)r)′)%m)%q)r)/q
  (-(q-1)r)·(-(q-1)r)′=1%m
表4
  间隔r存取形态   减小到间隔(r1=r%M)的存取形态
  具有r的SEB   具有r1的SEB
  具有r的SWB   具有r1的SWB
  具有r的NWB   具有(-r1)%m的SEB
  具有r的NEB   具有(-r1)%m的SWB
  具有r的EL   具有r1的SEB
  具有r的SEL   具有((q+1)r1)%m的SEB
  具有r的SL   具有(qr1)%m的SEB
  具有r的SWL   具有((q-1)r1)%m的SEB
  具有r的WL   具有(-r1)%m的SEB
  具有r的NWL   具有(-(q+1)r1)%m的SEB
  具有r的NL   具有(-qr1)%m的SEB
  具有r的NEL   具有(-(q+1)r1)%m的SEB
表5a
  例2 间隔2SEB(14,15):I(14,15)、I(14,17)、I(16,15)、I(16,17)
图7μ(k)=(3,0,2,4)、图8α(k)=(119,120,135,136)以μ(k),α(k)排列、以×表示编号为1的没使用储存模块,则α(μ)=(120,×,135,119,136)
本发明处理过程i%p=0、j%p=1,r=2的情况下,ASEB((μ+μ(0))%m)=(0,17,1,32,16);各加法器输入B+(0,0,0,0,0);各加法器输入C=(0,17,1,32,16);图10α(k)=α(0)(=119)+ASEB((μ+μ(0))%m)=(119,136,120,151,135)约μ(0)(=3)右旋转、以×表示公式(103)没使用储存模块(μ(i,j)+kr)%m=(3+8)%5=1,则α(μ)=(120,×,135,119,136)
  例3 间隔3SWB(14,15):I(14,15)、I(14,12)、I(17,15)、I(17,12)
图7μ(k)=(3,0,4,1)图8α(k)=(119,118,135,134)以μ(k),α(k)排列、以×表示编号为2的没使用储存模块,则α(μ)=(118,134,×,119,135)
本发明处理过程i%p=0、j%p=1,r=3的情况下,ASWB((μ+μ(0))%m)=(0,16,-2,14,46);各加法器输入B+(0,0,1,1,1);各加法器输入C=(0,16,-1,15,47);图10α(k)=α(0)(=119)+ASWB((μ+μ(0))%m)=(119,135,118,134,166)约μ(0)(=3)右旋转、以×表示公式(104)没使用储存模块(μ(i,j)-(q-1)r+kr)%m=(3-3+12)%5=2,则α(μ)=(118,134,×,119,135)
  例4 间隔2 SEL(14,15):I(14,15)、I(16,17)、I(18,19)、I(20,21)
图7μ(k)=(3,4,0,1)、图8α(k)=(119,136,153,170)以μ(k),α(k)排列、以×表示编号为2的没使用储存模块,则α(μ)=(153,170,×,119,136)
本发明处理过程i%p=0、j%p=1,r=2的情况下,ASEL((μ+μ(0))%m)=(0,17,34,51,68);各加法器输入B+(0,0,0,0,0);各加法器输入C=(0,17,34,51,68);图10α(k)=α(0)(=119)+ASEL((μ+μ(0))%m)=(119,136,153,170,187)约μ(0)(=3)右旋转、以×表示公式(108)没使用储存模块(μ(i,j)+(q+1)kr)%m=(3+24)%5=2,则α(μ)=(153,170,×,119,136)
  例5 间隔2 SWL(14,15):I(14,15)、I(16,13)、I(18,11)、I(20,9)
图7μ(k)=(3,0,2,4)、图8α(k)=(119,134,149,164)以μ(k),α(k)排列、以×表示编号为1的没使用储存模块,则α(μ)=(134,×,149,119,164)
本发明处理过程i%p=0、j%p=1,r=2的情况下,ASWL((μ+μ(0))%m)=(-1,44,14,59,29);各加法器输入B+(1,1,1,1,1);各加法器输入C=(0,45,15,60,30);图10α(k)=α(0)(=119)+ASWL((μ+μ(0))%m)=(119,164,134,179,149)约μ(0)(=3)右旋转、以×表示公式(110)没使用储存模块(μ(i,j)+(q-1)kr)%m=(3+8)%5=1,则α(μ)=(134,×,149,119,164)
表5b
 例6   间隔3NWL(14,15):I(11,12)、I(8,9)、I(5,6)、I(2,3)
  图7μ(k)=(3,4,0,1)、图8α(k)=(119,86,68,35)以μ(k),α(k)排列、以×表示编号为1的没使用储存模块,则α(μ)=(68,35,×,119,86)
  本发明处理过程i%p=0,j%p=1,r=3的情况下,ANWL((μ+μ(0))%m)=(-1,-34,-52,-85,-103);各加法器输入B+(1,1,1,1,1);各加法器输入C=(0,-33,-51,-84,-102);图10α(k)=α(0)(=119)+ANWL((μ+μ(0))%m)=(119,86,68,35,17)约μ(0)(=3)右旋转、以×表示公式(112)没使用储存模块(μ(i,j)-(pq-1)qr-(pq-1)r+(q+1)kr)%m=(3-18-9+36)%5=2,则α(μ)=(68,35,×,119,86)
 例7   间隔4NEL(14,15):I(14,15)、I(10,19)、I(6,23)、I(2,27)
  图7μ(k)=(3,4,0,1)、图8α(k)=(119,89,59,29)以μ(k),α(k)排列、以×表示编号为1的没使用储存模块,则α(μ)=(59,29,×,119,89)
  本发明处理过程i%p=0,j%p=1,r=4的情况下,ANEL((μ+μ(0))%m)=(0,-30,-60,-90,-120);各加法器输入B+(0,0,0,0,0);各加法器输入C=(0,-30,-60,-90,-120);图10α(k)=α(0)(=119)+ANEL((μ+μ(0))%m)=(119,89,59,29,-1)约μ(0)(=3)右旋转、以×表示公式(114)没使用储存模块(μ(i,j)-(pq-1)qr+(pq-1)r+(q-1)kr)%m=(3-24+12+16)%5=2,则α(μ)=(59,29,×,119,89)
表6
  线数(M)   图像点数(N)
  485   512
  485   640
  512   512
  600   800
  768   1024
  900   1152
  960   1280
  1024   1024
  1024   1280
  1080   1920
  1200   1600
表7
  硬件构成   运算延迟时间
  VanVoorhis&Morrin   m×(log2(MN/pq)×(log2(N/q)比特乘法器)(N非2乘幂时):m×(log2m比特加法器):m×(模(m)运算器):m×(log2M比特加法器):m×(log2N比特加法器):m×(log2MN比特加法器):   1乘算时间((N非2乘幂时)+1×1log2m比特加时间+1×1模(m)运算时间+Max{1log2M比特加时间、1log2N比特加时间}+1×1log2(MN/pq)比特加时间
  Lawrie &Vora   1024×5比特ROM(模(m)运算)素数发生器用4×(1024×5比特ROM+23比特乘法器+23比特加法器)4×2×(1024×2比特ROM+23×(3×1多路转换器)+23比特加法器+23×(2×1多路转换器)+1024×1比特ROM+23比特加法器)   1024×5比特ROM存取时间+1024×5比特ROM存取时间+23比特乘算时间+23比特加时间+1024×2比特ROM存取时间+3×1多路转换时间+23比特加时间
  Park   1×(log2(MN/pq)×(log2(N/q)比特乘法器)(N非2乘幂时):m×(log2(MN/pq)比特加法器):pq×(log2(MN/pq)比特5×1多路转换器)1×(log2(MN/pq)比特m桶型移位器)   1log2(MN/pq)×(log2(N/q)比特乘算时间)(N非2乘幂时)+3×1log2(MN/pq)比特加时间+5×1多路转换时间+1log2(MN/pq)比特m桶型移位时间
  Park &Harper   1×(log2(MN/pq)×(log2(N/q)比特乘法器)(N非2乘幂时):1×(log2(4p+q)比特5×1多路转换器):1×(log2(3q)比特5×1多路转换器):2×(1比特5×1多路转换器):1×(log2(4p+q)比特加法器):1×(log2(3q)比特加法器):(pq+1)×(log2(MN/pq)比特加法器):(4p+q)×pqlog2(MN/pq)比特+3q×q比特SRAM用m×(log2(MN/pq)比特5×1多路转换器):1×(log2(MN/pq)比特m桶型移位器)   Max{1log2(MN/pq)×(log2(N/q)比特乘算时间+1log2(MN/pq)比特加时间、1(5×1)多路转换时间+Max{1log2(4p+q)比特加时间,1log2(3q)比特加时间}+1SRAM存取时间}(N非2乘幂时):或Max{1log2(MN/pq)比特颅し换箕粗、1(5×1)多路转换时间+Max{1log2(4p+q)比特加时间、1log2(3q)比特加时间}+1SRAM存取时间}(N非2乘幂时):+1log2(MN/pq)比特加时间+1(5×1)多路转换时间+1log2(MN/pq)比特m桶型移位时间
  本发明   (i%p)s用1×(M/p×log2(MN/pq)比特SRAM)(N非2乘幂时):1×(log2(4p+1)比特5×1多路转换器):1×(log2(4q+1)比特5×1多路转换器):2×(1比特5×1多路转换器):1×(log2(4p+1)比特加法器):1×(log2(4q+1)比特加法器):(m+1)×(log2(MN/pq)比特加法器):(4p+1)×mlog2(MN/pq)比特+(4q+1)×m比特SRAM1×(log2(MN/pq)比特m桶型移位器)   Max{M/p×log2(MN/pq)比特SRAM存取时间(N非2乘幂时):+1log2(MN/pq)比特加时间、1(5×1)多路转换时间+Max{1log2(4p+1)比特加时间+(4p+1)×mlog2(MN/pq)比特SRAM存取时间,1log2(4q+1)比特加时间+(4q+1)×m比特SRAM存取时间}+1log2(MN/pq)比特加时间+1log2(MN/pq)比特m桶型移位时间
注:Max{a,b}是指取a,b之中大者。
表8
  Park & Harper   本发明
  p=q=8场合硬件构成要素   15×8比特乘法器   不需要
  不需要   (i/p)s用SRAM:120×15比特
  1×(6比特5×1多路转换器)   2×(6比特5×1多路转换器)
  1×(5比特5×1多路转换器)
  2×(1比特5×1多路转换器)   同左
  1×(6比特加法器)   2×(6比特加法器)
  1×(5比特加法器)
  65×(15比特加法器)   68×(15比特加法器)
  67×(15比特5×1多路转换器)   不需要
  地址间差用SRAM40×960比特+24×8比特   地址间差用SRAM33×1005比特+33×67比特
  15比特67桶型移位器   同左
  p=q=8场合运算延迟时间   Max{15×8比特乘算时间+15比特加时间、5×1多路转换时间+6比特加时间+40×960比特SRAM存取时间}+15比特加时间+5×1多路转换时间+15比特67桶型移位时间   Max{120×15比特SRAM存取时间+15比特加时间、5×1多路转换时间+6比特加时间+33×1005比特SRAM存取时间}+15比特加时间+15比特67桶型移位时间
  p=q=16场合硬件构成要素   13×7乘法器   不需要
  不需要   (i/p)s用SRAM:60×13比特
  1×(7比特5×1多路转换器)   2×(7比特5×1多路转换器)
  1×(6比特5×1多路转换器)
  2×(1比特多路转换器)   同左
  1×(7比特加法器) 2×(7比特加法器)
  1×(6比特加法器)
  257×(13比特加法器)   258×(13比特加法器)
  257×(13比特5×1多路转换器)   不需要
  地址间差用SRAM80×3328比特+48×16比特   地址间差用SRAM65×3341比特+65×257比特
  13比特257桶型移位器   同左
  p=q=16场合运算延迟时间   Max{13×7比特乘算时间+13比特加时间、5×1多路转换时间+7比特加时间+80×3328比特SRAM存取时间}+13比特加时间+5×1多路转换时间+13比特257桶型移位时间   Max{60×13比特SRAM存取时间+13比特加时间、5×1多路转换时间+7比特加时间+65×3341比特SRAM存取时间}+13比特加时间+13比特257桶型移位时间
注:Max{a,b}是指取a,b之中大者。
表9
  p=8q=8   p=8q=16   p=16q=8   p=16q=16   p=8q=32   p=32q=8   p=16q=32   p=32q=16
  Park & Harper
  门数(K)   182   360   488   995   843   1553   2149   3027
  运算延迟时间(ns)   23   24   24   24   24   25   25   25
  本发明
  门数(K)   152   293   454   861   595   1477   1558   2805
  运算延迟时间(ns)   17   18   18   19   19   19   20   20
  比较
  门数比   1.197   1.229   1.075   1.156   1.417   1.051   1.379   1.079
  运算延迟时间比   1.353   1.333(1.353)   1.333(1.353)   1.263(1.353)   1.263(1.353)   1.316(1.353)   1.250(1.353)   1.250(1.353)
  门数比×运算延迟时间比   1.620   1.638   1.433   1.460   1.790   1.383   1.724   1.349
  本发明
  标准化门数   1.000   0.964   1.493   1.416   0.979   2.429   1.306   2.307
  标准化运算延迟时间   1.000   1.059   1.059   1.118   1.118   1.118   1.176   1.176
  标准化结果   1.000   1.021   1.581   1.583   1.095   2.716   1.536   2.173
表10
  构成要素   运算延迟时间(ns)
  15×8乘法器   9
  14×8乘法器   9
  14×7乘法器   9
  13×8乘法器   9
  13×7乘法器   8
  13×6乘法器   8
  12×6乘法器   8
  12×7乘法器   8
  15比特加法器   2
  13比特加法器   2
  12比特加法器   2
  8比特加法器   1
  7比特加法器   1
  6比特加法器   1
  SRAM   4
  ROM   4
  5×1多路转换器   1
  67桶型移位器   9
  131桶型移位器   10
  257桶型移位器   11
  517桶型移位器   12
表11
  被请求|(p1、q1)|   |(p2、q2)最佳排列|
  |(8、8)|   |(8、8)|使用一个|(8、8)|
  |(8、16)|   |(8、8)||(8、8)|使用两个|(8、8)|
  |(16、8)|   |(8、8)||(8、8)|使用两个|(8、8)|
  |(16、16)|   |(8、8)||(8、8)||(8、8)||(8、8)|使用四个|(8、8)|
  |(8、32)|   |(8、8)||(8、8)||(8、8)||(8、8)|使用四个|(8、8)|
  |(32、8)|   |(8、8)||(8、8)||(8、8)||(8、8)|使用四个|(8、8)|
  |(16、32)|   |(8、8)||(8、8)||(8、8)||(8、8)||(8、8)||(8、8)||(8、8)||(8、8)|使用八个|(8、8)|
  |(32、16)|   |(8、8)||(8、8)||(8、8)||(8、8)||(8、8)||(8、8)||(8、8)||(8、8)|使用八个|(8、8)|

Claims (4)

1、一种防冲突存储装置,用于减少对于具有pq个存储部件的单一指令多数据流处理装置中的存储装置的存取时间,所述防冲突存储装置包括:
m个存储模块,其中m、p、q为正整数,并且m>p*q;
地址计算和路由电路,用于计算数据单元的m个地址,并且将这些数值路由到m个存储模块;
存储模块选择电路,用于选择将被存取的p*q个存储模块;
数据寄存器,用于存储指定的子阵类型、基坐标以及所述子阵类型所需的间隔信息;以及
数据路由电路,用于将所述数据寄存器中的数据路由到所述m个存储模块;
其中所述防冲突装置支持对于多种子阵类型的p*q个数据单元的同时存取,这些子阵类型包括4方向矩形块类型以及8方向线形类型,所述4方向矩形块类型包括东南块、西南块、西北块、东北块,所述8方向线形类型包括正东线形、东南线形、正南线形、西南线形、正西线形、西北线形、正北线形、东北线形,这些类型中的每一个是位于数据单元阵中的任何地方的子阵的类型,其中这些数据单元通过正整数的固定间隔而相互关联。
2、根据权利要求1的防冲突存储装置,其中所述地址计算和路由电路包括:
4个5×1的多路复用器,用于接收基坐标、子阵类型以及间隔信息;
第一和第二SRAM,用于预先排列并存储地址间差;
用于存取(i/p)*s值的第三SRAM;
m+3个加法器,其中两个加法器用于将所述多路复用器的输出值提供给所述第一和第二SRAM,一个加法器用于接收来自所述第三SRAM的输出值用以进行加法运算;
桶形移位器,用于根据所述数据路由电路的旋转信号,将所述m个加法器的输出提供给m个存储模块。
3、一种使用防冲突存储装置的地址计算和数据路由的方法,所述方法包括步骤:
对于每个子阵类型和每个固定间隔,预先排列p×m个地址间差和q×m个地址间差;
对于每个子阵类型和每个固定间隔,将预先排列的p×m个地址间差和q×m个地址间差分别存储在存储模块A和存储模块B中;
根据所要求的子阵类型、i%p和j%q以及所述固定间隔,从存储模块A和存储模块B中读取m个地址间差;
将读取的m个地址间差与基地址α(i,j)相加,得到m个地址;
对于所有12个子阵类型和固定间隔,将m个地址旋转μ(0);
将旋转计算后的m个地址路由到m个存储模块。
CNB01132936XA 2001-08-10 2001-09-10 防冲突储存装置以及采用该装置的地址运算与数据选路方法 Expired - Fee Related CN1306416C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2001-0048343A KR100401946B1 (ko) 2001-08-10 2001-08-10 주소계산과 자료이동방법 및 이를 이용한 충돌회피 기억 장치
KR48343/2001 2001-08-10

Publications (2)

Publication Number Publication Date
CN1402136A CN1402136A (zh) 2003-03-12
CN1306416C true CN1306416C (zh) 2007-03-21

Family

ID=19713092

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB01132936XA Expired - Fee Related CN1306416C (zh) 2001-08-10 2001-09-10 防冲突储存装置以及采用该装置的地址运算与数据选路方法

Country Status (4)

Country Link
US (1) US6845423B2 (zh)
JP (1) JP3802783B2 (zh)
KR (1) KR100401946B1 (zh)
CN (1) CN1306416C (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7415161B2 (en) * 2004-03-25 2008-08-19 Faraday Technology Corp. Method and related processing circuits for reducing memory accessing while performing de/compressing of multimedia files
JP3985797B2 (ja) * 2004-04-16 2007-10-03 ソニー株式会社 プロセッサ
GB0420004D0 (en) * 2004-09-09 2004-10-13 Koninkl Philips Electronics Nv Interconnections in SIMD processor architectures
TWI298448B (en) * 2005-05-05 2008-07-01 Ind Tech Res Inst Memory-based fast fourier transformer (fft)
US20070208794A1 (en) * 2005-12-13 2007-09-06 Prashant Jain Conflict-free memory for fast walsh and inverse fast walsh transforms
US7650483B2 (en) * 2006-11-03 2010-01-19 Arm Limited Execution of instructions within a data processing apparatus having a plurality of processing units
KR100874949B1 (ko) 2006-11-15 2008-12-19 삼성전자주식회사 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조
EP2138937A4 (en) 2007-04-12 2011-01-26 Nec Corp DATA PROCESSING DEVICE OF ARRAY PROCESSORYPSY
KR100922732B1 (ko) * 2007-12-10 2009-10-22 한국전자통신연구원 메모리 액세스 충돌 감소 장치 및 방법
US9939413B2 (en) 2008-01-09 2018-04-10 Surf Technology As Measurement and imaging of scatterers with memory of scatterer parameters using at least two-frequency elastic wave pulse complexes
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
CN110347638A (zh) * 2018-04-08 2019-10-18 北京嘉楠捷思信息技术有限公司 Asic阵列、数据处理板以及区块挖掘方法和设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1208891A (zh) * 1997-08-08 1999-02-24 株式会社东芝 盘存储装置的数据更新方法和盘存储控制装置
CN1261966A (zh) * 1997-06-30 2000-08-02 博普斯公司 多重阵列处理器
CN1271437A (zh) * 1997-10-10 2000-10-25 博普斯公司 流形阵列处理方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4355376A (en) * 1980-09-30 1982-10-19 Burroughs Corporation Apparatus and method for utilizing partially defective memory devices
KR900000114B1 (ko) * 1986-12-29 1990-01-20 박종원 영상처리용 메모리시스템
JPH05290188A (ja) * 1992-04-15 1993-11-05 Fujitsu Ltd 超並列計算機
KR0121295B1 (ko) * 1993-09-18 1997-11-17 박종원 영상 분석처리의 간격허용 다중접근 기억장치
KR0119725B1 (ko) * 1994-04-14 1997-10-29 조백제 선형변환 방법을 이용한 영상처리용 병렬기억장치
KR20020009247A (ko) * 2000-07-25 2002-02-01 서평원 다중프로세스 시스템에서 비수행 프로세스의 데이터에접근하는 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1261966A (zh) * 1997-06-30 2000-08-02 博普斯公司 多重阵列处理器
CN1208891A (zh) * 1997-08-08 1999-02-24 株式会社东芝 盘存储装置的数据更新方法和盘存储控制装置
CN1271437A (zh) * 1997-10-10 2000-10-25 博普斯公司 流形阵列处理方法和装置

Also Published As

Publication number Publication date
KR20030014023A (ko) 2003-02-15
US6845423B2 (en) 2005-01-18
JP2003067361A (ja) 2003-03-07
JP3802783B2 (ja) 2006-07-26
US20030126351A1 (en) 2003-07-03
KR100401946B1 (ko) 2003-10-17
CN1402136A (zh) 2003-03-12

Similar Documents

Publication Publication Date Title
CN1306416C (zh) 防冲突储存装置以及采用该装置的地址运算与数据选路方法
CN1265280C (zh) 扩展整数的计算域的范围
CN1260979C (zh) 图像处理装置及系统、解码装置、编码装置及编码方法
CN1890630A (zh) 在寄存器和存储器之间移动数据的数据处理设备和方法
CN1186714C (zh) 高基除法器及方法
CN1162010C (zh) 图象译码设备和图象存储器
CN1894659A (zh) 在寄存器和存储器之间移动数据的数据处理设备和方法
CN1960190A (zh) Ldpc码校验矩阵构造方法及利用该方法的编码解码装置
CN1200571C (zh) 正交变换、逆正交变换方法及装置、编码、解码方法及装置
CN1509475A (zh) 存储单元电路、存储设备、运动矢量检测器、和运动补偿预测编码器
CN101040306A (zh) 伪随机数生成装置
CN1726669A (zh) 数据分割方法和使用异或运算的装置
CN1442797A (zh) 数据处理装置和程序
CN1429028A (zh) 预测装置、编辑装置、逆预测装置、解码装置及运算装置
CN1229758C (zh) 正交变换图像的分辨率变换装置和方法
CN1066834C (zh) 快速90度旋转双态图象的系统
CN1254110C (zh) 图像处理方法和图像处理装置
CN1182724C (zh) 压缩和解压缩图像信号的方法及其装置
CN1253780C (zh) 小键盘输入
CN1742270A (zh) 运算处理装置、运算处理装置设计方法以及逻辑电路设计方法
CN1530813A (zh) 小键盘输入
CN1746828A (zh) 小键盘输入
CN1530812A (zh) 小键盘输入
CN1768324A (zh) 可编程序逻辑装置
CN1831737A (zh) 小键盘输入

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070321

Termination date: 20190910

CF01 Termination of patent right due to non-payment of annual fee