KR19990082423A - 멀티포트메모리 및 그것을 액세스하는 데이타처리장치 - Google Patents
멀티포트메모리 및 그것을 액세스하는 데이타처리장치 Download PDFInfo
- Publication number
- KR19990082423A KR19990082423A KR1019980706156A KR19980706156A KR19990082423A KR 19990082423 A KR19990082423 A KR 19990082423A KR 1019980706156 A KR1019980706156 A KR 1019980706156A KR 19980706156 A KR19980706156 A KR 19980706156A KR 19990082423 A KR19990082423 A KR 19990082423A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- address
- data
- port
- cycle
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 496
- 238000000034 method Methods 0.000 claims abstract description 33
- 238000003491 array Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004904 shortening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
여러개의 메모리액세스를 병렬로 처리하는 슈퍼스칼라 또는 VLIW프로세서의 캐시메모리에 있어서, 사이클시간의 증대를 억제하고 적은 하드웨어의 추가에 의해 멀티포트 액세스 가능한 메모리를 제공하기 위해서, 캐시메모리를 여러개의 메모리뱅크로 분할하고 각각이 병렬동작할 수 있도록 하고 각 메모리뱅크에 독립적으로 메모리포트를 할당하는 수단을 마련하고, 제1 사이클에서 제1 메모리포트를 제1 메모리뱅크에, 제2 메모리포트를 제2 메모리뱅크에 할당하고, 히트하면 1사이클에서 여러개의 액세스를 완료하고, 미스하면 제2 사이클에 있어서 제1 메모리포트를 제2 메모리뱅크에, 제2 메모리포트를 제1 메모리뱅크에 할당한다.
Description
계산기나 데이타처리장치에 있어서 슈퍼스칼라 프로세서나 VLIW프로세서 등을 사용하는 경우 1사이클에 여러개의 메모리액세스처리가 발생한다. 이 메모리액세스처리를 1사이클에 여러개 실행하기 위해서는 메모리의 포트가 액세스처리의 수만큼 필요하다. 1사이클에 여러개의 메모리액세스처리를 가능하게 하는 것으로서, 2포트의 메모리의 종래예가 참고문헌(「POWER and PowerPC」, 1994년, Morgan Kaufmann출판사 발행)이 pp.168∼170에 기재되어 있다.
제1 방식은 메모리자체로서 2포트에서 액세스가 가능한 메모리셀을 사용하는 방법이다. 1비트의 정보를 기억하는 1개의 메모리셀에 대해서 2계통의 어드레스 디코더 및 2계통의 워드선, 2계통의 데이타비트선, 2계통의 센스앰프 등을 마련하는 것에 의해, 2포트에서 액세스가 가능한 메모리를 실현할 수 있다. 이 제1 방식은 워드선이나 데이타비트선이 2계통 필요하므로, 동일한 메모리용량을 실현하고자 하면 메모리셀의 면적은 싱글포트의 경우에 비해 대략 2배 필요로 된다.
제2 방식은 종래의 싱글포트메모리를 2중화해서 마련하는 것에 의해, 2포트의 액세스가 가능한 메모리를 실현하는 방식이다. 상기 제1 방법의 2포트메모리와 비교해서 메모리셀도 2중화되는 점이 다르다. 따라서, 메모리에 데이타를 라이트하는 경우에는 양쪽의 메모리의 동일한 어드레스에 동일한 데이타를 라이트할 필요가 있다. 이 상기 제2 방식은 메모리셀이 2중화되어 있으므로 메모리용량의 2배의 메모리셀이 필요하다. 바꿔말하면, 실제의 메모리셀의 수의 1/2밖에 독립된 데이타를 유지할 수 없다. 즉, 동일한 메모리용량을 실현하고자 하면 메모리셀용으로서 면적이 종래의 2배 필요하다.
따라서, 제1 방식과 제2 방식을 비교하면, 메모리셀의 면적에는 대략 차가 없다. 또, 2개의 포트에서 동일어드레스를 액세스할 때에는 메모리셀이 공통인 제1 방식에서는 한쪽의 액세스가 대기상태로 되므로 액세스시간이 필연적으로 2배로 된다.
제3 방식은 메모리를 어드레스에 따라 2개의 메모리뱅크로 분할하고, 다른 메모리뱅크에 대한 액세스이면 그들 여러개의 메모리액세스를 동시에 처리하는 방식이다. 임의의 어드레스의 데이타는 어느 한쪽의 메모리뱅크밖에 존재하지 않으므로, 상기 제2 방식의 2포트메모리와 비교해서 어드레스입력부 및 데이타출력부에 각각의 메모리포트와 메모리뱅크의 대응을 변환하는 셀렉터가 필요하다. 또한, 이 셀렉터의 선택지시는 액세스하는 어드레스의 하위 1비트에 의해 실행된다.
상기 제3 방식은 메모리셀을 2중화하고 있지 않으므로 메모리셀의 용량을 그대로 메모리의 용량으로 할 수 있고, 제2 방식에 비해 동일한 메모리셀의 수로 2배의 메모리용량을 실현할 수 있다. 그러나, 제3 방식에서는 어드레스의 1비트에 의해 어느쪽의 메모리뱅크를 액세스할지를 결정하므로, 메모리의 전체액세스시간으로서는 메모리셀의 액세스시간 이외에 셀렉터에서의 선택시간이 필요로 된다. 따라서, 제2 방식에 비해 메모리의 전체액세스시간이 길어질 우려가 있다.
제4 방식은 1개의 싱글포트메모리를 시분할로 사용하는 방법이다. 1사이클을 2개로 나누고 전반의 1/2사이클에서 제1 메모리포트의 액세스를 처리하고, 후반의 1/2사이클에서 제2 메모리포트의 액세스를 처리하는 것에 의해, 2포트의 메모리를 실현할 수 있다.
상기 제4 방식은 메모리셀 등이 2중화되어 있지 않으므로, 상기 제3 방식과 마찬가지로 메모리셀의 용량을 그대로 메모리의 용량으로 할 수 있다. 그러나, 메모리셀의 액세스시간을 1/2로 고속화하지 않으면 1사이클에서 2개의 메모리액세스처리를 실행할 수 없다. 반대로, 메모리셀의 액세스시간을 기준으로 하면(액세스시간을 그대로 하면), 전체의 사이클시간을 2배로 연장시키지 않으면 1사이클에서 2개의 메모리액세스처리를 실행할 수는 없다.
상기 기술한 바와 같이, 종래의 멀티포트메모리에서는 메모리셀면적을 변경하지 않는 경우에는 메모리의 용량이 메모리셀의 용량의 1/2로 삭감되어 버리거나 또는 메모리의 액세스시간이 연장되거나 또는 메모리셀의 액세스시간을 기준으로 고려하면 전체의 사이클시간이 2배로 연장되어 버리는 등의 과제가 있었다.
본 발명의 목적은 상기 멀티포트메모리의 과제를 해결하고, 메모리용량이 싱글포트메모리일 때의 메모리셀의 용량과 동일하고 실질적으로 메모리의 액세스시간을 연장시키지 않고 뱅크액세스충돌도 발생시키지 않으며 또 전체의 사이클시간도 연장시키지 않고 여러개의 메모리액세스처리를 동시에 실행할 수 있는 멀티포트메모리를 제공하는 것이다.
본 발명은 계산기나 데이타처리장치의 데이타액세스를 고속화하는 캐시메모리에 관한 것이다. 특히, 메모리액세스처리를 1사이클에 여러개 실행할 수 있는 슈퍼스칼라 프로세서 또는 롱워드길이 프로세서(이하, VLIW(Very Long Instruction Word)프로세서라 한다) 등에 적합한 캐시메모리를 제공한다.
도 1은 본 발명의 1실시예인 캐시메모리 및 그 주변블럭을 도시한 블럭도,
도 2는 도 1에 도시한 캐시메모리에 있어서 2개의 메모리액세스를 동시에 처리하는 동작중 제1 사이클째의 동작을 도시한 도면,
도 3은 도 1에 도시한 캐시메모리에 있어서 2개의 메모리액세스를 동시에 처리하는 동작중 제2 사이클째의 동작을 도시한 도면,
도 4는 도 1에 도시한 캐시메모리에 있어서 1개의 메모리액세스를 처리하는 동작을 도시한 도면,
도 5는 도 1에 도시한 캐시메모리가 접속되어 있는 데이타처리장치의 전체를 도시한 블럭도,
도 6은 본 발명의 다른 1실시예인 캐시메모리 및 그 주변블럭을 도시한 블럭도.
발명의 개시
본 발명은 여러개의 메모리뱅크로 분할한 메모리에 있어서, 상기 메모리뱅크의 각각은 데이타와 그 어드레스를 쌍으로 해서 기억하는 수단, 상기 메모리밖에서 입력되는 어드레스에 대응하는 어드레스가 상기 메모리뱅크내에 존재하는지 존재하지 않는지를 판단하는 판단수단 및 상기 대응하는 어드레스가 존재할 때 상기 어드레스와 쌍으로 되는 데이타를 액세스하고 상기 메모리뱅크의 밖으로 출력하는 수단을 갖고, 상기 메모리는 상기 여러개의 메모리포트에서 입력되는 여러개의 어드레스 각각을 상기 여러개의 메모리뱅크중의 어느 메모리뱅크에 입력할지를 선택해서 입력하는 제1 수단, 상기 각 메모리뱅크에서 리드된 데이타를 상기 메모리뱅크에 입력된 어드레스가 입력된 상기 메모리포트에 대응하는 데이타출력용 포트로 출력하는 수단을 갖는 멀티포트메모리에 의해 달성된다.
또, 상기의 멀티포트메모리에 있어서 상기 제1 수단은 제1 사이클에서 상기 여러개의 메모리포트중의 1개인 제1 메모리포트에서 입력되는 제1 어드레스를 상기 여러개의 메모리뱅크중의 1개인 제1 메모리뱅크에 입력하고, 상기 여러개의 메모리포트중의 1개인 제2 메모리포트에서 입력되는 제2 어드레스를 상기 여러개의 메모리뱅크중의 1개인 제2 메모리뱅크에 입력하고, 상기 제1 메모리뱅크내의 상기 판단수단이 상기 제1 어드레스와 쌍으로 되는 데이타가 존재하지 않는다고 판단했을 때 상기 제1 사이클보다 후의 사이클에서 상기 제2 메모리뱅크에 상기 제1 어드레스를 입력하고, 상기 제2 메모리뱅크내의 상기 판단수단이 상기 제2 어드레스와 쌍으로 되는 데이타가 존재하지 않는다고 판단했을 때 상기 제1 사이클보다 후의 사이클에서 상기 제1 메모리뱅크에 상기 제2 어드레스를 입력하는 것에 의해 달성된다.
또, 상술한 멀티포트메모리에 있어서, 상기 제1 수단은 제1 사이클에서 상기 여러개의 메모리포트중의 1개인 제1 메모리포트에서 입력되는 제1 어드레스를 상기 여러개의 메모리뱅크중의 모든 메모리뱅크에 입력하는 것에 의해 달성된다.
다음에, 상술한 멀티포트메모리를 데이타메모리로서 연속해서 사용되는 데이타처리장치로서, 상기 데이타처리장치의 제어를 프로그램하는 명령중 상기 데이타메모리를 액세스하는 명령중에 마련되어 있는 소정의 비트수의 정보를 디코드하는 수단 및 디코드결과에 따라서 상기 명령을 실행하는 수단을 갖고, 여기에서 상기 정보는 상기 여러개의 메모리포트중의 어느 메모리포트를 액세스할지를 지정하는 정보인 것에 의해 달성된다.
상기 멀티포트메모리는 다음과 같이 동작한다.
제1 메모리포트로 부터의 어드레스는 제1 사이클에서 제1 메모리뱅크에 입력되고 액세스할 데이타가 제1 메모리뱅크의 내부에 기억되어 있는지가 검색된다. 만일 존재하고 있으면 대응하는 데이타를 액세스하고 제1 메모리포트측의 처리를 종료한다. 만일, 존재하고 있지 않으면 제2 사이클에 있어서 제2 메모리뱅크에 상기 어드레스가 입력되고 액세스할 데이타가 제2 메모리뱅크의 내부에 기억되어 있는지가 검색된다. 만일, 존재하고 있으면 대응하는 데이타를 액세스하고 제1 메모리포트의 처리를 종료한다.
한편, 제2 메모리포트는 제1 사이클에서 제1 메모리뱅크 이외의 메모리뱅크에 어드레스를 입력하고 액세스할 데이타가 그 메모리뱅크의 내부에 기억되어 있는지를 검색한다. 만일, 존재하고 있으면 대응하는 데이타를 액세스하고 제2 메모리포트의 처리를 종료한다. 만일, 존재하고 있지 않으면 제2 사이클에 있어서 제2 메모리뱅크 이외의 메모리뱅크에 어드레스를 입력하고 액세스할 데이타가 그 메모리뱅크의 내부에 기억되어 있는지를 검색한다. 만일, 존재하고 있으면 대응하는 데이타를 액세스하고 제2 메모리포트의 처리를 종료한다.
또한, 상기 동작에 있어서 제1 사이클에 있어서는 제1 메모리포트는 제1 메모리뱅크를 액세스하고 제2 메모리포트는 제1 메모리뱅크 이외의 메모리뱅크를 액세스하므로, 액세스가 충돌하지 않고 어느쪽의 동작도 동시에 즉 병렬로 처리할 수 있다. 또, 제2 사이클에 있어서는 제1 메모리포트는 제2 메모리뱅크를 액세스하고 제2 메모리포트는 제2 메모리뱅크 이외의 메모리뱅크를 액세스하므로, 이 경우에도 액세스가 충돌하지 않고 어느쪽의 동작도 병렬로 처리할 수 있다.
또, 메모리액세스가 1개밖에 없는 경우에는 제1 사이클에서 모든 메모리뱅크를 액세스하는 것에 의해, 1사이클에서 메모리액세스를 종료할 수 있다. 즉, 제1 사이클에서 모든 메모리뱅크에 제1 메모리포트의 어드레스를 입력하고 액세스할 데이타가 어느곳의 메모리뱅크의 내부에 기억되어 있는지를 검색한다. 어느 한곳의 메모리뱅크에 존재하고 있으면, 대응하는 데이타를 액세스하고 제1 메모리포트의 처리를 종료한다.
또, 상기 멀티포트메모리를 데이타메모리로서 접속하고 있는 데이타처리장치에 있어서, 상기 데이타메모리를 액세스하는 명령중의 비트정보를 적절하게 지정하는 것에 의해 액세스할 데이타가 기억되어 있는 메모리뱅크로 제1 사이클에서 액세스할 수 있고, 1사이클에서 여러개의 메모리액세스를 종료할 수 있다.
발명을 실시하기 위한 최량의 형태
이하, 본 발명을 실시예에 따라서 도면을 사용하여 설명한다.
도 5는 본 발명의 1실시예인 데이타처리장치의 블럭구성도이다. 본 실시예의 데이타처리장치는 명령을 실행하는 프로세서(410), 명령용 캐시메모리인 명령캐시(420), 데이타용 캐시메모리인 데이타캐시(430) 및 메인메모리(440)으로 이루어진다. 이들은 어드레스버스, 데이타버스 등을 거쳐서 서로 접속되어 있다. 명령캐시(420)은 메인메모리(440) 중의 프로그램영역의 카피(copy)를 유지하고, 데이타캐시(430)은 메인메모리(440) 중의 데이타영역의 카피를 유지하고 있다.
프로세서(410)은 데이타를 저장하는 레지스터파일(106), 명령에 따라서 연산을 실행하는 연산기(412) 및 그들을 제어하는 제어회로(413)으로 이루어진다. 프로세서(410)은 명령캐시(420)에서 프로그램의 1개의 처리단위인 명령을 리드하고, 그 명령의 지시에 따라서 제어회로(413)이 프로세서내부의 회로(레지스터파일, 연산기 등)를 동작시킨다.
명령의 종류로는 레지스터파일(106)중의 데이타를 연산기(412) 등에 의해 연산하고 그 결과를 레지스터파일(106)에 저장하는 명령 이외에 레지스터파일(106)의 내용을 메인메모리(440) 및 데이타캐시(430)으로 라이트하는 명령 및 메인메모리(440) 또는 데이타캐시(430)의 내용을 레지스터파일(106)으로 라이트하는 명령이 있다.
여기에서, 데이타캐시(430)은 2개의 메모리포트를 갖는 캐시메모리이다. 액세스할 데이타가 데이타캐시(430)중에 존재하고 있으면, 2개의 데이타액세스를 동시에 처리할 수 있다. 데이타캐시(430)에서 액세스결과로서 리드된 데이타는 데이타캐시와 프로세서를 연결하는 데이타를 전송하는 신호선(버스 등)을 거쳐서 프로세서로 전송된다. 이 데이타캐시(430) 부분의 구성을 도 1에 상세하게 도시한다.
도 1은 프로세서(410)을 구성하는 명령레지스터(100) 및 (110), 레지스터파일(106), 어드레스 계산기(107) 및 (117), 데이타캐시(430)(점선으로 둘러싸인 부분)의 내부블럭을 도시한 도면이다.
명령레지스터(100) 및 (110)은 메모리액세스를 실행하는 명령이 설정된다. 명령레지스터(100) 및 (110)에 설정된 명령은 각각 5개의 부분으로 분할된다. 5개의 부분이라는 것은 OP(operation)의 종류를 규정하는 OP코드부(101) 및 (111), 데이타캐시로의 액세스포트를 지정하기 위해 사용하는 정보인 포트지정힌트부(102) 및 (112), 수신지 레지스터 지정부(103) 및 (113), 베이스 어드레스 레지스터 지정부(104) 및 (114), 변위 지정부(105) 및 (115)이다. 이 구성을 갖는 것에 의해 프로세서(410)은 2개의 명령을 동시에 실행할 수 있다.
현재, 도 1의 명령레지스터(100)에 메모리의 데이타를 레지스터로 전송하는 명령인 로드(LD)명령이 설정되어 있는 것으로 한다. LD명령인 것은 OP코드부(101)을 도면에 도시하지 않은 디코더 등에 의해 해독하는 것에 의해 판단할 수 있다. 이 LD명령은 레지스터파일(106)중에서 베이스 어드레스 레지스터 지정부(104)에 의해 지정된 레지스터Rb0의 내용을 리드하고, 그 값과 변위 지정부(105)의 내용인 변위disp0을 가산하고 그 가산결과를 어드레스로 해서 메모리의 내용을 리드하고, 그 리드한 내용을 수신지 레지스터 지정부(103)에 의해 지정된 레지스터파일(106)중의 레지스터Rd0에 저장하는 명령이다.
또, 도 1의 명령레지스터(110)에도 마찬가지로 메모리의 데이타를 레지스터로 전송하는 명령인 로드(LD)명령이 설정되어 있다. LD명령인 것은 OP코드부(111)을 도면에 도시하지 않은 디코더 등에 의해 해독하는 것에 의해 판단할 수 있다. 이 명령도 레지스터파일(106)중에서 베이스 어드레스 레지스터 지정부(114)에 의해 지정된 레지스터Rb1의 내용을 리드하고, 그 값과 변위 지정부(115)의 내용인 변위disp1을 가산하고 그 가산결과를 어드레스로 해서 메모리의 내용을 리드하고, 그 리드내용을 수신지 레지스터 지정부(113)에 의해 지정된 레지스터파일(106)중의 레지스터Rd1에 저장하는 명령이다.
명령레지스터(100)의 명령은 데이타캐시(430)의 메모리포트0을 액세스하고 명령레지스터(110)의 명령은 데이타캐시(430)의 메모리포트(1)을 액세스한다. 따라서, 프로세서(410)이 2개의 LD명령을 동시에 실행하면 데이타캐시로의 2개의 액세스가 동시에 프로세서(410)과 데이타캐시(430)을 연결하는 신호선을 거쳐서 발행되게 된다. 이 신호선은 2개의 명령에 의한 2개의 액세스를 동시에 송신할 수 있는 것으로 한다.
데이타캐시(430)은 2개의 메모리뱅크(125) 및 (135), 4개의 셀렉터(108), (118), (146) 및 (156), 또 이들을 제어하는 제어회로(160)으로 이루어진다. 셀렉터(108)은 메모리뱅크0(125)로의 입력어드레스를 메모리포트0(메모리뱅크0용의 포트로서 메모리뱅크0에 대한 어드레스 입력포트 및 메모리내용의 출력포트 등을 총칭하는 것으로 한다)에서 입력할지 메모리포트1(메모리뱅크1용의 포트로서 메모리뱅크1에 대한 어드레스 입력포트 및 메모리내용의 출력포트 등을 총칭하는 것으로 한다)에서 입력할지를 선택한다. 셀렉터(118)은 메모리뱅크1(135)로의 입력어드레스를 메모리포트0에서 입력할지 메모리포트1에서 입력할지를 선택한다. 셀렉터(146)은 메모리포트0으로 출력하는 리드데이타를 메모리뱅크0(125)에서 출력할지 메모리뱅크1(135)에서 출력할지를 선택한다. 셀렉터(156)은 메모리포트(1)로 출력하는 리드데이타를 메모리뱅크0(125)에서 출력할지 메모리뱅크1(135)에서 출력할지를 선택한다.
메모리뱅크0(125)는 2웨이(way)의 세트어소시에이티브방식의 캐시메모리이다. 어드레스디코더(120)에 의해 셀렉터(108)에서 선택된 어드레스의 하위비트를 디코드하고, 메모리어레이(121) 및 (122), (123), (124)를 리드한다. 메모리어레이(121) 및 (122)에는 각각 웨이0의 태그 및 웨이1의 태그, (123)에는 웨이0의 데이타, (124)에는 웨이1의 데이타가 기억되어 있다. 메모리어레이(121) 및 (122)에서 리드된 웨이0의 태그 및 웨이1의 태그는 각각 비교기(141) 및 (142)에 의해 셀렉터(108)에서 선택된 어드레스의 상위비트와 비교된다. 비교결과, 일치하는 어드레스가 존재하는 경우에는 이 상태를 히트(hit)라고 하고, 일치하고 있는 쪽의 웨이에 대응하는 데이타가 메모리어레이(123) 및 (124)에서 리드된 웨이0의 데이타 및 웨이1의 데이타중에서 셀렉터(143)에 의해 선택되고 메모리뱅크0(125)의 출력데이타로서 출력된다. 일치하는 어드레스가 존재하지 않는 경우에는 이 상태를 미스(miss)라 한다.
메모리뱅크1(135)도 상기 메모리뱅크(125)와 마찬가지로 2웨이의 세트어소시에이티브방식의 캐시메모리이다. 어드레스 디코더(130)에 의해 셀렉터(118)에서 선택된 어드레스의 하위비트를 디코드하고, 메모리어레이(131) 및 (132), (133), (134)를 리드한다. 메모리어레이(131) 및 (132)에는 각각 웨이0의 태그 및 웨이1의 태그, (133)에는 웨이0의 데이타, (134)에는 웨이1의 데이타가 기억되어 있다. 메모리어레이(131) 및 (132)에서 리드된 웨이0의 태그 및 웨이1의 태그는 각각 비교기(151) 및 (152)에 의해 셀렉터(118)에서 선택된 어드레스의 상위비트와 비교된다. 비교결과, 일치하는 어드레스가 존재하는 경우에는 이 상태를 히트라고 하고, 일치하고 있는 쪽의 웨이에 대응하는 데이타가 메모리어레이(133) 및 (134)에서 리드된 웨이0의 데이타 및 웨이1의 데이타 중에서 셀렉터(153)에 의해 선택되고 메모리뱅크1(135)의 출력데이타로서 출력된다. 일치하는 어드레스가 존재하지 않는 경우에는 이 상태를 미스라고 한다.
각각의 메모리뱅크에서 출력된 데이타는 그 리드의 입력어드레스가 메모리포트0으로 부터의 것인 경우에는 메모리포트0으로 리드데이타를 출력하도록, 한편 그 리드의 입력어드레스가 메모리포트1로 부터의 것인 경우에는 메모리포트1로 리드데이타를 출력하도록 셀렉터(146), (156)이 선택된다. 그리고, 셀렉터(146)에서 출력된 리드데이타는 명령레지스터(100)의 수신지 레지스터 지정부Rd0(103)에 의해 지정되는 레지스터파일내의 레지스터에 저장된다. 또, 셀렉터(156)에서 출력된 리드데이타는 명령레지스터(110)의 수신지 레지스터 지정부Rd1(113)에 의해 지정되는 레지스터파일내의 레지스터에 저장된다.
또한, 상기 실시예에서는 메모리뱅크0(125)의 출력데이타를 생성하는 셀렉터(143) 및 메모리뱅크1(135)의 출력데이타를 생성하는 셀렉터(153), 메모리포트0으로 출력할 데이타를 생성하는 셀렉터(146) 및 메모리포트1로 출력할 데이타를 생성하는 셀렉터(156)을 각각 별도의 셀렉터로서 구성했지만, 4입력 1출력의 셀렉터를 2개 사용해서 상기 4개의 셀렉터(143), (153), (146), (156)과 동일한 기능을 실현하는 셀렉터를 구성할 수도 있다. 즉, 메모리어레이(123), (124), (133), (134)에서 리드된 데이타를 4계통의 입력으로 하고, 그중 1계통을 출력하는 4입력 1출력의 셀렉터를 2개 마련하고, 그 한쪽의 셀렉터의 출력을 메모리포트0으로의 출력으로 하고, 또 한쪽의 셀렉터의 출력을 메모리포트1로의 출력으로 하면 좋다. 여기에서, 각각의 4입력셀렉터의 선택지시는 독립적으로 실행할 필요가 있다.
상기 데이타캐시(430)내의 동작은 제어회로(160)이 제어하고 있다. 여기에서, 제어회로(160)이 데이타캐시내의 각 구성요소의 상태를 수집하기 위한 신호선 등이나 각 구성요소를 제어하기 위한 신호선은 도면에서 생략하고 있다. 또한, 도 1에 있어서 명령레지스터(100)의 수신지 레지스터 지정부Rd0(103)에서 레지스터파일(106)을 지정하는 도면상의 화살표선은 데이타캐시(430)내를 통과하도록 되어 있지만, 이것은 단지 도면상의 선이고 실제로는 반드시 데이타캐시(430)을 통과할 필요는 없다. 명령레지스터(110)의 수신지 레지스터 지정부Rd1(113)에서 레지스터파일(106)을 지정하는 도면상의 화살표선에 관해서도 상술한 내용과 마찬가지이다.
다음에, 상기 데이타캐시(430)의 동작을 도 2 및 도 3, 도 4를 사용해서 설명한다.
도 2 및 도 3은 도 1에서 설명한 2개의 LD명령을 동시에 처리하는 동작을 설명하는 도면이다. 도 2는 제1 사이클에서의 동작을 도시한 것이고, 도 3은 제2 사이클에서의 동작을 도시한 것이다. 또한, 여기에서의 사이클이라는 것은 본 데이타캐시(430)을 동작시키는 타이밍이고, 프로세서(410)을 동작시키는 클럭이나 도 5에 도시한 데이타처리장치 전체를 구동시키는 시스템클럭과 일정한 관계를 갖는다. 예를 들면, 시스템클럭의 1클럭이 1사이클과 대응하거나 또는 시스템클럭의 여러개의 클럭이 1사이클과 대응한다.
제1 사이클에서는 도 2에 도시한 바와 같이 메모리뱅크0의 입력어드레스 셀렉터(108)은 메모리포트0측 즉 명령레지스터(100)에 설정되어 있는 LD명령의 액세스 어드레스를 선택한다. 이 어드레스에 의해 2웨이의 세트어소시에이티브방식의 캐시메모리인 메모리뱅크0(125)를 검색한다. 어드레스가 히트하고 있으면 대응하는 데이타를 셀렉터(143)에서 출력하고, 셀렉터(146)에 의해 이 메모리뱅크0(125)의 데이타를 데이타캐시(430)의 메모리포트0측의 리드데이타로서 출력하고, 이 메모리포트0측의 액세스를 종료한다. 어드레스가 미스하고 있으면 제1 사이클의 동작은 여기까지로 하고, 제2 사이클에서 메모리뱅크1(135)를 액세스하도록 제어회로(160)이 판단한다.
한편, 메모리뱅크1의 입력어드레스 셀렉터(118)은 도 2에 도시한 바와 같이 메모리포트1측 즉 명령레지스터(110)에 설정되어 있는 LD명령의 액세스어드레스를 선택한다. 이 어드레스에 의해 2웨이의 세트어소시에이티브방식의 캐시메모리인 메모리뱅크1(135)를 검색한다. 어드레스가 히트하고 있으면 대응하는 데이타를 셀렉터(153)에서 출력하고, 셀렉터(156)에 의해 이 메모리뱅크1(135)의 데이타를 데이타캐시(430)의 메모리포트1측의 리드데이타로서 출력하고, 이 메모리포트1측의 액세스를 종료한다. 어드레스가 미스하고 있으면 제1 사이클의 동작은 여기까지로 하고, 제2 사이클에서 메모리뱅크0(125)을 액세스하도록 제어회로(160)이 판단한다.
도 3은 메모리포트0의 액세스 및 메모리포트1의 액세스의 양쪽이 제1 사이클에 있어서 각각 메모리뱅크0(125) 및 메모리뱅크1(135)에서 미스한 경우의 제2 사이클째의 동작을 도시한 도면이다. 이 제2 사이클은 시간적으로 제1 사이클 후의 사이클이다.
이 제2 사이클에 있어서 메모리뱅크0의 입력어드레스 셀렉터(108)은 메모리포트1측 즉 명령레지스터(110)에 설정되어 있는 LD명령의 액세스어드레스를 선택한다. 이 어드레스에 의해 2웨이의 세트어소시에이티브방식의 캐시메모리인 메모리뱅크0(125)를 검색한다. 어드레스가 히트하고 있으면 대응하는 데이타를 셀렉터(143)에서 출력하고 셀렉터(156)에 의해 이 메모리뱅크0(125)의 데이타를 데이타캐시(430)의 메모리포트1측의 리드데이타로서 출력하고 이 메모리포트1측의 액세스를 종료한다. 어드레스가 미스하고 있으면 제2 사이클의 동작은 여기까지로 하고 제3 사이클에서 메인메모리(440)을 액세스하도록 제어회로(160)이 판단한다.
마찬가지로, 메모리뱅크1의 입력어드레스 셀렉터(118)은 메모리포트0측 즉 명령레지스터(100)에 설정되어 있는 LD명령의 액세스 어드레스를 선택한다. 이 어드레스에 의해 2웨이의 세트어소시에이티브방식의 캐시메모리인 메모리뱅크1(135)를 검색한다. 어드레스가 히트하고 있으면 대응하는 데이타를 셀렉터(153)에서 출력하고 셀렉터(146)에 의해 이 메모리뱅크1(135)의 데이타를 데이타캐시(430)의 메모리포트0측의 리드데이타로서 출력하고 이 메모리포트0측의 액세스를 종료한다. 어드레스가 미스하고 있으면, 제2 사이클의 동작은 여기까지로 하고 제3 사이클에서 메인메모리(440)을 액세스하도록 제어회로(160)이 판단한다.
이상과 같이, 본 실시예에서는 각 메모리액세스는 2웨이의 세트어소시에이티브방식의 캐시메모리인 메모리뱅크0(125) 및 메모리뱅크1(135)의 양쪽을 검색하고 히트판정을 실행하고 있다. 즉, 데이타캐시(430)은 캐시용량이 각 메모리뱅크의 용량의 합이고 또한 4웨이의 세트어소시에이티브방식의 캐시메모리로서 동작하고 있게 된다.
2개의 메모리액세스명령을 동시에 실행하는 경우에는 상기에서 설명한 바와 같이 2사이클에서 4웨이의 세트어소시에이티브방식의 캐시메모리로서 동작한다. 여기에서, 메모리포트0측의 액세스가 메모리뱅크0(125)에서 히트하고, 메모리포트1측의 액세스가 메모리뱅크1(135)에서 히트하면, 1사이클에서 2개의 메모리액세스명령을 동시에 실행할 수 있다.
따라서, 2개의 메모리액세스명령을 1사이클에서 동시에 실행하고 종료하기 위해서는 메모리뱅크0(125)에서 히트할 가능성이 높은 LD명령은 메모리포트0측에서 데이타캐시(430)을 액세스하고, 메모리뱅크1(135)에서 히트할 가능성이 높은 LD명령은 메모리포트1측에서 데이타캐시(430)을 액세스하면 좋다. 이와 같은 제어는 LD명령중의 메모리포트 지정히트부(102) 및 (112)의 정보로 가능하다.
프로세서(410)의 제어회로(413)에 있어서, 메인메모리(440) 또는 명령캐시(420)에서 리드한 메모리액세스명령 예를 들면 LD명령중의 메모리포트 지정힌트부를 해독하고 메모리포트0을 지정하고 있으면 그 명령을 명령레지스터(100)에 설정하고, 메모리포트1을 지정하고 있으면 그 명령을 명령레지스터(110)에 설정한다. 명령레지스터(100)에 설정된 메모리액세스명령은 제1 사이클에 있어서 메모리뱅크0(125)를 액세스하고, 명령레지스터(110)에 설정된 메모리액세스명령은 제1 사이클에 있어서 메모리뱅크1(135)를 액세스하므로, 각각의 메모리뱅크(125) 및 (135)에서 히트할 가능성이 높아지고, 이들 2개의 메모리액세스명령을 1사이클에서 종료할 수 있는 확률이 높아진다.
또한, LD명령의 메모리포트 지정힌트부(102) 및 (112)로의 정보의 설정은 상기 설명한 데이타캐시를 갖는 프로세서로 이루어지는 데이타처리장치용 컴파일러가 프로그램을 컴파일할 때 상기 데이타캐시의 구조, 프로그램의 메인메모리로의 액세스순서, 데이타캐시의 이용예정을 근거로 해서 컴파일하는 것에 의해 LD명령의 메모리포트 지정힌트부(102) 및 (112)에 연산실행전에 사전에 설정되어 있는 것으로 한다. 이 설정에 의해, 프로세서에서의 실행시에 메모리포트0측의 명령과 메모리포트1측의 명령의 메모리액세스가 동일한 메모리뱅크를 동시에 액세스할 확률을 적게 할 수 있다.
이상에서 설명한 바와 같이, 상술한 실시예에 있어서는 2개의 메모리액세스명령이 동시에 실행되는 경우 2사이클에서 4웨이의 세트어소시에이티브방식의 캐시메모리로서 동작한다. 한편, 메모리액세스명령이 1개만 실행되는 경우에는 캐시메모리를 1사이클에서 4웨이의 세트어소시에이티브방식의 캐시메모리로서 동작할 수도 있다. 도 4는 이 동작을 도시한 도면이다.
도 4는 명령레지스터(100)에 설정된 LD명령을 실행하는 경우의 도면이다. 메모리뱅크0의 입력어드레스 셀렉터(108) 및 메모리뱅크1의 입력어드레스 셀렉터(118)은 모두 메모리포트0측 즉 명령레지스터(110)에 설정되어 있는 LD명령의 액세스어드레스를 선택한다. 이 어드레스에 의해 2웨이의 세트어소시에이티브방식의 캐시메모리인 메모리뱅크0(125) 및 메모리뱅크1(135)를 동시에 검색한다. 어느쪽인가의 메모리뱅크에서 어드레스가 히트하고 있으면 대응하는 데이타를 셀렉터(143) 또는 셀렉터(153)에서 출력하고 셀렉터(146)에 의해 이 데이타를 데이타캐시(430)의 메모리포트0측의 리드데이타로서 출력하고 이 메모리포트0측의 액세스를 종료한다. 어드레스가 양쪽의 메모리뱅크에서 모두 미스하고 있으면, 제1 사이클의 동작은 여기까지로 하고 제2 사이클에서 메인메모리(440)을 액세스하도록 제어회로(160)이 판단한다.
이상과 같이, 메모리액세스명령이 1개뿐인 경우에는 1사이클에서 4웨이의 세트어소시에이티브방식의 캐시메모리로서 동작할 수 있다.
이상의 설명에서는 메모리액세스가 메모리뱅크0(125) 또는 메모리뱅크1(135)중의 어느 한쪽에서 히트한 경우를 중심으로 설명하였다. 이하에서는 메모리액세스가 메모리뱅크0(125) 및 메모리뱅크1(135)의 양쪽에서 미스한 경우의 동작에 대해서 설명한다.
도 3의 동작 결과, 메모리포트0측 즉 명령레지스터(100)에 설정되어 있는 LD명령의 액세스 어드레스가 메모리뱅크0(125) 및 메모리뱅크1(135)의 양쪽 모두 미스였던 경우에는 제3 사이클째에 메인메모리(440)을 액세스한다. 메인메모리(440)에서 리드된 데이타는 프로세서(410)으로 전송되고 레지스터파일(106)에 저장된다. 이 때, 데이타캐시(430)은 가까운 장래에 재차 이 데이타가 액세스될 가능성이 있으므로, 데이타캐시(430)중에도 기억해 둔다. 데이타캐시(430)중의 메모리뱅크중 어느쪽에 기억할지는 원래 어느쪽의 메모리포트에서 액세스되었는지에 따라 제어한다. 이 경우에는 메모리포트0측 즉 명령레지스터(100)에 설정되어 있는 명령에 의해 액세스되었으므로 메모리뱅크0(125)에 기억한다. 메모리뱅크0(125)중 어느 웨이에 기억할지는 예를 들면 가장 빠른 시각에 액세스된 웨이를 선택해서 기억한다. 이 방식을 LRU방식이라 한다.
마찬가지로, 도 3의 동작 결과, 메모리포트1측 즉 명령레지스터(110)에 설정되어 있는 LD명령의 액세스 어드레스가 메모리뱅크0(125) 및 메모리뱅크1(135)의 양쪽 모두 미스였던 경우에는 제3 사이클째 이후에 메인메모리(440)을 액세스한다. 제3 사이클째에 즉시 메인메모리(440)을 액세스할지 그 이후의 사이클에서 메인메모리(440)을 액세스할지는 메모리포트0측의 미스의 상태에 따른다. 즉, 메모리포트0측도 미스이고 메인메모리(440)을 액세스하는 경우에는 제3사이클째에서 메모리포트0측의 처리를 실행하고 메모리포트1측의 처리는 그 후로 된다.
메인메모리(440)에서 리드된 데이타는 메모리포트0측으로 부터의 액세스의 경우와 마찬가지로 프로세서(410)으로 전송되고 레지스터 파일(106)에 저장된다. 이 때, 데이타캐시(430)은 가까운 장래에 재차 이 데이타가 액세스될 가능성이 있으므로 데이타캐시(430)중에도 기억해 둔다. 데이타캐시(430)중의 메모리뱅크중 어느쪽에 기억할지는 원래 어느쪽의 메모리포트에서 액세스되었는지에 따라서 제어한다. 이 경우에는 메모리포트1측 즉 명령레지스터(110)에 설정되어 있는 명령에 의해 액세스되었으므로, 메모리뱅크1(135)에 기억한다. 메모리뱅크1(135)내의 어느 웨이에 기억할지는 예를 들면 LRU방식으로 웨이를 선택해서 기억한다.
메모리액세스가 1사이클에 1개뿐인 경우에는 도 4에 도시한 바와 같이 양쪽의 메모리뱅크(125) 및 (135)를 동시에 검색하고 히트/미스판정을 실행한다. 양쪽의 메모리뱅크(125) 및 (135)가 모두 미스인 경우에는 제2 사이클에서 메인메모리(440)으로 액세스한다. 메인메모리(440)에서 리드된 데이타는 프로세서(410)으로 전송되고 레지스터파일(106)에 저장된다. 이 때, 데이타캐시(430)은 가까운 장래에 재차 이 데이타가 액세스될 가능성이 있으므로, 데이타캐시(430)중에도 기억해 둔다. 데이타캐시(430)중의 메모리뱅크 중 어느쪽에 기억할지는 원래 어느쪽의 메모리포트에서 액세스되었는지에 따라서 제어할 수 있다. 도 4의 경우에는 메모리포트0측 즉 명령레지스터(100)에 설정되어 있는 명령에 의해 액세스되었으므로 메모리뱅크0(125)에 기억한다. 메모리뱅크0(125)중 어느 웨이에 기억할지는 예를 들면 LRU방식으로 웨이를 선택해서 기억한다.
또, 별도의 제어방식으로서 메모리뱅크0(125)내의 2개의 웨이와 메모리뱅크1(135)내의 2개의 웨이를 대등하게 취급하고 전체로서 4웨이의 세트어소시에이티브방식으로 간주학고 4개의 웨이중에서 1개의 웨이를 선택해서 기억할 수도 있다. 이 경우에는 상기 4개의 웨이중에서 가장 빠른 시각에 액세스된 웨이를 선택해서 기억하는 LRU방식을 채용할 수도 있다.
지금까지 설명한 도 1의 구성에서는 양쪽의 메모리뱅크(125) 및 (135) 모두 미스하는 경우 이것을 검색하기 위해 2사이클을 필요로 한다. 약간의 하드웨어를 추가하는 것에 의해 양쪽의 메모리뱅크(125) 및 (135) 모두 미스하는 경우를 1사이클에서 검색할 수 있다. 도 6에 그 블럭도를 도시한다.
도 6에 있어서, 메모리뱅크0(125)는 메모리뱅크1(135)의 어드레스태그 메모리어레이(131) 및 (132)의 카피를 (126) 및 (127)에 갖고 어드레스태그 메모리어레이(126) 및 (127)에서 리드한 태그를 셀렉터(108)에서 선택된 어드레스의 상위비트와 비교하는 비교기(144) 및 (145)가 도 1의 구성에 대해서 추가되어 있다. 이것에 의해, 메모리뱅크0(125)내의 어드레스검색을 실행하고 있는 사이클과 병행해서 메모리뱅크1(135)의 어드레스검색을 실행할 수 있으므로, 만일 양쪽의 메모리뱅크 모두 미스한 경우에는 1사이클에서 검출할 수 있다. 따라서, 제2 사이클에서는 메모리뱅크1(135)를 액세스하지 않고 메인메모리(440)의 액세스를 기동할 수 있고 데이타캐시(430)의 미스시의 처리를 고속화할 수 있다.
메모리뱅크1(135)측도 마찬가지로 메모리뱅크0(125)의 어드레스태그 메모리어레이(121) 및 (122)의 카피를 (136) 및 (137)에 갖고 어드레스태그 메모리어레이(136) 및 (137)에서 리드한 태그를 셀렉터(118)에서 선택된 어드레스의 상위비트와 비교하는 비교기(154) 및 (155)가 도 1의 구성에 대해서 추가되어 있다. 이것에 의해, 메모리뱅크1(135)내의 어드레스검색을 실행하고 있는 사이클과 병행해서 메모리뱅크0(125)의 어드레스검색을 실행할 수 있으므로, 만일 양쪽의 메모리뱅크 모두 미스한 경우에는 1사이클에서 검출할 수 있다. 따라서, 제2 사이클 이후에는 메모리뱅크0(125)을 액세스하지 않고 메인메모리(440)의 액세스를 기동할 수 있고 데이타캐시(430)의 미스시의 처리를 고속화할 수 있다.
이상 설명한 바와 같이 본 실시예에 의하면, 제1 사이클에서 양쪽의 메모리뱅크(125) 및 (135)의 미스판정을 할 수 있으므로, 데이타캐시(430)의 미스시의 처리를 고속화할 수 있는 효과가 있다.
또한, 상기 실시예에서는 메모리뱅크의 수가 2이고, 메모리포트의 수가 2인 경우에 대해서 설명했지만 본 발명은 이들 수에 한정되는 것은 아니다.
메모리뱅크의 수가 3이상이고 메모리포트의 수가 3이상인 경우도 본 발명의 범위이다.
예를 들면, 메모리뱅크의 수가 4이고 메모리포트의 수가 4인 경우도 본 발명의 범위이다. 이 경우, 제1 사이클에서는 각각 제1 메모리액세스포트가 제1 메모리뱅크를, 제2 메모리액세스포트가 제2 메모리뱅크를, 제3 메모리액세스포트가 제3 메모리뱅크를, 제4 메모리액세스포트가 제4 메모리뱅크를 액세스하고, 제2 사이클 이후에는 각각 그 이외의 메모리뱅크를 액세스한다. 예를 들면, 제2 사이클에서는 각각 제1 메모리액세스포트가 제2 메모리뱅크를, 제2 메모리액세스포트가 제3 메모리뱅크를, 제3 메모리액세스포트가 제4 메모리뱅크를, 제4 메모리액세스포트가 제1 메모리뱅크를 액세스하고, 제3 사이클에서는 각각 제1 메모리액세스포트가 제3 메모리뱅크를, 제2 메모리액세스포트가 제4 메모리뱅크를, 제3 메모리액세스포트가 제1 메모리뱅크를, 제4 메모리액세스포트가 제2 메모리뱅크를 액세스하고, 제4 사이클에서는 각각 제1 메모리액세스포트가 제4 메모리뱅크를, 제2 메모리액세스포트가 제1 메모리뱅크를, 제3 메모리액세스포트가 제2 메모리뱅크를, 제4 메모리액세스포트가 제3 메모리뱅크를 액세스한다.
또, 메모리뱅크의 수가 4이고 메모리포트의 수가 2인 경우도 본 발명의 범위이다. 이 경우, 제1 사이클에서는 각각 제1 메모리액세스포트가 제1 메모리뱅크 및 제2 메모리뱅크를, 제2 메모리액세스포트가 제3 메모리뱅크 및 제4 메모리뱅크를 액세스하고, 제2 사이클이후에서는 각각 그 이외의 메모리뱅크를 액세스한다. 예를 들면, 제2 사이클에서는 각각 제1 메모리액세스포트가 제3 메모리뱅크 및 제4 메모리뱅크를, 제2 메모리액세스포트가 제1 메모리뱅크 및 제2 메모리뱅크를 액세스한다.
이상 설명한 바와 같이, 메모리뱅크의 수가 2이상이고 또 메모리포트의 수가 2이상인 경우이면 본 발명의 범위이다.
이상 설명한 바와 같이 본 발명에 의하면 이하의 효과가 있다.
우선, 메모리를 여러개의 메모리뱅크로 나누고 병렬로 동작이 가능하기 때문에 여러개의 메모리액세스를 동시에 처리할 수 있는 멀티포트메모리로서의 기능을 실현할 수 있다.
또, 제1 사이클에서 액세스한 메모리뱅크로 액세스할 어드레스가 기억되어 있으면, 1사이클에서 여러개의 메모리액세스를 병렬로 처리할 수 있다.
그 결과, 1사이클에서 액세스한 메모리뱅크로 액세스할 어드레스가 기억되어 있으면, 1사이클에서 여러개의 메모리액세스를 병렬로 처리할 수 있으므로, 멀티포트메모리로서의 기능을 실현할 수 있다. 예를 들면, 메모리뱅크수를 2로 하는 경우 메모리셀의 액세스시간을 1/2로 단축하지 않고 또 반대로 전체의 사이클시간을 2배로 연장하지 않고 2포트메모리로서의 기능을 실현할 수 있다.
또, 메모리뱅크의 선택에 있어서 어드레스를 사용하지 않고 실행하고 있으므로, 어드레스 입력셀렉터에서의 선택을 다른 처리와 병행해서 실행할 수 있고 이 선택시간이 크리티컬패스로 되지 않는다. 그 때문에, 메모리의 액세스시간이 연장되지 않고 멀티포트메모리로서의 기능을 실현할 수 있다.
이상과 같이, 본 발명에 관한 멀티포트메모리는 메모리의 액세스시간이 연장되지 않고 멀티포트메모리를 실현할 수 있고 슈퍼스칼라 프로세서나 VLIW프로세서 등 1사이클에 여러개의 메모리액세스처리를 요구하는 프로세서를 사용한 데이타처리장치의 메모리 특히 캐시메모리로서 사용하는데 적합하다.
Claims (4)
- 여러개의 메모리뱅크로 분할한 메모리에 있어서,상기 메모리뱅크의 각각은 데이타와 그 어드레스를 쌍으로 해서 기억하는 수단, 상기 메모리밖에서 입력되는 어드레스에 대응하는 어드레스가 이 메모리뱅크내에 존재하는지 존재하지 않는지를 판단하는 판단수단 및 상기 대응하는 어드레스가 존재할 때 상기 어드레스와 쌍으로 되는 데이타를 액세스하고 상기 메모리뱅크의 밖으로 출력하는 수단을 갖고,상기 메모리는 상기 여러개의 메모리포트에서 입력되는 여러개의 어드레스 각각을 상기 여러개의 메모리뱅크중의 어느 메모리뱅크에 입력할지를 선택해서 입력하는 제1 수단과 상기 각 메모리뱅크에서 리드된 데이타를 상기 메모리뱅크에 입력된 어드레스가 입력된 상기 메모리포트에 대응하는 데이타출력용 포트로 출력하는 수단을 갖는 것을 특징으로 하는 멀티포트 메모리.
- 제1항에 있어서,상기 제1 수단은 제1 사이클에서 상기 여러개의 메모리포트중의 1개인 제1 메모리포트에서 입력되는 제1 어드레스를 상기 여러개의 메모리뱅크중의 1개인 제1 메모리뱅크에 입력하고, 상기 여러개의 메모리포트중의 1개인 제2 메모리포트에서 입력되는 제2 어드레스를 상기 여러개의 메모리뱅크중의 1개인 제2 메모리뱅크에 입력하고,상기 제1 메모리뱅크내의 상기 판단수단이 상기 제1 어드레스와 쌍으로 되는 데이타가 존재하지 않는다고 판단했을 때, 상기 제1 사이클보다 후의 사이클에서 상기 제2 메모리뱅크에 상기 제1 어드레스를 입력하고,상기 제2 메모리뱅크내의 상기 판단수단이 상기 제2 어드레스와 쌍으로 되는 데이타가 존재하지 않는다고 판단했을 때, 상기 제1 사이클보다 후의 사이클에서 상기 제1 메모리뱅크에 상기 제2 어드레스를 입력하는 것을 특징으로 하는 멀티포트메모리.
- 제1항에 있어서,상기 제1 수단은 제1 사이클에서 상기 여러개의 메모리포트중의 1개인 제1 메모리포트에서 입력되는 제1 어드레스를 상기 여러개의 메모리뱅크중의 모든 메모리뱅크에 입력하는 것을 특징으로 하는 멀티포트 메모리.
- 특허청구범위 제1항 또는 제2항에 기재된 멀티포트메모리를 데이타메모리로서 접속해서 사용되는 데이타처리장치로서,상기 데이타처리장치의 제어를 프로그램하는 명령중 상기 데이타메모리를 액세스하는 명령중에 마련되어 있는 소정의 비트수의 정보를 디코드하는 수단과 디코드결과에 따라서 상기 명령을 실행하는 수단을 갖고,여기에서 상기 정보는 상기 여러개의 메모리포트중의 어느 메모리포트를 액세스할지를 지정하는 정보인 것을 특징으로 하는 데이타처리장치.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP1996/000338 WO1997030395A1 (fr) | 1996-02-16 | 1996-02-16 | Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire |
Publications (1)
Publication Number | Publication Date |
---|---|
KR19990082423A true KR19990082423A (ko) | 1999-11-25 |
Family
ID=14152927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980706156A KR19990082423A (ko) | 1996-02-16 | 1996-02-16 | 멀티포트메모리 및 그것을 액세스하는 데이타처리장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6282505B1 (ko) |
EP (1) | EP0881575A4 (ko) |
JP (1) | JP3593346B2 (ko) |
KR (1) | KR19990082423A (ko) |
WO (1) | WO1997030395A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100764062B1 (ko) * | 2006-05-01 | 2007-10-09 | 엘아이지넥스원 주식회사 | 항공기의 다중화 컴퓨터 시스템 |
US8583873B2 (en) | 2010-03-10 | 2013-11-12 | Samsung Electronics Co., Ltd. | Multiport data cache apparatus and method of controlling the same |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000002133A2 (de) * | 1998-07-03 | 2000-01-13 | Siemens Aktiengesellschaft | Verfahren zur steuerung der zuteilung eines speicherzugriffs |
US6775752B1 (en) * | 2000-02-21 | 2004-08-10 | Hewlett-Packard Development Company, L.P. | System and method for efficiently updating a fully associative array |
US6665775B1 (en) * | 2000-09-22 | 2003-12-16 | Intel Corporation | Cache dynamically configured for simultaneous accesses by multiple computing engines |
US20020108021A1 (en) * | 2001-02-08 | 2002-08-08 | Syed Moinul I. | High performance cache and method for operating same |
US6988167B2 (en) * | 2001-02-08 | 2006-01-17 | Analog Devices, Inc. | Cache system with DMA capabilities and method for operating same |
US7206904B2 (en) * | 2002-03-20 | 2007-04-17 | Hewlett-Packard Development Company, L.P. | Method and system for buffering multiple requests from multiple devices to a memory |
US20040111567A1 (en) * | 2002-12-05 | 2004-06-10 | Anderson Adrian John | SIMD processor with multi-port memory unit |
GB2396031B (en) * | 2002-12-05 | 2005-10-26 | Imagination Tech Ltd | A SIMD processor with multi-port memory unit |
WO2005048112A1 (ja) | 2003-11-12 | 2005-05-26 | Matsushita Electric Industrial Co., Ltd. | キャッシュメモリおよびその制御方法 |
US8713286B2 (en) * | 2005-04-26 | 2014-04-29 | Qualcomm Incorporated | Register files for a digital signal processor operating in an interleaved multi-threaded environment |
US7652922B2 (en) | 2005-09-30 | 2010-01-26 | Mosaid Technologies Incorporated | Multiple independent serial link memory |
TWI460736B (zh) * | 2005-09-30 | 2014-11-11 | Conversant Intellectual Property Man Inc | 獨立連結與記憶庫選擇 |
WO2007036050A1 (en) | 2005-09-30 | 2007-04-05 | Mosaid Technologies Incorporated | Memory with output control |
US7747833B2 (en) * | 2005-09-30 | 2010-06-29 | Mosaid Technologies Incorporated | Independent link and bank selection |
KR100850277B1 (ko) | 2006-11-15 | 2008-08-04 | 삼성전자주식회사 | 멀티패쓰 억세스블 반도체 메모리 장치에서의 뱅크어드레스 할당방법 |
US7870326B2 (en) | 2006-07-28 | 2011-01-11 | Samsung Electronics Co., Ltd. | Multiprocessor system and method thereof |
KR100754359B1 (ko) * | 2006-03-29 | 2007-09-03 | 엠텍비젼 주식회사 | 복수의 공유 블록을 포함하는 다중 포트 메모리 장치 |
WO2008035417A1 (fr) * | 2006-09-21 | 2008-03-27 | Mitsubishi Electric Corporation | Dispositif d'exécution d'accès, mémoire cache, dispositif de stockage de données, et dispositif d'accès de lecture |
US8745359B2 (en) | 2008-02-26 | 2014-06-03 | Nec Corporation | Processor for concurrently executing plural instruction streams |
TW201044371A (en) * | 2009-06-15 | 2010-12-16 | Novatek Microelectronics Corp | Memory architecture of display device and reading method thereof |
JP6158154B2 (ja) * | 2014-09-19 | 2017-07-05 | 株式会社東芝 | プロセッサシステム、メモリ制御回路およびメモリシステム |
US10168938B2 (en) * | 2016-11-25 | 2019-01-01 | Hughes Network Systems, Llc | LDPC decoder design to significantly increase throughput in ASIC by utilizing pseudo two port memory structure |
US11226909B2 (en) | 2018-08-24 | 2022-01-18 | Rambus Inc. | DRAM interface mode with interruptible internal transfer operation |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4129614C2 (de) * | 1990-09-07 | 2002-03-21 | Hitachi Ltd | System und Verfahren zur Datenverarbeitung |
US5542067A (en) * | 1992-04-23 | 1996-07-30 | International Business Machines Corporation | Virtual multi-port RAM employing multiple accesses during single machine cycle |
US5502683A (en) * | 1993-04-20 | 1996-03-26 | International Business Machines Corporation | Dual ported memory with word line access control |
US5875470A (en) * | 1995-09-28 | 1999-02-23 | International Business Machines Corporation | Multi-port multiple-simultaneous-access DRAM chip |
US6023745A (en) * | 1996-08-08 | 2000-02-08 | Neomagic Corporation | Scoreboarding for DRAM access within a multi-array DRAM device using simultaneous activate and read/write accesses |
-
1996
- 1996-02-16 EP EP96902453A patent/EP0881575A4/en not_active Withdrawn
- 1996-02-16 US US09/125,285 patent/US6282505B1/en not_active Expired - Fee Related
- 1996-02-16 KR KR1019980706156A patent/KR19990082423A/ko not_active Application Discontinuation
- 1996-02-16 JP JP52917597A patent/JP3593346B2/ja not_active Expired - Fee Related
- 1996-02-16 WO PCT/JP1996/000338 patent/WO1997030395A1/ja not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100764062B1 (ko) * | 2006-05-01 | 2007-10-09 | 엘아이지넥스원 주식회사 | 항공기의 다중화 컴퓨터 시스템 |
US8583873B2 (en) | 2010-03-10 | 2013-11-12 | Samsung Electronics Co., Ltd. | Multiport data cache apparatus and method of controlling the same |
Also Published As
Publication number | Publication date |
---|---|
EP0881575A4 (en) | 2002-04-17 |
EP0881575A1 (en) | 1998-12-02 |
US6282505B1 (en) | 2001-08-28 |
JP3593346B2 (ja) | 2004-11-24 |
WO1997030395A1 (fr) | 1997-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR19990082423A (ko) | 멀티포트메모리 및 그것을 액세스하는 데이타처리장치 | |
US7694077B2 (en) | Multi-port integrated cache | |
JP3098071B2 (ja) | 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム | |
US6314493B1 (en) | Branch history cache | |
US5274790A (en) | Cache memory apparatus having a plurality of accessibility ports | |
US4989140A (en) | Single chip pipeline data processor using instruction and operand cache memories for parallel operation of instruction control and executions unit | |
US4910667A (en) | Vector processor with vector buffer memory for read or write of vector data between vector storage and operation unit | |
KR19980063475A (ko) | 다중-포트 인터리브 캐쉬 메모리 | |
EP0125855B1 (en) | Buffer-storage control system | |
JPH08328958A (ja) | 命令キャッシュ、キャッシュメモリ装置及びその方法 | |
US6571316B1 (en) | Cache memory array for multiple address spaces | |
US20080098174A1 (en) | Cache memory having pipeline structure and method for controlling the same | |
US6785781B2 (en) | Read/write alignment scheme for port reduction of multi-port SRAM cells | |
US4348724A (en) | Address pairing apparatus for a control store of a data processing system | |
US5771377A (en) | System for speculatively executing instructions using multiple commit condition code storages with instructions selecting a particular storage | |
US8707014B2 (en) | Arithmetic processing unit and control method for cache hit check instruction execution | |
JP2009505180A (ja) | 少なくとも2つの処理ユニットと、及び少なくとも1つのメモリとを有する計算機システム内に形成される及び記憶装置、及びそれによる記憶方法 | |
US5420997A (en) | Memory having concurrent read and writing from different addresses | |
US4360869A (en) | Control store organization for a data processing system | |
US5197145A (en) | Buffer storage system using parallel buffer storage units and move-out buffer registers | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
US5752271A (en) | Method and apparatus for using double precision addressable registers for single precision data | |
US4348723A (en) | Control store test selection logic for a data processing system | |
JPH0836525A (ja) | 多重アクセスキャッシュ記憶装置 | |
JPH06161900A (ja) | キャッシュメモリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |