이하, 첨부된 도면을 참조로 본 발명에 따른 충돌회피 기억장치의 구성과 그 기억장치를 이용한 주소계산 및 자료이동 방법을 설명하기로 한다.
자료의 기억 모듈 번호를 결정하는 기억 모듈 할당 함수는 다음과 같다
(i, j) = (iq+j) % m …(13)
기억 모듈 할당함수(13)는 m=pq+1, 2pq, pq2에 대해서는 Van Voorhis 과 Morrin[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, 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가지 접근유형 (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개의 서로 다른 기억 모듈내에 위치한다.
기억 모듈 내의 자료들의 주소를 결정하는 주소 할당 함수는 아래의 식 (14)와 같다.
(i, j) = (i/p)s + j/q …(14)
여기서 S는 ┌N/q ┐와 같거나 큰 정수이고 '/'는 정수형 나눗셈을 나타낸다. 이 함수는 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]와 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)는 다음과 같이 나타낼 수 있다.
μ(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)에 요구되어진 자료들 중 첫 번째 자료의 μ(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%m.
식(18)에서 k대신에 ((μ(k) - μ(0))ㆍλ')%m을 쓰면서, α'(k) 를 다음과 같이 쓸 수 있다.
α'(k)=α'(((μ(k) -μ(0))ㆍλ')%m)
= α(((μ(k) - μ(0))ㆍλ')%m) - α(0), 0 ≤ k < pq …(20)
α'(k) (0 ≤k < pq)는 기억 장치내에 사용되어진 pq개의 자료들의 주소간의 차이들이다. 여기에서 자료들은 기준주소 (i, j)의 자료로부터 변형된 행 우선으로 정렬되어진다. 기억 모듈 번호에 따라 기억 모듈 "0"부터 주소간의 차(20)들의 정렬에 의해 α'(μ)를 다음과 같이 구할 수 있다.
α'(μ)
= α'(((μ- μ(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)의 사용은 매우 복잡하다. (21)식에 μ대신 (μ+ μ(0))%m을 넣으면, 아래 식에 따라 기억 모듈 μ(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) + (j%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의 주소간의 차들은 가산기의 입력 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 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.]는 기억주소 덧셈과 식(47)의 블록, 식(51)의 행, 식(53)의 행의 접근 유형의 주소간의 차들에 의해 pq주소들을 계산한다. 그래서 주소이동방법은 12접근형태들인 (1)~(12)의 주소가 한계치 p-i%p 또는 q-j%q뿐 아니라 양수 간격의 다양성 때문에 12가지 접근 형태 (1)~(12)와 간격들의 주소간의 차 계산 (47)~(58)의 구현으로 주소이동 방법이 더욱 복잡해진다. 요청된 자료들의 기억모듈 번호들이 첫 번째 자료의 기억 모듈 번호부터 순서대로 미리 정렬되어 있고, 기억 모듈 A와 B에 저장되어 있으면, 주소간의 차들에 기준주소 α(i, j)를 더하고 모든 12가지 접근 형태 (1)~(12)와 간격을 첫 번째 자료의 기억 모듈과 같은 값에 의해 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.
(83)식에서 μ대신 (μ+μ(0))%m으로 대치하면 다음식에 의해 μ(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)의 주소간의 차들
SWB(i, j, r)의 식(72)의 번호들이 식(19)내에 없기 때문에 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)
그래서 μ번째의 모듈의 남동쪽 블록(SWB)의 주소간의 차 ASWB(μ)는 식 (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이다
식(87)에서 μ대신에 ( μ+ μ(0) + (q-1)r)%m을 써서 다음식에 의해 μ(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 x p x m x #r x log2( MN / pq )비트 만큼과 기억 모듈 B에 8 x q x m x #r 비트만큼이다. 동쪽 선형과 서쪽선형의 주소간의 차들을 k, r 그리고 j%p에 영향을 받는다. 또한 주소간의 차들의 크기는 기억 모듈 A에 2 x q x m x #r x log2( MN / pq )비트와 기억 모듈 B에 2 x q x m x #r비트이다. 남쪽 선형과 북쪽 선형의 주소간의 차들은 k, r, i%p에 영향을 받으며 주소간의 차들의 크기는 기억 모듈 B에 2 x q x m x #r x log2(MN/(pq))비트이다. 남쪽선형과 북쪽 선형의 주소간의 차들은 j%q에 영향을 받지 않기 때문에 기억 모듈 B에 주소간의 차들이 없다. 그래서 제안된 기억 장치의 주소간의 차들에 전체 크기는 (12 x p x m x log2( MN / pq ) + 10 x q x m ) x #r 비트이다. 제안된 방법과 기억 장치의 단점은 12가지 접근 형태와 간격 (1)~(12)전체에 대한 [표 3]의 주소간의 차들을 저장하는데 기억 모듈 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) 위의 m개의 주소는 12가지 접근 형태와 간격 (1)~(12) 전체에 대해 μ(0)에 의해 회전된다.
5) 계산된 m개의 주소는 m개의 기억 모듈로 이동된다.
자료 레지스터에서 m개의 기억 모듈들로 자료를 이동시키는 자료이동회로 역할은 적절한 기억 모듈에 pq개의 자료들을 이동시키는 것이다. pq개의 자료에 대한 기억 모듈의 번호는 식 (71)~(82)에서의 주소들과 같다. 그래서 다음의 수식에 따라 pq개의 자료를 정렬시킨 후 이 자료들의 기억 모듈번호를 가지고 기억 모듈 번호 0부터 시작되는 오름차순 정렬을 위해 오른쪽 회전이 μ(i, j)만큼 수행되어진다.
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을 대입함으로써 북서쪽 블록(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대신 (-r)%m을 대입함으로써 북동쪽 블록(NEB)을 구할 수 있다.
동쪽선형(EL)
식(93)의 동쪽선형(EL)의 자료이동 형태에 대해 간격 r인 기억 모듈 번호들인 (kr)%m은 식(89)의 남동쪽 블록(SEB)의 자료이동 형태에 대한 간격 r인 기억 모듈 번호들과 같다. 그래서 식(101)의 남동쪽 블록(SEB)의 (m-1)개의 서로 다른 이동 경로들을 이용하여 간격 r대신 r%m을 대입하여 동쪽선형(EL)의 경로들을 구할 수 있다.
남동쪽선형(SEL)
식(94)의 남동쪽 선형(SEL)의 자료 이동 형태에 대해 간격 r인 기억 모듈 번호들인 ((q+1)kr)%m은 식(89)의 남동쪽 블록(SEB)의 자료이동 형태에서 간격 ((q+1)r)%m인 기억 모듈 번호들인 (kr)%m과 같다. 그래서 식(101)의 남동쪽 블록(SEB)의 (m-1)개의 서로 다른 이동경로들을 이용하여 간격 r 대신 ((q + 1)r)%m을 대입함으로써 남동쪽 선형(SEL)의 경로들을 구할 수 있다.
남쪽선형(SL)
식(95)의 남쪽 선형(SL)의 자료이동 형태에 대해 간격 r인 기억 모듈 번호들인 (qkr)%m은 식(89)의 남동쪽 블록(SEB)의 자료 형태에 대해 간격 (qr)%m인 기억 모듈 번호들인 (kr)%m과 같다. 그래서 식(101)의 남동쪽 블록(SEB) 의 (m-1)개의 서로 다른 이동 경로들을 이용하여 간격 r대신 (qr)%m을 대입함으로써 남쪽선형(SL)의 경로들을 구할 수 있다.
남서쪽 선형(SWL)
식(96)의 남서쪽 선형(SWL)의 자료이동 형태에 대해 간격 r인 기억 모듈 번호들인 ((q-1)kr)%m은 식(89)의 남동쪽 블록(SEB)의 자료 이동 형태에서 간격 ((q 1) r)%m인 기억 모듈 번호들인 ((kr)%m)과 같다. 그래서 식(101)의 남동쪽 블록(SEB)의 (m-1)개의 서로 다른 이동 경로들을 이용하여 간격 r대신 ((q-1)r)%m을 대입함으로써 남서쪽 선형(SWL)의 경로들을 구할 수 있다.
서쪽선형(WL)
식(97)의 서쪽선형(WL)의 자료이동 형태에 대해 간격 r인 기억 모듈 번호들인 (-kr)%m은 식(89)의 남동쪽 블록(SEB)의 자료이동형태들에서 기억 모듈 번호들인 (kr) % m에 간격 (-r)%m으로 넣은 (k(-r))%m)과 같다. 그래서 식(101)의 남동쪽 블록(SEB)의 (m-1)개의 서로 다른 이동 경로들을 이용하여 간격 r대신 (-r)%m을 대입함으로써 서쪽선형(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)개의 서로 다른 이동 경로들을 이용하여 간격 r대신 (-(q+1)r)%m을 대입함으로써 북서쪽선형(NWL)의 경로들을 구할 수 있다.
북쪽선형(NL)
식(99)의 북쪽선형(NL)의 자료이동 형태에 대해 간격 r인 기억 모듈 번호들인 (-qkr)%m은 식(89)의 남동쪽 블록(SEB)의 자료이동형태들에서 기억 모듈 번호들인 (kr)%m에 간격 (-qr)%m 으로 넣은 (k(-qr))%m과 같다. 그래서 식(101)의 남동쪽 블록(SEB)의 (m-1)개의 서로 다른 이동 경로들을 이용하여 간격 r대신 (-qr)%m을 대입함으로써 북쪽선형(NL)의 경로들을 구할 수 있다.
북동쪽선형(NEL)
식(100)의 북동쪽선형(NEL)의 자료이동 형태에 대해 간격 r인 기억 모듈 번호들인 (-(q1)kr)%m은 식(89)의 남동쪽 블록(SEB)의 자료이동형태들에서 기억 모듈 번호들인 (kr)%m에 간격 (-(q1)r)%m 으로 넣은 (k(-(q1)r))%m과 같다. 그래서 식(101)의 남동쪽 블록(SEB)의 (m-1)개의 서로 다른 이동 경로들을 이용하여 간격 r대신 (-(q1)r)%m을 대입함으로써 북동쪽선형(NEL)의 경로들을 구할 수 있다.
[표 4]에 감소된 이동 형태들이 나타나 있다.
12가지 접근 형태에 대한 전체 이동형태는 2(m-1)개이다. 그래서 자료 이동회로는 간격 (1)~(12)인 12가지 접근 형태에 대해 식(101)의 SEB와 식(102)의 SWB, 두개에 대한 이동 형태만 필요하다.
자료 이동 회로는 도 4에 나타나 있다.
여기서 ROM, log2(2(m - 1)) x 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, in Proc. Int. Conf. Parallel Processing , 1990, pp.76-83., D. H. Lawrie, IEEE Trans. Comput ., vol. C-24, no. 12, pp. 1145-1155, Dec. 1975.]이나 Theta네트워크 [D. Lee, "Scrambled storage for parallel memorysystems," in Proc. Int. Symp. on Comp. Architecture, pp. 232-239, 1988.]에서 경로들의 충돌 때문에 구현될 수 없다. 본 발명에 따른 자료 이동 회로는 Crossbar네트워크[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.]에서 단순히 비교되어졌다. READ연산을 위한 이동 형태는 정해져 있다.
간격을 가진 열, 블록, 행에 대한 기억 모듈 선택회로는 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에 대해 식 (103)~(114)내의 k를 pq로 대치해서 얻은 접근되지 않는 기억 모듈 번호 하나를 디코더에 제공하고, m개의 반전된 디코더의 결과는 pq개의 접근되는 기억 모듈의 접근 신호와 접근되지 않는 기억 모듈의 비접근 신호로 사용된다.
주소계산과 라우팅 그리고 기억 모듈의 예
도 6은 p=q=2, M x N=32 x 32 그리고 m=5일때 기억 모듈 할당 함수에 의해 할당된 각 자료의 기억 모듈번호들이 나타나 있다. 도 7은 p=q=2, M x N=32 x 32, 그리고 s=16일때 주소할당 함수에 의해 할당된 각 자료의 주소들이 나타나 있다. 도 8은 p=q=2, M x N=32 x 32, S=16 그리고 m=5에 대한 주소계산 회로도와 주소이동 회로도이다. 여기서 사용된 12가지 접근 형태와 간격 r=1, 2, 3, 4인 기억 모듈 A와 B의 주소간의 차는 도 9에 나타나 있다. 본 발명에서 나타내는 주소계산과 주소이동 그리고 기억 모듈 선택 방법이 다음의 예들에서 보여진다.
예 1) 간격 1인 위치(14, 15)의 남동쪽 블록(SEB)에 대해 행 우선 순위로 변경된 I(14, 15), I(14, 16), I(15, 15), I(15, 16)의 기억 모듈 번호 μ(k) =(3, 4, 0, 1)를 그림7로부터 구할 수 있고, 주소들 α(k)=(119, 120, 119, 120)을 도 7로부터 구하여 기억 모듈 번호에 따라 주소들을 정렬하면 α(μ)=(119, 120, x, 119, 120)이 된다. 여기의 x는 접근되지 않는 기억 모듈 번호 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, x, 119, 120)이 구해진다.
다른 예는 [표 5a] 및 [표 5b]에 나타나 있다.
텍스트와 이미지의 빠르고 정확한 수정과 디스플레이에 대한 많은 요청에 따라 고속의 고해상도 그래픽 디스플레이 장치에 대한 수요가 증가되고 있다. 기존의 그래픽 디스플레이 장치들은 수정과 디스플레이 하기 위해 2차원 영상배열을 포함하는 버퍼 기억 장치를 이용한다. 그래픽 디스플레이 장치는 주 컴퓨터의 명령에 따라 버퍼 기억 장치의 영상점들을 새롭게 수정한다. 버퍼 기억 장치로부터 영상점들을 읽고 레스터 스캐닝(raster scanning)형태에 따라 디스플레이로 영상점들을 보낸다. 고속의 고해상도 그래픽 디스플레이 장치에서 버퍼 기억 장치 내용의 수정 시간을 줄이기 위해 고속의 버퍼 기억 장치가 요구된다. 한 기억 칩에 포함되어지는 비트수들이 칩 기술의 발전에 따라 증가되고 있다. 그러므로 여러 접근 형태에 따른 많은 영상점들의 병렬적 접근을 위해 대용량의 단일 기억 모듈에 대해접근 시간을 줄이는 것보다는 상대적으로 용량은 적더라도 한 기억 칩에 들어가는 기억 모듈의 수를 증가시키는 것이 고속의 버퍼 기억 장치를 위해 바람직하다. 그래서 버퍼 기억 장치의 내용을 수정하는 시간을 줄이기 위한 영상 접근 형태에 따른 많은 영상점들을 병렬적으로 접근하는 버퍼 기억 장치가 필요하다.
이하에서 그래픽 디스플레이 장치의 버퍼 기억 장치를 위해 사용되어질 블록, 수평, 수직, 대각선, 역대각선 접근 형태를 가진 기억 장치에 대해 알아보고 기존의 기억 장치를 비교한다.
블록, 수평, 수직, 대각선, 역대각선 접근 형태를 위한 기억 장치
고속의 고해상도 그래픽 디스플레이 장치를 위한 효율적인 버퍼 기억 장치를 알아본다. 이 기억 장치는 이차원 영상에서 블록 (P x q), 수평(1 x pq), 수직(pq x 1), 대각선, 역대각선 접근형태의 pq개의 영상점들에 대해 병렬 접근을 제공한다.
여기에서 사용되는 매개변수 p와 q는 모두 2의 멱(power)이다.
도 10에 나타난 그래픽 디스플레이 장치는 일반적으로 주 컴퓨터, 디스플레이 처리기, 버퍼 기억 장치(100), 비디오 생성기, 그리고 디스플레이로 구성되어 있다. 디스플레이 처리기는 주 컴퓨터의 명령어에 따라 버퍼 기억 장치내의 영상점들을 새롭게 수정한다.
비디오 생성기는 버퍼 기억 장치에서 영상점들을 읽어다가 레스터의 스캐닝(raster scanning)형태에 따라 디스플레이로 보낸다. M x N 크기의 영상자료에서 영상점들에 접근 시간을 줄이기 위해, 그래픽 디스플레이 장치 내에 M x N영상내에서 pq개의 영상점들을 병렬로 접근하기 위한 버퍼 기억 장치가 필요하다. [표 6]에서 기존의 그래픽 디스플레이들의 표시 영역의 다양한 크기를 보여준다. 버퍼 기억 장치의 크기는 적어도 특정한 디스플레이 장치의 표시영역의 크기와 같아야 한다.
예를 들어, 960(라인 수) x 1280(라인 당 영상점의 수) 디스플레이에 대해 M x N의 최소 값은 각각 960과 1280이다. 그래서 많은 그래픽 장치들의 N값은 2의 멱(power)이 아닌 값을 쓴다.
버퍼 기억 장치(100)는 수평선형, 수직선형 또는 한 문자에 대한 쓰기 시간을 줄이기 위해 수평, 수직, 또는 블록 형태의 영상점들을 병렬로 접근해야 한다. 추가적으로 대각선이나 역대각선의 영상점들에 대한 병렬적인 접근은 45도 만큼씩 정수 배의 선형 형태의 영상자료들에 쓰기 시간을 감소시키거나 45도 만큼씩 정수배로 회전시키기 위해 필요하다. 그러므로 버퍼 기억 장치(100) 수정의 속도향상을 위해 버퍼 기억 장치(100)는 M x N 영상 i(*,*)내의 기준좌표들 (i, j)에서 블록(BL), 수평(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는 디스플레이 처리기에 의해 자료의 접근 형태 (블록은 1, 수평은 2, 수직은 3, 대각선은 4, 그리고 역대각선은 5)의 선택 t와 접근형태 (1)-(5)에 따른 요구되어진 기준좌표 (i, j)가 넣어지고 자료들 자체는 행 우선 순위의 자료 레지스터에 위치한다.
2. 주소계산과 이동회로(ACRC)는 m개의 영상점 주소들을 계산하고 그것을 m개의 기억 모듈로 이동시킨다.
3. 기억 모듈 선택 회로는 접근되어지는 pq개의 기억 모듈들을 선택한다.
4. 자료 이동 회로는 자료 레지스터에 있는 pq개의 영상점들을 m개의 기억 모듈로 이동시킨다.
5. WRITE신호는 pq개의 선택된 기억 모듈에 영상점들을 저장하게 한다.
여기서, 연산 2, 3, 4가 병렬적으로 수행되어진다.
마찬가지로 버퍼 기억 장치로부터 영상점들을 읽어올 때 버퍼 기억 장치의 구성요소들은 아래와 같은 연산을 순서대로 수행한다.
1. t, i, j 레지스터에 요청되어진 값을 넣는다.
2. ACRC(주소계산과 이동회로)가 m개의 영상점 주소들을 계산하고 그 값들은 m개의 기억 모듈로 이동한다.
3. 기억 모듈 선택 회로는 접근되는 pq개의 기억 모듈을 선택한다.
4. READ신호에 의해 pq개의 선택된 기억 모듈에서 영상점들을 읽어온다.
5. 자료 이동 회로는 m개의 기억 모듈에서 pq개의 영상점들을 자료 레지스터로 이동시키고 접근 형태 (1)-(5)의 선택 따라 행 우선 순위로 되어있는 pq개의 영상점들을 정렬한다.
여기에서 연산 2와 3이 병렬로 수행되어진다.
도 12에 본 발명에 따른 ACRC(주소계산과 이동회로)가 나타나 있다.
ACRC(주소계산과 이동회로)는 주소간의 차를 위한 2개의 SRAM, 4개의 5 x 1 MUX (m+3)개의 가산기, (i/p)값들을 위한 SRAM, 그리고 배럴 시프터로 구성되어 있다.
블록, 수평, 대각선, 역대각선 접근형태의 주소간 차들의 첫 번째 간격은 μ(0 ≤μ < m)의 i%p값에 따라 p개의 차이 값으로 나타난다. 수평 접근형태의 주소간 차이들의 첫 번째 간격은 μ(0 ≤μ < m)의 i%p값에 따라 변화가 없다. 블록, 수평, 대각선, 역대각선 접근 형태의 주소간 차이들의 두 번째 간격은 μ(0 ≤μ < m)의 j%p값에 따라서 q개의 차이가 이진 값들로 나타난다.
수직접근 형태의 주소간 차들의 두 번째 간격은 μ(0 ≤μ < m)의 j%q값에 따라 변화가 없다. 그러므로 주소간 차이들을 위한 첫 번째 SRAM은 접근 형태와 i%p값에 의해 접근되어 m개의 가산기들에 B입력들로 제공된다. 그리고 주소간 차이들을 위한 두 번째 SRAM은 접근 형태와 j%q값에 의해 접근되어 m개의 가산기들에 C입력들로 제공된다. 여기서 주소간 차이들을 위한 첫 번째와 두 번째 SRAM의 크기는 각각 (4p+1) x m x log2(MN / pq)비트와 (4q+1) x m비트이다.
도 12에서 주소간 차이들을 위한 첫 번째 SRAM의 선택된 주소들은 블록 접근 형태의 영 번째 p x m개의 주소간 차이들을 위한 tㆍp+i%p, 수평 접근 형태의 첫 번째 l x m개의 주소간 차이들을 위한 tㆍp, 그리고 수직, 대각선, 역대각선 접근형태의 두 번째, 세 번째, 네 번째 p x m개의 주소간의 차이들을 위한 ((p-1)의 2의 보수) + tㆍp+i%p)인 (tㆍp+i%p - ( p1 )이다.
주소간 차이들을 위한 두 번째 SRAM의 선택된 주소들은 블록과 수평접근 형태의 영 번째와 첫 번째인 q x m개의 주소간 차이들을 위한 (tㆍq+j%q), 수직접근 형태의 두 번째인 l x m개의 주소간의 차이들을 위한 (tㆍp), 대각선과 역대각선 접근 형태의 세 번째와 네 번째인 주소간 차이들을 위한 (tㆍq+j%q+((q-1)의 2의 보수))인 (tㆍq+j%q - (q-1))이다.
(tㆍp+i%p)과 (tㆍq+j%q)의 값은 p와 q가 모두 2의 멱(power)일 때 곱셈이나 덧셈 없이 각각 (tㆍp), (i%p), (tㆍq), (j%q)의 연결에 의해 간단히 구할 수 있다.
기준주소 α(i, j)의 계산에 필요한 한번의 곱셈 (i/p)s값을 위한 SRAM 접근으로 대신한다. 만일 기본 주소 계산에서의 한번 곱셈을 제거하기 위해 N이 2의 멱(power)이 아닌데 S를 2의 멱(power)이 되도록 선택한다면, M x N=960 x 1280인 영상에서 접근되는 부분의 60%인 q (s -┌N/q ┐ ) M이 사용되지 않는 기억 장치 영역으로 추가되어진 용량이다.
본 발명에 따른 ACRC(주소계산과 이동회로)에서는 S가 2의 멱(power)이 아닐 때 SRA에 접근으로 얻어진 (i/p)s값에 기준주소를 위해 j/q값을 더해준다. S가 2의 승수일때는 (i/p)s의 값에 i값의 최하위 비트에 log2(s/p)만큼의 0을 추가해서 구한다. (i/p)와 j/q값의 합은 m개의 가산기들에 A입력으로 제공된다.
이하에서는 주소계산과 주소이동에 본 발명에 따른 하드웨어 알고리즘을 하드웨어 가격, 제어의 복잡성, 속도 등의 사항들을 가지고 이전의 기억 장치[D. C. Van Voorhis 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, 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.]와 비교하였다.
이 비교에서는 자료 내에서 임의의 위치에 있는 적어도 3가지 접근 형태 자료들의 병렬 접근이 지원되고 주소계산과 주소이동 회로의 하드웨어 구현이 고찰된다. Van Voorhis와 Morrin[D. C. Van Voorhis 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, May 1982.]가 제안한 기억 장치에서는 각 기억 모듈 μ(0 ≤μ < m)의 주소 α(μ)를 직접 계산한다. ACRC(주소계산과 이동회로)[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.]들에서는 주소계산이 주소이동에서의 회전과 분리되지 않기 때문에 제어가 복잡하고 비용이 상승된다. ACRC(주소계산과 이동회로)[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]에서 나타난 바와 같이 첫번째 행에 나타난 하드웨어의 구성요소와 연산 지연 시간이 기억 장치[D. C. Van Voorhis 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 or s), and (ks, k=0,...(q-1))의 덧셈에 의해 수직 접근형태의 pq개의 주소들을 계산한다.
ARC(주소이동회로)는 먼저 두 번의 이동에 의해 수직 접근형태의 (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 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.]의 ACC(주소계산회로)는 첫 번째 SRAM의 주소간의 차들과 두 번째 SRAM의 주소간의 차들인 (i, j)의 덧셈에서 한번의 덧셈시간 내에 블록, 수평 또는 수직 접근 형태의 pq개 주소들이 계산된다. pq개의 가산기에 입력되는 입력 B에 대한 주소간 차들의 크기는 3가지 접근형태 모두 p x pq이다.
M개의 가산기의 입력C에 대한 ACC(주소계산회로)의 주소간의 차들의 크기는 블록접근 형태의 주소간에 차들이 i%p뿐만 아니라 j%q에 종속되기 때문에 블록접근 형태에 대해서는 q x q이다. 그래서 ACC(주소계산회로)의 첫 번째 SRAM과 두 번째 SRAM의 크기는 다섯 가지 접근 형태 (115)-(119)에 대해 5p x pq와 3q x q만큼이 된다. ARC(주소이동회로)는 먼저 기억 모듈 번호에 따라 블록, 수평 또는 수직 접근 형태의 pq개의 주소들을 정렬한 후 블록, 수평 또는 수직접근 형태에 대해 (iq+j)%(pq+1)만큼 오른쪽으로 회전한다. 그러므로 이 기억 장치에서 α(μ)를 계산하기 위해 [표 7]의 4번째 행의 하드웨어 구성요소와 연산지연 시간이 필요하다. ACRC(주소계산과 이동회로)의 단점은 접근 형태에 따른 주소들의 계산 후에 기억 모듈 번호에 따라서 복잡하게 정렬시켜야 하는 것이다. 이것은 ACC(주소계산회로)에서 출력된 주소들이 기억 모듈 번호에 따라 정렬되어 있지 않기 때문이다. 이에 반해 본 발명에서 제안된 기억 장치에서 α(μ)을 계산하는데 [표 7]의 5번째 행의 하드웨어 구성요소와 연산지연 시간이 필요하다. 이때 출력주소는 μ(i, j)로부터 기억 모듈 번호에 따라 정렬되어져 있다. 앞의 회로[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. ParallelDistrib. Syst .., vol. 7, No. 8, pp.855-860, Aug. 1996.]에 비교하여 본 발명에 따른 주소계산 및 자료이동회로의 주요한 이점들은 속도 측면에서 곱셈기 대신 SRAM으로의 대치한 것과 멀티플렉서들을 제거하여 제어의 간편화와 게이트의 수를 감소시켰고 주소간의 차들의 크기를 (4p + q) x pq x log2(MN / pq) j + 3q x q비트에서 (4p + 1) x m x log2(MN / pq) + (4q + 1) x m으로의 감소시킨 것이다.
일반적인 글씨 크기가 8 x 8과 같거나 크다고 할 때 그래픽 디스플레이의 좋은 성능을 위해서는 적어도 p=8, q=8이어야 한다. 또한 pq값은 M과 N사이에 있는 최소 값과 같거나 작아야 한다.
ACRC(주소계산과 이동회로)의 하드웨어 구성 요소들과 연산 지연 시간을 M x N x b = 960 x 1280 x 24 일 때 p = q = 8, m = 7인 경우와 p = q = 16, m = 257인 경우에 대해 [표 8]에서 비교했다.
앞의 기억 장치[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.]의 곱셈기를 회로의 연산 속도 향상을 위해 본 발명에 따른 기억 장치에서는 SRAM으로 대치했다. 1비트 5x1 멀티플렉서 하나의 게이트 수가 12이고 전가산기 하나의 게이트 수가 7이라고 가정할 때, m x log2(MN / pq)-bit의 5 x 1 멀티플렉서의 게이트 수가 12이고 하나의 전가산기의 게이트 수는 전체 가산기 즉, log2(4p + 1)-비트 가산기 한 개 + log2(4q + 1)비트 가산기 한 개 + log2(MN / pq)비트 가산기 (pq + 1)개의 게이트 수보다 훨씬 많다. 이러한 구성요소를 가진 이전의 기억 장치와 비교해서 본 발명에 따른 ACRC(주소계산과 이동회로)는 주소 계산 후에 기억 모듈 번호에 따라 주소를 정렬하기 위한 5 x 1 멀티플렉서가 필요하지 않기 때문에 제어가 덜 복잡하고 비용이 적게든다. 또한 (pq + 1)개의 가산기에는 5 x 1 멀티플렉서들 사이에 5m x log2(MN / pq)개의 선들이 얽혀 있는데 p = q = 8일 때와 p = q = 16일 때 전체 선의 수가 각각 5,025개와 16,705개이기 때문에 (pq + 1)개의 가산기에서 5 x 1 멀티플렉서들 까지의 이동 회로 구현과 제어는 매우 복잡하다. 이전의 ACRC(주소계산과 이동회로)에는 멀티플렉서와 주소간의 차들을 위한 SRAM에서 가산기 사이에 2pq x log2(MN / pq) + pq 개의 선이 있고, m개의 멀티플렉서와 m개의 배럴시프터 사이에 있다. 또한 종래의 ACRC(주소계산과 이동회로)에서 m개의 배럴 시프터에서 m개의 기억 모듈 사이의 선의 수는 m x log2(MN/pq)이다. 반면에 본 발명에 따른 ACRC(주소계산과 이동회로)에서의 전체선의 숫자는 4m x log2(MN/pq)로 이전 것의 반보다 적다.
[표 9]는 ACRC(주소계산과 이동회로)의 게이트 수를 삼성전자 ASIC KG76(0.6 m 게이트 배열 라이브러리)의 게이트 수에 따라 비교한 예이다.
연산 지연 시간을 M x N x b = 960 x 1280 x 24이고 pq > M일 때 매개변수 p와 q값이 둘 다 32가 아닌 8과 32사이의 2의 멱(power) 값을 갖게 설계한 [표 10]의 연산지연 시간의 가정 하에 비교하였다.
게이트 수 비율과 연산지연 시간의 비율은 이전의 ACRC(주소계산과 이동회로)의 게이트 수와 연산지연시간에 대한 본 발명에 따른 ACRC(주소계산과 이동회로) 각각의 비율이다. 평균 게이트 수의 비율과 평균 연산 지연시간 비율은 각각 1,198과 1,295이다. 게이트 수 비율과 연산 지연시간 비율을 곱한 평균값은 1,549이다. 본 발명에 따른 ACRC(주소계산과 이동회로)에 대해 표준화된 게이트 수는 p=q=8에 대해 게이트 수로 나누어지고 pq/64에 의해 나누어진 게이트 수이다. 그리고 연산 지연 시간은 p = q = 8일 때의 연산지연시간으로 각각 나눈 것이다. 표준화된 결과는 표준화된 게이트 수와 연산지연 시간을 곱한 것으로 구할 수 있다. 표준화된 결과에 따라 본 발명에 따른 ACRC(주소계산과 이동회로)를 위한 가장 좋은 p와 q값을 각각 8과 8로 이다. 그 값들이 표준화된 결과가 M x N x b = 960 x 1,280 x 24에서 가장 작은 값이기 때문이다. 표준화된 결과는 요구된 ACRC(주소계산과 이동회로)에 대해 가장 좋은 p값과 q값을 선택하는데 사용할 수 있다. [표 11]은 요구된 |(p1,q1)|과 가장 좋은 |(p2,q2)|를 선택하여 사용한 구성을 보여준다. 이때, |(p1,q1)|은 제작 파라미터가 p1과 q1인 버퍼기억장치를 나타낸다.
여기서 |(p1,q1)|과|(p2,q2)|는 버퍼 기억 장치의 p값과 q값을 p1과 q1, p2와 q2로 나타낸 것이다.
예를 들어, |(32,8)|의 ACRC(주소계산과 이동회로)가 요구된다면, 4개의|(8,8)|의 ACRC(주소계산과 이동회로)가 요구된 ACRC(주소계산과 이동회로)로 조합하여 사용할 수 있다. 만일 |(8,16)|, |(16,8)|, |(16,16)|, |(8,32)|, |(32,8)|, |(16,32)|, |(32,16)|의 ACRC(주소계산과 이동회로)를 |(8,8)|의 ACRC(주소계산과 이동회로)를 이용하여 구성한다면 1.353의 평균 연산지연시간 비율내의 결과에서 연산지연시간 비율이 1.353으로 증가된다.
자료 이동 회로는 한번의 모듈로(Modulo) 계산과 한번의 회전연산을 수행하고 기억 모듈 선택 회로는 한번의 모듈로(Modulo) 계산과 한번의 디코딩 연산을 수행하기 때문에 자료 이동 회로나 기억 모듈 선택회로의 연산 지연 시간은 본 발명에 따른 ACRC(주소계산과 이동회로)의 연산 지연시간보다 짧다. 그러므로 만일 m개의 기억 모듈 접근 시간이 본 발명에 따른 ACRC(주소계산과 이동회로)의 연산 지연시간보다 작고 ACRC(주소계산과 이동회로)의 m개의 기억 모듈 사이에 m개의 기억 장치 주소 레지스터들이 있고 자료이동 회로와 m개의 기억 모듈 사이에 m개의 기억 장치 버퍼 레지스터들이 있다고 하면, 본 발명에 따른 버퍼 기억 장치는 ACRC(주소계산과 이동회로)의 연산 지연시간 비율 단위 파이프라인 방식으로 수행될 수 있다.
또한 디스플레이 처리기가 본 발명에 따른 ACRC(주소계산과 이동회로)의 연산 지연시간 내에 버퍼 기억 장치로부터 pq개의 영상점들에 대해 요소 연산을 수행한다면, 본 발명에 따른 프레임 버퍼 디스플레이 장치의 전체적 성능은 이전의 ACRC(주소계산과 이동회로)를 사용한 프레임버퍼 디스플레이 장치보다 평균 1.353배 증가 할 수 있다. 그러므로 본 발명에 따른 ACRC(주소계산과 이동회로)는 이전의 기억 장치보다 비용이 적게들고 제어의 복잡성을 줄였고 빠르게 했다.
이하에서 적어도 자료 배열내의 임의의 위치에 있는 3가지 접근 유형의 자료들에 대해 동시 접근이 지원되고 주소계산회로와 주소이동회로, 자료이동 회로의 하드웨어 구현이 고려되어져 있는 기존 기억 장치 방식과 본 발명에 따른 주소계산과 주소이동, 자료이동 방식을 접근유형, 간격, 자료배열의 크기의 제한과 하드웨어의 비용, 속도 복잡성에 대해 비교하였다.
간격 1을 갖는 블록, 열, 행, 대각선, 역대각선 접근형태를 위한 본 발명에 따른 ACRC(주소계산과 이동회로)가 기존의 기억 장치에 비해 보다 저비용, 더욱 단순화된 제어 복잡도, 그리고 빠른 속도에 대해 나타나 있다.
pq ≤ md이고 m이 소수일 때, 종래의 기억 장치[ A. Deb, IEEE Trans. Parallel Distrib. Syst .. Vol. 7, No. 6. pp. 595-604, Jun. 1996.]는 m개의 기억 모듈과 pq개의 PE로 구성되어 있다. 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 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.]에 사용되려고 구현된다면 제어가 매우 복잡해질 것이다. 그것은 접근 형태와 간격이 주소의 정렬에 종속되기 때문이다. 기억 장치[D. C. Van Voorhis and T. H. Morrin, IEEE Trans. Comput ., vol. C-27, pp.113-125, Feb. 1978.]에서 자료 이동회로는 μ(i, j)에 의해 제어되는 다양한 오른쪽 회전 변환기가 필요하다. 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.]에 의해 본 발명에 따른 기억 장치의 자료 이동은 멀티플렉서와 배럴 시프터에 의해 수행된다. 이 기억 장치에서는 이전 기억 장치의 자료이동 회로내의 다양한 오른쪽 회전 변환기를 복잡하고 비싸고 느린 crossbar 네트워크로 대치한다. 본 발명에서 멀티플렉싱과회전을 사용하는 자료이동 방법이 제안된다.
여기서, 12가지 접근형태에 대해 양의 간격을 가지는 12가지 자료이동 형태가 ROM과 log2(2(m - 1)) x 2(m - 1)디코더, 3상 버퍼들을 이용한 셀렉터, 그리고 배럴시프터에 의해 구현된 간격 r1(=r%m)인 2개 이동 형태로 감소된다. 또한 표 1에 따라 본 발명에 따른 주소계산, 주소이동 그리고 자료이동 회로는 더 많은 접근유형과 간격을 지원한다.
그러므로 주소계산, 주소이동 그리고 자료이동에 본 발명에 따른 방법은 접근형태들, 간격 그리고 자료배열의 크기에 대한 제약과 하드웨어의 비용과 속도 그리고 복잡성 측면에서 기존 기억 장치들의 방법들보다 좋다는 것을 알 수 있다.