KR100220890B1 - 메모리 컨트롤러 및 메모리 제어방법 - Google Patents
메모리 컨트롤러 및 메모리 제어방법 Download PDFInfo
- Publication number
- KR100220890B1 KR100220890B1 KR1019970003124A KR19970003124A KR100220890B1 KR 100220890 B1 KR100220890 B1 KR 100220890B1 KR 1019970003124 A KR1019970003124 A KR 1019970003124A KR 19970003124 A KR19970003124 A KR 19970003124A KR 100220890 B1 KR100220890 B1 KR 100220890B1
- Authority
- KR
- South Korea
- Prior art keywords
- synchronization
- command
- issuing
- entry
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Executing Machine-Instructions (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
다중 프로세서가 설비된 메모리 컨트롤러는 메모리 액세스 오퍼레이션(액세스 명령의 오퍼레이션상태)의 과정을 관리하기 위하여 스코어 보드를 사용하고 실행 우선순위의 높은 레벨에서 동기화를 실행함에 있어서 오버헤드를 줄인다.
스코어 보드는 인식된 액세스 명령의 어드레스와 오퍼레이션코드 뿐만아니라 동기화의 수리에 답하여 동기화 플래그를 세트한채 유지한다. 메모리 컨트롤러는 프로세서로 부터의 동기화 명령이 수리된때에 동기화 플래그를 세트하고 동기화 실행오퍼레이션이 완료된후 동기화 플래그를 리셋한다.
Description
도 1은 본 발명에 따른 컴퓨터 시스템의 블록선도이다.
도 2는 본 발명의 제1 일 실시예에 따른 스코어보드의 구조를 설명하는 개념도이다.
도 3은 제1 일 실시예의 메모리 컨트롤러에 관한 블록선도이다.
도 4는 제1 일 실시예의 오퍼레이션을 설명하는 순서도이다.
도 5a 및 도 5b 제1 일 실시예에서 메모리 액세스 명령을 받아들인 순간의 메모리 컨트롤러의 오퍼레이션에 대한 순서도이다.
도 6은 제1 일 실시예의 뱅크 실행유닛에서 명령을 내기위한 결정과정에 대한 순서도이다.
도 7a에서 도 7c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 8a에서 도 8c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 9a에서 도 9c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 10a에서 도 10c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 11a에서 도 11c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 12a에서 도 12c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 13a에서 도 13c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 14a에서 도 14c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 15a에서 도 15c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 16a에서 도 16c까지는 제1 일 실시예에 있어서 두 개의 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 17은 본 발명의 제2 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
도 18은 제2 일 실시예의 뱅크 실행유닛에서 명령을 내기위한 결정과정에 대한 순서도이다.
도 19a 및 도 19b는 제2 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 20a 및 도 20b는 제2 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 21a 및 도 21b는 제2 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 22a 및 도 22b는 제2 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 23a 및 도 23b는 제2 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 24는 본 발명의 제3 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
도 25는 제3 일 실시예에서 메모리 액세스 명령을 받아들인 순간의 메모리 컨트롤러의 오퍼레이션에 대한 순서도이다.
도 26은 제3 일 실시예의 뱅크 실행유닛에서 명령을 내기위한 결정과정에 대한 순서도이다.
도 27a 및 도 27b는 제3 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 28a 및 도 28b는 제3 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 29a 및 도 29b는 제3 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 30a 및 도 30b는 제3 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 31a 및 도 31b는 제3 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 32a 및 도 32b는 제3 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 33a 및 도 33b는 제3 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 34는 본 발명의 제4 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
도 35은 제4 일 실시예의 뱅크 실행유닛에서 명령을 내기위한 결정과정에 대한 순서도이다.
도 36a 및 도 36b는 제4 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 37a 및 도 37b는 제4 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 38a 및 도 38b는 제4 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 39a 및 도 39b는 제4 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 40a 및 도 40b는 제4 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 41a 및 도 41b는 제4 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 42a 및 도 42b는 제4 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 43은 본 발명의 제5 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
도 44는 제5 일 실시예에서 메모리 액세스 명령을 받아들인 순간의 메모리 컨트롤러의 오퍼레이션에 대한 순서도이다.
도 45는 제5 일 실시예의 뱅크 실행유닛에서 명령을 내기위한 결정과정에 대한 순서도이다.
도 46은 제5 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 47은 제5 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 48은 제5 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 49는 제5 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 50은 제5 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 51은 제5 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 52는 제5 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 53은 제5 일 실시예에 있어서 스코어 보드의 예 및 동기화 완료테이블을 나타낸다.
도 54는 본 발명의 제6 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
도 55는 본 발명의 제7 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
도 56은 본 발명의 제8 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
도 57은 본 발명의 제9 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
도 58은 본 발명의 제10 일 실시예에 따른 스코어 보드의 구조를 설명하는 개념도이다.
* 도면의 주요부분에 대한 부호의 설명
1 : 프로세서 2 : 프로세서 버스
2a : 데이터 버스 2b : 어드레스 버스
3 : 버스 인터페이스 유닛 4 : I/O 컨트롤러
5 : HDD 6 : LaN
10 : 메모리 컨트롤러 11 : 스코어 보드
12,240 : 동기화 완료 테이블 100,110,120,130,200 : 스코어보드
108 : 뱅크실행유닛 161 : SYNC 라이트 포인터
162 : SYNC 리드포인터
[발명의목적]
본 발명의 목적은 다중 프로세서 시스템의 동기화 메모리 액세스 명령에서 오버헤드를 줄일수 있는 메모리 컨트롤러 및 메모리 제어방법을 제공하는 것이다.
[발명이속하는기술분야및그분야의종래기술]
본 발명은 다중프로세서 시스템에 적용된 메모리 컨트롤러와 메모리 제어방법에 관한것이며, 보다 상세하게는 메모리뱅크 방법에 의해 저장된 데이터를 동기화 시키는 메모리 컨트롤러와 메모리 제어방법에 관한 것이다.
다중프로세서 시스템에는 메모리-뱅크-타입 공용 주기억유닛를 제어하고 관리하며, 오더이탈(out-of-order)방식이나 약한오더(weak-order)방식으로 액세스 명령(데이터 및 어드레스를 포함)을 실행하는 메모리 컨트롤러가 설비되어져 있다.
상기의 메모리 컨트롤러는 독립 메모리 영역에 상응하는 각각의 뱅크 메모리를 독립적으로 제어하는 기능 뿐만아니라 약한오더 동기화를 일시적으로 강한오더 동기화로 대치하는 기능까지 가진다. 그러한 방법은 개략적으로 다음과 같이 나누어지는 동기화 오퍼레이션과 관련되어진다.
첫 번째 방법은 선입선출(FIFO) 기능을 가진 버퍼 메모리가 어드레스 오퍼레이션에 사용되어지고 프로세서로 부터 발행된 액세스 명령이 어드레스 오퍼레이션이 인식되어 지는 순서에 따라 실행되는 방법이다. 이러한 방법에 있어서, 시스템은 데이터 버스로부터 분리된 어드레스 버스를 가지게 될것이라고 추측할 수 있다. 여기서, 어드레스 오퍼레이션은 어드레스버스의 오퍼레이션을 의미한다.
제 2 방법은 스코어 보드라고 불리는 관리 테이블이 메모리(뱅크 메모리유닛)의 독립 제어범위 유닛으로 오퍼레이션(액세스 명령의 오퍼레이션상태)의 과정을 관리하는 방법이다. 이러한 방법에 있어서, 일단, 동기화 오퍼레이션이 실행되면 어드레스 오퍼레이션의 수리는 선행하는 오더가 완료될 때 까지 거절된다. 즉, 동기화 과정은 동기화 오퍼레이션을 재시도 하는 것에 의해 보장된다.
두 번째 방법은 라이트(라이트) 오퍼레이션(메모리 라이트 액세스 오퍼레이션)후 실행되어지는 리드 오퍼레이션(리드 액세스 오퍼레이션)에서 대기시간을 짧게하고, 첫 번째 방법에 비하여 메모리 사용효율을 증가시키기 때문에 실제오퍼레이션에 있어서 시스템의 처리량을 향상시킨다.
그러나, 이러한 방법들은 다음과 같은 문제점을 야기시킨다.
첫 번째 방법은 어드레스 오퍼레이션을 위한 FIFO 기능을 가진 버퍼 메모리를 사용함으로써 동기화 오퍼레이션의 실행이 보장된다. 그러나, 상기 시스템에서 데이터 오퍼레이션(데이터 버스의 오퍼레이션)은 항상 어드레스 오퍼레이션에 뒤이어서 실행되지는 않는다. 따라서, 데이터 오퍼레이션의 미완료는 어드레스 오퍼레이션용 FIFO 버퍼의 모두가 사용되어 지는 상태를 초래하게 되어 어드레스 오퍼레이션의 수리가 거절되는 상태가 발생될수도 있다. 덧붙여, 첫 번째 방법은 선행하는 라이트 오퍼레이션을 위한 데이터 전송이 완료되지 않았을때에는 이어지는 리드 오퍼레이션이 실행되지 않게 되어 리드 오퍼레이션에 있어서 더 큰 대기시간을 가지게 되는 단점을 가진다.
두 번째 방법은 관리 테이블의 사용에 의해 오퍼레이션의 상태를 관리함으로써 오더이탈 방식이나 약한오더 방식으로 메모리 액세스 오퍼레이션을 수행하게 된다. 그러나, 오퍼레이션이 동기화되면 후속오퍼레이션(동기화 조건을 만족하는 오퍼레이션)은 선행오퍼레이션이 완료될 때 까지 실행될수 없게되어 동기화 과정에서 시스템의 오버헤드를 증가시키는 문제점을 유발하게 된다.
[발명이이루고자하는기술적과제]
본 발명은 높은 레벨의 실행 우선순위를 가진 동기화 오퍼레이션을 실행함에 있어서 오버헤드를 줄이기 위하여 메모리 액세스 오퍼레이션과정(액세스 명령의 오퍼레이션상태)을 관리하기 위한 관리 테이블을 가진 시스템, 특히 다중 프로세서 시스템에 적용된 메모리 컨트롤러에 관한 것이다.
상기의 관리 테이블은 인식된 액세스 명령의 어드레스와 오퍼레이션코드에 덧붙여 동기화 오퍼레이션의 인식에 따른 동기화 플래그를 세트한채 유지한다. 프로세서로부터 액세스 오퍼레이션을 수리하면 메모리 컨트롤러는 관리 테이블에서 오퍼레이션코드와 어드레스를 세트하고 동기화 플래그를 리셋한다. 메모리 컨트롤러가 동기화 오퍼레이션을 수리하면 동기화 플래그는 세트된다. 동기화 오퍼레이션의 실행 완료후 동기화 플래그는 리셋된다. 상기의 방법에 있어서, 후속오퍼레이션이 적당히 수리되면 오퍼레이션을 요구하는 유닛이 요구를 재시도 하는 것이 방지되어 시스템의 오버헤드가 줄어든다.
더 나아가, 본 발명은 메모리 뱅크 시스템과 같은 독립적으로 제어가 가능한 다수의 메모리 영역을 가진 메모리를 제어하는 메모리 컨트롤러에 적합하다. 관리 테이블은 각각의 메모리 영역(각각의 뱅크 메모리)이 설비되어져 각 오퍼레이션과정의 상태를 나타내고 각 오퍼레이션의 실행 가능한 조건들을 유지한다. 또한, 관리 테이블은 동기화 오퍼레이션의 실행전에 실행된 오퍼레이션과 동기화 오퍼레이션의 실행후에 실행된 오퍼레이션을 구분하기 위해 사용된 동기화 플래그를 갖추고 있다. 관리 테이블은 동기화 오퍼레이션의 실행전 오퍼레이션이 완료되는지를 체크하고 심지어 동기화 오퍼레이션이 완료되어 지지 않은 상태에서 이어지는 오퍼레이션을 수리하는 것을 가능하게하여,
오퍼레이션을 요구하는 유닛이 요구를 재시도 하는 것을 막는다. 후속 동기화 오퍼레이션이 현재의 동기화 오퍼레이션의 실행이 완료되기 전에 발생하면 후속 동기화 오퍼레이션을 위한 요구의 수리는 거절되고 요구는 재시도 된다.
[발명의구성및작용]
하기에, 첨부된 도면을 참조하여 본 발명의 일 실시예들이 설명되어 질 것이다.
도1은 본 발명에 따른 컴퓨터 시스템의 블록선도이다. 도2는 본 발명의 제1 실시예에 관련된 스코어 보드의 구조를 설명하는 개념도이다. 도3은 제1실시예의 메모리 컨트롤러의 블록선도이다. 도4는 제1실시예의 오퍼레이션을 설명하는 순서도이다.
(시스템의 구성)
도1에 따르면, 본 발명의 시스템은 복수개의 프로세서(1)를 가진 다중 프로세서 시스템이며 공용 주기억 유닛으로서 bM0-bM3에 이르는 복수개의 뱅크 메모리로 구성된다.
각각의 프로세서(1)는 프로세서 버스(2)에 연결된 버스 인터페이스 유닛(3)을 경유하여 메모리 컨트롤러(10)에 액세스 명령을 발행한다. 프로세서 버스(2)에서, 데이터 버스(2a)는 어드레스 버스(2b)로부터 분리된다. 프로세서 버스(2)는 하드 디스켓부(HDD)(5)와 LaN 인터페이스(6)와 같은 I/O 장치에 연결되어 있는 I/O 컨트롤러(4)에 연결된다.
프로세서(1)로부터 메모리 액세스 명령을 받으면, 버스 인터페이스유닛(3)은 그것을 메모리 컨트롤러(10)에 전송한다. 메모리 컨트롤러(10)는 bM0-bM3에 이르는 각 뱅크 메모리에 대한 액세스 명령에 대응하여 액세스 오퍼레이션을 관리하는 스코어 보드(관리 테이블)(11) 및 동기화 완료 테이블(12)을 가진다. 메모리 컨트롤러는 독립 제어범위에 있어서 메모리 영역으로 bM0-bM3에 이르는 뱅크 메모리 각각을 제어하는 네가지의 인터리빙 기능을 가진다.
(스코어 보드의 구조)
도2에 도시된 바와같이, 메모리 컨트롤러(10)는 관리 테이블로서 기능하는 스코어 보드(11) 및 동기화 완료 테이블(12)을 가진다. 독립 제어범위 유닛으로 작용하는 메모리 영역이 뱅크 메모리라고 가정하면, 스코어 보드(11)는 bM0-bM3에 이르는 복수개의 뱅크 메모리 각각에 대해 세트되도록 제공된다. 뱅크 메모리 bM0-bM3 대신에 메모리 영역 0에서 3까지가 사용될수도 있을 것이다.
스코어 보드(11)는 오퍼레이션과정(액세스 명령의 오퍼레이션상태) 뿐만 아니라 각 오퍼레이션에 대한 실행가능한 조건들을 나타내는 테이블이다. 스코어 보드(11)는 동기화 오퍼레이션의 실행전에 실행된 오퍼레이션과 동기화 오퍼레이션의 실행후에 실행된 오퍼레이션을 구분하기 위해 사용되는 동기화 플래그(SYNc 플래그) 엔트리를 가지고 있다. 동기화 완료 테이블(12)은 동기화 오퍼레이션이 각각의 메모리 영역 0-3에서 완료되었는지 여부를 나타내는 테이블(SYNc 완료)이다. 본 실시예의 스코어 보드는 네 개의 독립 메모리 영역 0-3에 대응하는 스코어 보드 (100,110,120,130)로 구성된다. 각각의 스코어 보드는 엔트리 번호(102), 오퍼레이션코드(103), 어드레스(104), 오퍼레이션의 완료를 지시하는 완료 플래그(105), 오퍼레이션이 발행될 수 있는지를 지시하는 플래그(106), 엔트리가 타당한지를 지시하는 유효 플래그(107) 및 동기화 플래그(101)(SYNc 플래그)를 가진다.
엔트리 번호(102)는 스코어 보드에서 엔트리들을 구분하기 위해 사용되어진다. 오퍼레이션 코드(103)는 프로세서(1)가 요구하는 오퍼레이션의 형을 유지하기 위한 엔트리이다.(예를들어, "리드"는 리드 오퍼레이션을 의미하고 "라이트"는 라이트오퍼레이션을 의미한다.) 어드레스(104)는 액세스 되어지는 메모리 어드레스를 유지하기 위한 엔트리이다. 완료 플래그(105)는 명령의 발행이 완료되었음을 지시하는 엔트리이다. 유효 플래그(107)에 있어서, 플래그 V(유효)는 대응 엔트리가 유효할 때 세트되고 플래그 I(부당한)는 대응 엔트리가 무효일 때 세트된다. 달리 표현하면, 플래그 V에 대응하는 엔트리는 나중에 발행되어지고 플래그 I에 대응하는 엔트리는 발행되어지지않은 빈 엔트리이다.
각 스코어 보드에 제공된 뱅크 실행유닛(메모리 영역 0에서 부호 108에 의해 지시된)는 관련 스코어 보드로부터 선택된 엔트리의 어드레스, 뱅크 메모리를 구성하는 DRaM(동적 RaM)어드레스 및 RaS와 caS를 포함하는 메모리 제어신호를 생성할 뿐만 아니라 이후에 설명될 엔트리의 발행을 포함하는 과정을 수행한다. 뱅크 실행유닛(108,118,128, 및 138)은 동기화 완료 테이블에 연결된 각각의 스코어 보드 (100,110,120 및 130)에 제공된다.
동기화 플래그(SYNc 플래그)는 정상적으로 "0"에 세트(리셋)된다. 동기화 완료 테이블(12)에 있어서, 동기화 완료 플래그(SYNc 완료)는 각각의 독립 메모리 영역 0-3에 대해 제공되며 동기화의 완료를 의미하는 "0"에 세트된다.
프로세서(1)로 부터 동기화 명령을 받으면, 메모리 컨트롤러(10)는 스코어 보드(100,110,120,130)에 입력된 모든 유효엔트리에 대해서 동기화 플래그가 "1"에 세트되고 무효엔트리들에 대해서는 플래그가 "0"에서 유지된다. 어떤 시점에서, 동기화 완료 테이블(12)에 있는 동기화 완료 플래그가 유효엔트리들을 가진 메모리 영역에 대해 "1"로 세트되는 반면에 유효엔트리를 가지지 않는 메모리 영역에 대해 동기화 완료 플래그는 "0"에서 유지된다. 동기화 오퍼레이션과 다른 후속 오퍼레이션이 인식되면, 스코어 보드에 있는 동기화 플래그는 "0"에 세트되고 그것에 의해 동기화 명령전의 오퍼레이션으로부터 인식된 명령을 구별한다. 동기화 플래그가 "1"에 세트되는 마지막 명령이 대응 메모리 영역에서 사라지는 시점에서 동기화 완료 테이블(12)은 "0"으로 세트된다. 동기화 완료 테이블(12)에 있는 동기화 완료 플래그중 어느 하나라도 각 메모리 영역에 대해 "1"에 세트되는 한, 스코어 보드는 동기화 플래그가 실행 "1"에 있는 오퍼레이션만을 허용한다.
[실시예 1]
즉, 실시예1의 오퍼레이션은 도3 및 도4를 참조하여 다음과 같이 간략히 기술되어 질 수 있다. 이전에 이미 언급한바와 같이, 본 실시예의 메모리 컨트롤러(10)는 4가지 인터리빙 기능으로 4개의 메모리 영역 0-3에 대응하는 뱅크 메모리 bM0-bM3를 제어한다. 도3에 도시된 바와같이, 메모리 컨트롤러(10)는 실행유닛 (108,118,128,138)와 스코어 보드(100,110,120,130)로 구성되며 이들은 각자 독립적으로 뱅크 메모리 bM0-bM3에 대해 제공된다. 도3의 스코어 보드(100,110,120,130)에 있어서, 유효플래그는 "Val"로 표현되고 발행 플래그는 "En"에 의해 동기화 플래그는 "SYNc"에 의해 표현된다.
도4에 나타난 바와 같이, 프로세서 버스(2)로부터 메모리 액세스 명령을 수신한후, 버스 인터페이스유닛(3)은 그 명령을 메모리 컨트롤러(10)로 전송한다.(단계 S1) 메모리 영역 0-3중 하나에 메모리 액세스 오퍼레이션을 수신할 때 메모리 컨트롤러는 관련 스코어 보드에 엔트리를 만든다.(단계 S2)
도3에 나타난 바와 같이, 본 실시예에 있어서 메모리 어드레스는 뱅크 메모리 bM0-bM3에 4바이트 단위로 나뉘어 진다. 특히, 메모리 영역은 4바이트 단위로 뱅크 메모리 bM0-bM3로 할당되며 각 어드레스의 LSb쪽 4비트(0,4,8,c)로 부터 시작한다. 편의를 도모하기 위하여, 각 스코어 보드에 입력될 수 있는 엔트리의 수는 4개가 되도록 한다.
스코어 보드내로 액세스 오퍼레이션이 입력되면 컨트롤러(10)는 각 스코어 보드내에 있는 동기화 플래그를 "0"으로 세트한다.(단계 S3)
동기화 오퍼레이션이 인식되어 지는 순간에 모든 유효 플래그에 대한 동기화 플래그는 "1"에 세트된다.(단계 S4 및 S5) 특히, 동기화 플래그가 "1"에 있는 엔트리는 동기화 오퍼레이션의 발행전에 만들어진 엔트리이며 그 엔트리는 동기화 플래그가 "0"에 있는 엔트리들 보다 더 빨리 실행되어져야 한다는 것을 의미한다.
도3은 동기화 오퍼레이션이 뱅크 bM0에 대한 스코어 보드 100에서 두 개의 유효 엔트리들(유효 플래그 Val이 "V"인 엔트리), 뱅크 bM1에 대한 스코어 보드 (110)에서 한 개의 유효 엔트리, 뱅크 bM2에 대한 스코어 보드 120에서 무효 엔트리, 및 뱅크 bM3에 대한 스코어 보드 130에서 무효 엔트리로 인식되어 지는 경우를 나타낸다. 특히, 스코어 보드(100,110)에서 유효 플래그 Val이 "V"인 동기화 플래그(SYNc)는 "0"에서 "1"로 전환되고 유효 플래그 Val이 "I"인 엔트리는 "0"으로 남는다(전환되지 않은채로 남는다).
동시에, 동기화 완료 테이블(12)에서 개별 메모리 영역 0-3에 대응하는 동기화 완료 플래그에 관해서는, 메모리 영역 0(뱅크 bM0) 및 메모리 영역 1(뱅크 bM1)에 대응하여 유효엔트리들이 "0"에서 "1"로 전환하는 값을 갖는 반면에 메모리 영역 2 및 메모리 영역 3에 대응해서는 유효하지 않는 엔트리가 "0"에서 전환되지 않는 값을 가진다.
더군다나, 스코어 보드(100,110)에 있어서, 뱅크 bM0에 대한 엔트리 NO.1 및 뱅크 bM1에 대한 엔트리 번호0에서 발행가능 플래그 En이 가능하거나(YES) 혹은 실행가능하며, 실행되어지는 각각의 어드레스에 대해 오퍼레이션을 가능하게 한다.(단계 S6 및 S7)
실행유닛 E0,E1의 모든 액세스 오퍼레이션이 완료된후, 컨트롤러(10)는 가능 플래그 En과 동기화 플래그를 "NO"혹은 "0"으로 리셋한다.
이때, 동기화 플러그가 "1"로 세트되는 엔트리가 뱅크bM1에 대응하는 스코어 보드(110)로부터 사라지기 때문에, 동기화 완료 테이블(12)에 있는 대응 동기화 완료 플래그는 "0"으로 리셋된다.
후속 메모리 액세스 오퍼레이션이 요구될때, "0" 의 동기화 플래그는 액세스 명령에 대응하는 메모리 영역에 대한 스코어보드에 입력된다. 즉, 새로운 후속 오퍼레이션은 동기화 오퍼레이션전에 동기화 플래그가 "1"에 세트되어 있는 동기화 오퍼레이션으로 부터 구별되어진다. 더군다나, 동기화 완료 플래그가 동기화 완료 테이블(12)에서 "0"이 아닌 엔트리(메모리영역 0,1)이 존재하기 때문에 도3에 나타난 상태에서 제2 동기화 오퍼레이션이 요구될때 제2 동기화 오퍼레이션의 수리는 거절되고 동기화 오퍼레이션은 재시도 된다. 모든 동기화 플래그가 "0"에 놓여 있다는 것은 동기화 오퍼레이션이 완료되었다는 것을 의미한다. 따라서, 동기화 완료 테이블(12)은 이경우에 생략될것이다. 하기에서, 제1 실시예의 조작이 더 상세히 설명되어 질것이다.
먼저, 제1 실시예에서 메모리 액세스 명령이 cPU1에 의해 생기는 발행되는 경우이 처리는 도5를 참조함으로써 설명될것이다.
cPU1에 의해 발행된 메모리 액세스 명령은 버스(2)를 경유하여 버스 인터페이스 유닛(3)에 보내진다. 버스 인터페이스 유닛(3)는 수신된 메모리 액세스 명령을 메모리 컨트롤러(10)로 전송한다. (단계 S11)
수신된 메모리 액세스 명령이 동기화 명령이 아닌 메모리 액세스 명령일때, 메모리 컨트롤러(10)는 수신된 메모리 액세스 명령의 어드레스에 기초하여 스코어보드(100, 110, 120, 130) 중에서 상응하는 스코어보드를 선택한다. 아울러, 메모리 컨트롤러(10)는 선택된 스코어보드 위의 모든 엔트리 중에서 유효 플래그가 "I" 에 세트되어져 있는 엔트리(빈 엔트리)를 선택한다. 그후, 메모리 컨트롤러(10)는 전송된 메모리 액세스 명령을 선택된 엔트리속에 입력한다.(단계 S12)
메모리 액세스 명령을 입력할때. 메모리 컨트롤러(10)는 메모리 액세스 명령의 어드레스와 오퍼레이션 코드를 입력할 뿐만아니라 명령이 입력된 엔트리에 대해 유효 플래그를 "V"로 세트하고 동기화 플래그를 "0"으로 리셋한다.
버스 인터페이스 유닛(3)으로부터 동기화 명령을 수신할때. 메모리 컨트롤러(10)는 선택된 스코어보드에 입력된 유효 플래그가 "V"로 세트된 모든 엔트리에 대해서 동기화 플래그를 "1"로 세트한다.
아울러, 뱅크 실행 유닛(108, 118. 128, 138)의 제어하에서 메모리 컨트롤러(10)는 스코어보드로 부터 엔트리를 선택하고 그 엔트리속에서 명령를 발행한다.
단계 S12에서 입력된 엔트리 (메모리 액세스 명령)가 선택되고 그 엔트리에서 명령이 발행될때 (단계S13, YES), 선택된 엔트리에 대한 가능 플래그는 "NO"로 세트된다. (단계 S14) 발행된 메모리 액세스 명령은 버스 인터페이스 유닛 (3), 메모리 컨트롤러 (10) 및 뱅크 실행 유닛에 의해 실행된다. 메모리 액세스 명령의 실행 처리가 완료된 후, 메모리 컨트롤러(10)는 스코어보드에 있는 실행된 메모리 액세스 명령에 대한 엔트리에 저장된 유효 플래그를 "I"로 세트하고 동기화 플래그를 "0"으로 리셋한다. (단계 S15)
이러한 과정에의해, 실행된 메모리 액세스 명령이 입력된 엔트리는 자유롭게 된다.
상기에 기술된 과정을 통해, cPU1로 부터 보내진 메모리 액세스 명령은 실행된다.
다음으로, 스코어 보드(100, 110, 120 및 130)에 대응하도록 제공된 뱅크 실행 유닛(108,118,128 및 138)의 각각에서 명령을 발행하는 과정은 도 6을 참조함으로써 다음과 같이 기술된다.
발행될 메모리 액세스 명령이 스코어보드 위에 입력되는 엔트리에 관해서, 뱅크 실행유닛는 먼저 관련 엔트리에 대한 유효 플래그가 "I"인지 아닌지를 결정한다. (단계 S21)
관련 엔트리에 대한 유효 플래그가 "I"에 있을때, 뱅크 실행유닛은 관련 엔트리가 무효이기 때문에 관련 엔트리에 있는 메모리 액세스 명령이 발행될수 없다고 결정한다. (단계 S22)
관련 엔트리에 대한 유효 플래그가 "V"에 있을때 (단계S21, NO), 뱅크 실행유닛은 관련 엔트리에 대한 가능 플리그가 "NO"에 있는지의 여부를 결정한다. (단계 S23) 관련 엔트리에 대한 가능 플래그가 "NO"에 있을때, 뱅크 실행유닛은 관련 엔트리에 있는 명령이 이미 발행되었는지 혹은 발행 조건을 만족하지 않는지 및 관련 엔트리에 있는 메모리 액세스 명령을 발행하지 않는지를 결정한다. (단계 S24)
관련 엔트리에 대한 가능 플래그가 "YES"에 있을때 (단계 S23, NO),뱅크 실행유닛은 아이템 "SYNc 완료"가 동기화 완료 테이블(12)에 있는 모든 영역에 대해 Os를 가지는지 여부를 결정한다. (단계 S25) 아이템 "SYNc 완료"가 모든 영역에 대해 Os를 가지는 상태는 동기화 명령이 cPU1로부터 보내지지 않았다는 것을 의미하기 때문에, 뱅크 실행유닛은 관련 엔트리에 있는 메모리 액세스 명령이 발행될수 있음을 결정한다. (단계 S26)
아이템 "SYNc 완료"가 동기화 완료 테이블12에 있는 어떤 영역에 대해서 l을 가질때 (단계 S25, NO), 뱅크 실행 유닛은 관련 엔트리에 대한 동기화 플래그가 "0"인지를 결정한다. 관련 엔트리에 대한 동기화 플래그가 "0"일 때, 관련 엔트리내의 명령은 메모리 컨트롤러(10)이 동기화 명령을 수신한 후 관련 스코어보드에 입력된 메모리 액세스 명령이므로. 뱅크 실행 유닛은 메모리 액세스 명령을 발행하지 않는다. (단계 S28)
관련 엔트리 내에 기입된 메모리 액세스 명령이 동기화 명령이 보내지기 전에 입력된 메모리 액세스 명령이기 때문에, 뱅크 실행 유닛은 관련 엔트리에 있는 메모리 액세스 명령이 발행될 수 있다고 결정한다. (단계 S29) 상기의 결정 과정이 스코어 보드의 모든 엔트리에 관해서 수행되어 진후, 뱅크 실행 유닛은 하나 이상의 발행 가능한 엔트리중에서 하나의 엔트리을 선택하고 그 관련 엔트리의 발행 과정을 수행한다.
다음에는 cPU1가 오름차순으로 아래와 같은 명령을 보내는 순간에 첫번째 일 실시예에 있어서 메모리 컨트롤러의 실행과정이 설명된다.
(1)라이트 12380
(2)리드 246824
(3)리드 67830
(4)SYNc
(5)리드 abc70
도 7a∼16c은 영역1에 제공된 스코어 보드(110), 영역0에 제공된 스코어 보드(100) 및 동기화 완료 테이블(12) 내에 입력된 데이터 아이템을 나타낸다.
도 7a∼16c에 있어서, 각 엔트리에 있는 "가능/불가능 발행"을 나타내는 아이템은 도 6에서의 뱅크 실행유닛의 결정 결과를 다음과 같은 정보를 지닌다. (a) 도 6에서의 단계 S22에서의 결정결과에 대응: (b) 단계 S24에서의 결정과정에 대응; (x) 단계 S26에서의 결정결과에 대응; (c) 단계 S28에서의 결정결과에 대응 및 (y) 단계 S29에서의 결정결과에 대응. 이것은 오퍼레이션을 더 이해하기 쉽게 만든다. 그러자, 실제로 아이템은 "가능/불가능 발행" 명령이 지시하는 정보를 단지 유지한다.
도 7a∼도 7c는 스코어 보드(100, 110) 및 동기화 완료 테이블 (12)의 초기 상태를 나타낸다. 따라서, 스코어 보드(100, 110)에 있는 모든 엔트리는 사용되지 않는다(비어있다). 스코어 보드 100, 110 위의 아이템 "가능/불가능 발행" 하의 모든 엔트리들에 있어서, 불가능 발행을 지시하는 데이터가 입력된다. 이것은 뱅크 실행유닛(108, 118)이 도 6의 처리를 실행할 때 엔트리들이 무효하다는 것을 의미하는 (a)에 대응한다. 결과적으로 발행될 수 있는 엔트리는 없다.
도 8a∼도 8c는 명령(1) "라이트 12380" 이 버스 접속 유닛(3)으로부터 전송되는 경우에 있어서 스코어 보드(100,110) 및 동기화 완료 테이블(12)을 나타낸다. 메모리 컨트롤러(10)는 영역0에 대응하는 스코어 보드(100)로 부터 빈 엔트리 번호 0을 선택한다. 영역 0은 명령 "라이트 12380" 에 의해 배당된 어드레스 12380을 포함하는 선결된 어드레스를 할당한다. 메모리 컨트롤러(10)는 선택된 엔트리에 이러한 명령을 입력한다. 스코어 보드(110)에는 발행 가능한 엔트리가 없는 반면에 스코어 보드(100)위에 엔트리 번호 0은 발행될 수 있다.
도 9a ∼도9c는 메모리 컨트롤러(10)가 명령 (2) "리드 246824"을 수신한 경우에 있어서 스코어 보드(100, 110) 및 동기화 완료 테이블 (12)을 나타낸다. 메모리 컨트롤러 (10)는 명령 "리드 246824" 의 어드레스에 대응하는 영역1에 대한 스코어 보드(110)로부터 빈 엔트리 번호 0을 선택하고 그 엔트리내에 상기의 명령을 입력한다. 스코어 보드(100, 110) 각각의 엔트리 번호 0은 발행 가능하다.
도 10a ∼도 10c는 메모리 컨트롤러(10)가 명령(3) "리드 67830"을 수신한 경우에 있어서 스코어 보드(100, 110) 및 동기화 완료 테이블(12)를 나타낸다.
메모리 컨트롤러(10)는 명령 "리드 67830"의 어드레스에 대응하는 영역 0에 대한 스코어 보드(100)로 부터 빈 엔트리 번호 1을 선택하고 그 엔트리내에 상기의 명령을 입력한다. 스코어 보드(100) 상의 엔트리 번호 0과 엔트리 번호 1 및 스코어 보드(110) 상의 엔트리 번호 0은 발행 가능하다.
도 11a ∼도 11c는 뱅크실행유닛(108)이 스코어보드(100)상의 발행 가능 엔트리로부터 번호 0을 선택하고 그 엔트리를 발행하는 경우에 있어서 스코어보드(100,110) 및 동기화 완료 테이블(12)을 나타낸다. 스코어보드(100)상의 아이템 "가능/불가능 발행" 하에 있는 엔트리 번호 0에 있어서 "불가능 발행 이 지시하는 정보가 입력된다. 이것은 명령이 이미 발행되었음을 의미하는 (b)에 대응한다. 스코어보드(100, 110) 각각 위의 엔트리 번호 0이 발행될 수 있다.
도 12a ∼도 12c는 메모리 컨트롤러(10)가 버스 인터페이스 유닛(3)으로부터 동기화 명령(4) " SYNc 를 수신한 경우에 있어서 스코어보드(100, 110) 및 동기화 완료 테이블(12)을 나타낸다. 아이템 "SYNc" 하에서 스코어보드(100)상의 엔트리 번호 0 및 스코어보드 100상의 엔트리 번호0 과 엔트리 번호1에 있어서 "1" 이 세트된다. 아이템 "가능/불가능 발행" 하에서 스코어보드(110)상의 엔트리 번호0 및 스코어보드(100)상의 엔트리 번호0 에 있어서 "가능발행" 이 지시하는 정보가 입력다. 이것은 그 명령이 동기화 명령이 입력되기 전에 입력 명령임을 의미하는 (y)에 대응한다. 동기화 완료 테이블(120)에 있는 영역0 및 영역1에 해당하는 엔트리에 있어서도 역시 "1"이 세트된다.
도 13a ∼도13c는 메모리 컨트롤러(10)가 명령(5) "리드 abcd 70"을 수신한 경우에 있어서 스코어보드(100, 110) 및 동기화 완료 테이블(12)을 나타낸다. 메모리 컨트롤러(10)는 명령 "리드 abcd 70"의 어드레스에 대응하는 영역 0에 대한 스코어보드 (100)으로부터 빈 엔트리 번호2를 선택하고 그 엔트리 내에 상기의 명령을 입력한다. 스코어보드 100상의 번호1의 발행 가능하다.
도 14a∼도 14c는 뱅크 실행 유닛(108)이 스코어보드(100)상의 발행 가능 엔트리 번호1을 선택해서 엔트리를 발행하고 뱅크 실행 유닛(118)이 스코어보드(110상)의 발행 가능 엔트리 번호0을 선택해서 엔트리를 발행하는 경우에 있어서 스코어보드 (100, 110) 및 동기화 완료 테이블(12)을 나타낸다. 아이템 "En" 하에서 발행된 엔트리 각각에 있어서, "YES" 는 " NO" 로 전환된다.
도 15a∼도15c는 스코어보드(100)상의 엔트리 번호0에 있는 명령이 완료된 경우에 있어서 스코어보드(100, 110) 및 동기화 완료 테이블(12)을 나타낸다. 스코어보드 (100)상의 아이템 " Val"하에 있는 엔트리 번호0 및 번호1에 있어서, "V" 는 "I" 로 전환되고 아이템 " SYNc"하에서 이들 엔트리는 " 0 "으로 리셋된다.
동기화 완료 테이블(12)에 있는 영역0에 대응하는 엔트리는 " 0 "으로 리셋된다.
도 16a ∼도 16c는 스코어보드(110)상의 엔트리 No.0에 있는 명령이 완료된 경우에 있어서 스코어보드(100,110) 및 동기화 완료 테이블(12)을 나타낸다. 스코어보드 (110상)의 아이템 " Val "하에 있는 엔트리 번호0 있어서, "V"는 "I"로 전환되고 아이템 " SYNc "하에서 엔트리는 "0"으로 리셋된다. 동기화 완료 테이블(12)에 있는 영역1에 대응하는 엔트리는 "0"으로 리셋된다.
상기에 언급된 과정은 메모리 유닛(10)이 동기화 명령(4) "SYNc"의 수리(acceptance)전에 기입된 엔트리 No.0(스코어보드 110상의 명령(2))혹은 엔트리 No.1(스코어보드 100상의 명령(3))이 선택되고 발행되기 전에 스코어보드(100)에 기입된 엔트리 No.2(명령(5))를 실행할 만큼 동기화 명령을 무시하는 과정을 방지하는 것을 가능하게 한다.
[실시예 2]
도17에 표시된 것 처럼, 본발명의 제2실시예는, 동기화조건에 대한 엔트리(160)가 동기화 완료 테이블(12)에 가해지도록 하는 것이다. 엔트리(160)는 동일 요구자(처리자)로 부터의 요구 또는 동일 어드레스에 대한 동기화 조건을 표시하는 항목이다(여기서는 동일 어드레스에 대한 것으로 가정한다). 잔여 시스템 구조 및 메모리 컨트롤러(10)의 구성은 제1실시예에서와 같다.
상기 구조는, 동기화 오퍼레이션에 의해 영향받지않고 동기화 조건을 만족하지않는 후속 명령(후속 오퍼레이션)을 실행하는 기능을 달성한다. 동기화 조건을 만족하는 오퍼레이션에서는, 동기화 오퍼레이션후 실행되는 오퍼레이션은 동기화 오퍼레이션전에 실행되는 오퍼레이션보다 더 일찍 실행되는 것이 저지된다. 동기화 조건을 만족하지않는 오퍼레이션에서는, 정상오퍼레이션(무 순서 처리 또는 약 질서 처리)이 실행된다. 동기화가 완료되기 전에 후속 동기화 오퍼레이션이 요구될때에는, 후속 동기화 오퍼레이션의 접수가 거절되고 동기화 오퍼레이션이 재시도될 것이다.
이하, 제2실시예를 도17을 참고로 간략히 설명하겠다.
제2 실시예의 특징은 동기화 조건 엔트리(160)를 동기화 완료 테이블(12)에 가하는 것이다. 엔트리(160)에는, 동기화 조건이 세트되어있다. 예컨대, 동기화 조건은 "모든 라이트 오퍼레이션이 완료될 때 까지" 또는 "모든 리드과 라이트이 완료될 때 까지"일 수 있다.
제2실시예에 있어서는, 데이터가 같은 어드레스로 부터 또한 같은 어드레스로 리드 및 라이트되는 순서를 확실하게하지않는 오퍼레이션(무질서 오퍼레이션) 및 그 순서를 확실하게하는 오퍼레이션(질서 오퍼레이션)을 정의하고있는 시스템에 있어 "같은 어드레스에 관한 모든 리드 및 라이트이 완료될 때 까지 후속 리드 및 라이트이 저지된다"라는 조건하에서의 동기화 오퍼레이션이 가정되고 있다.
메모리 컨트롤러(10)는, 동기화 오퍼레이션이 발행될 때 까지 다른 오퍼레이션과는 완전히 독립적으로 무순서 식(무순서 처리)으로 무질서 오퍼레이션(메모리 액세스)을 실행한다. 동기화오퍼레이션이 발행될때에는, 스코어보드에 입력된 모든 유효 엔트리내의 동기화 플래그(SYNc플래그)는 실시예1에서와 같이 "1"에 세트된다. 그와 유사하게, 유효 엔트리를 가진 스코어보드에 대응하는 동기화 완료 테이블 내의 동기화 완료 플래그(SYNc완료)도 또한 "1"에 세트된다.
도17의 상태에서는, 메모리 영역(0)의 스코어보드(100)와 메모리 영역(1)의 스코어보드(110)는 유효 엔트리를 갖고있기 때문에, 동기화 완료 테이블(12)에서 동기화 완료플래그는 "1"에 세트된다. 또한 메모리 영역(2)의 스코어보드(120)와 메모리 영역(3)의 스코어보드(130)는 유효 엔트리를 갖고있지 않기 때문에, 관련 동기화 완료플래그는 "0"에 유지되어있다.
메모리영역(0)과 (1)에 있는 유효 엔트리의 동기화 플래그는 "1"에 세트되고 무효한 엔트리에 있는 동기화 플래그는 "0"에 유지된다. 그와 동시에, 동기화 완료 테이블(12)에 있는 동기화 조건에 대한 엔트리(160)에는, "같은 어드레스에 관한 모든 리드 및 라이트 오퍼레이션이 완료될 때 까지 후속 리드 및 라이트 오퍼레이션이 저지된다"라는 동기화 조건이 입력된다.
그 동기화 조건하에서는, 그 동기화 플래그가 "1"에 있는 엔트리가 같은 어드레스를 가질때는 후속 리드 오퍼레이션은 발행되지않고, 엔트리가 같은 어드레스를 갖고있지않을 때는 발행된다. 이 경우, 어드레스에 대응하는 스코어보드의 동기화 오퍼레이션이 완료되었고 그 동기화 플래그가 1에 있는 엔트리가 소멸된 후에는, 스코어 보드에 입력된 또한 입력될 엔트리는, 동기화 오퍼레이션이 다른 스코어보드에서 완료되었는지의 여부에 상관없이, 발행조건이 만족되는 즉시 발행될수있다. 즉, 이들 영역에서는, 동기화오퍼레이션이 없을때와 같은 조건하에서 메모리 액세스가 실행될 수 있다.
제1실시예에서와 같이, 동기화 완료 테이블(12)에 있어 동기화 완료플래그 중 적어도 하나가 "1"(동기화 과정의 경과중)에 있으면, 두 번째 동기롸 오퍼레이션의 접수는 거절될것이고 동기화 오퍼레이션은 재시도될 것이다. 모든 동기화 플래그가 "0"에 있을때는, 이것이 의미하는 것은 모든 동기화 오퍼레이션이 완료되었다는 뜻이다. 따라서, 동기화 완료 테이블(12)는 생략될 수 있다.
다음에는 제2실시예의 오퍼레이션을 더욱 상세히 설명할 것이다.
제2실시예에서 메모리 액세스 명령이 cPU(1)에 의해 발행된 경우의 처리는 도17의 실시예 1에서의 처리와 유사하여 제2실시예의 상세한 설명은 생략한다.
다음, 각각 스코어보드(100,110,120,130)에 대응하도록 제공된 각 뱅크 실행 유닛(108,118,128,138)에서 명령을 발행하는 과정을 도18을 참고로 설명할 것이다.
발행될 메모리 액세스 명령이 스코어보드상에서 입력된 엔트리에 관해서는, 먼저 뱅크실행유닛은 관련 엔트리에 대한 유효 플래그가 "I"인지의 여부를 결정한다(단계 S31). 관련 엔트리에 관한 유효 플래그가 "I"인 때에는, 뱅크 실행유닛은 관련 엔트리가 무효이기 때문에 관련 엔트리에 있어 메모리 액세스 명령이 발행될수 없다고 결정한다(단계 S32).
관련 엔트리에 대한 유효 플래그가 "V"인 때에는(단계 31,아니오), 뱅크 실행유닛은 관련 엔트리에 대한 발행 플래그가 "아니오"인지의 여부를 결정한다. 관련 엔트리에 대한 발행플래그가 "아니오"인 때에는, 뱅크실행 유닛은 관련 엔트리에 있어 명령이 이미 발행되었고 관련 엔트리에 있는 메모리 액세스 명령을 발행하지 않는다고 결정한다(단계 S34).
관련 엔트리에 대한 발행플래그가 "예"인 때에는(단계 S33, 아니오), 뱅크실행유닛은 항목 "SYNc완료"이 동기화 완료 테이블(12)의 모든 영역에 대해 0을 가졌는지의 여부를 결정한다(단계 S35). 항목"SYNc완료"이 모든 영역에 대해 0을 가진 상태는 동기화 명령이 cPU1로 부터 공급되지않았다는 것을 의미하기 때문에, 뱅크실행유닛은 관련 엔트리에 있는 메모리 액세스 명령이 발행될수있다고 결정한다(단계 S36).
항목"SYNc완료"이 동기화 완료 테이블(12)의 어느 영역에 대해 1을 가질 때에는(단계 S35, 아니오), 뱅크실행유닛은 엔트리가 동기화 조건을 만족하는지의 여부를 결정한다(단계 S37). 엔트리가 동기화 완료 테이블(12)의 동기화 조건을 만족하지 않을 때에는, 뱅크실행유닛은 동기화 명령 처리가 필요하지않고 관련 엔트리에 있는 메모리 액세스 명령이 실행될수있다고 결정한다(단계 S38).
엔트리가 동기화 조건을 만족하면(단계 S37,예), 뱅크실행유닛은 관련 엔트리에 대한 동기화 플래그가 "0"인지의 여부를 결정한다(단계 S39). 관련 엔트리에 대한 동기화 플래그가 "0"이면, 관련 엔트리의 명령은, 메모리 컨트롤러(10)가 동기화 명령을 수신한후 스코어보드에 입력된 메모리 액세스 명령이기 때문에, 뱅크실행유닛은 메모리 액세스 명령을 발행하지않는다(단계 S40).
동기화 플래그가 "1"일때는(단계 S39, 아니오), 관련 엔트리에 입력된 메모리 액세스 명령은 동기화 명령이 발송되기전에 입력된 메모리 액세스 명령이기 때문에, 뱅크실행유니는 관련 엔트리에 있는 메모리 액세스 명령이 발행될수있다고 결정한다(단계 S41).
다음에 설명할 것은 cPU1이 상승순으로 다음 명령을 발송할 때 제2실시예에있어 메모리 컨트롤러(10)의 처리이다:
(1) 리드 12380
(2) SYNc
(3) 라이트 67830
(4) 라이트 12380
도19a 내지 23b는 영역(0)에 대해 제공된 스코어보드(100) 및 동기화 완료 테이블(12)에 입력되는 데이터항목을 나타낸다.
여기서는, "같은 어드레스에 관한 모든 리드 및 라이트 오퍼레이션이 완료될때까지는 후속 리드 및 라이트 오퍼레이션이 저지된다"라는 조건이 동기화 조건으로 결정된 것으로 가정한다. 이것은, 동기화 명령을 처리하는 도중 후속오퍼레이션(동기화 플래그가 "0"임)에서의 SYNc명령전에 같은 어드레스에 대한 명령이 존재할때는, 명령이 발행되지않는 한편, 그런 명령이 존재하지 않을 때는 명령이 발행될수있다는 것을 의미한다.
도19a 내지 23b에서, 각 엔트리에 있는 명령 "가능/불능 발행"을 표시하는 항목은 다음과 같이 도18에 있어 뱅크실행유닛의 판정 결과를 나타내는 정보를 수용하고 있다: 즉 (a)는 도18의 단계 S32에서의 판정결과에 해당하고; (b)는 단계 S34에서의 판정결과에 해당하고; (x)는 단계 S36에서의 판정결과에 해당하고; (c)는 단계 S40에서의 판정결과에 해당하고; (y)는 단계 S41에서의 판정결과에 해당한다. 이것으로 오퍼레이션의 이해가 용이해진다. 그러나, 실제로는 항목은 단지 명령의 "가능/불능 발행"을 표시하는 정보만 수용하면 된다.
도19a 및 19b 는 스코어보드(100)와 동기화 완료 테이블(12)의 초기상태를 표시한다. 그러나 스코어보드(100)의 모든 엔트리는 사용되어있지않다(비어있다). 스코어보드(100)에서의 항목"가능/불능 발행"아래의 모든 엔트리에서, 불능 발행을 표시하는 데이터는 입력되어있다. 이것은 (a)에 해당하는 것으로, 뱅크실행유닛(108)이 도18의 처리를 실행할때 엔트리는 무효인 것을 의미한다. 결과적으로, 발행될 수 있는 엔트리는 없다.
도20a 와 20b 는 명령(1) "리드12380"이 버스 인터페이스 유닛(3)으로 부터 전송되었을 경우에 스코어보드(100)와 동기화 완료 테이블(12)를 나타낸다. 여기서, 메모리 컨트롤러(10)가 명령 "리드 12380"의 어드레스에 대응하는 영역(0)에 대해 스코어보드(100)로부터 빈 엔트리 0번을 선택하고 명령을 엔트리에 입력한다. 스코어보드(100)의 엔트리 0번이 발행될 수 있다.
도21a 와 21b는 메모리 컨트롤러(10)가 동기화 명령(2) 를"SYNc" 수신한 경우 스코어보드(100) 와 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)가 유효 엔트리(항목"Val"아래 "V")의 동기화 플래그를 스코어보드(100)상에서 "1"로 세트한다. 메모리 컨트롤러(10)는 또한 영역(0)에 대응하는 엔트리의 동기화 플래그를 세트하며, 즉 동기화 플래그는 "0"으로 부터 "1"로 변경된다. 엔트리 0번이 뱅크실행유닛(108)에 의해 발행될 수 있다.
도22a 와 22b는, 메모리 컨트롤러(10)가 그후 명령(3) " 라이트 67380"를 수신한 경우 스코어보드(100) 와 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)는 영역(0)에 대응하는 스코어보드(100)로 부터 빈 엔트리 1번을 선택한다. 영역(0)에는 소정 어드레스가 할당되는데 이들 어드레스에는 명령"라이트 67380"에 의해 할당된 어드레스가 포함된다. 메모리 컨트롤러(10)는 선택된 엔트리에 명령을 입력한다. 스코어보드에서 엔트리 0번과 엔트리 1번이 발행될 수 있다.
도23a과 23b는 메모리 컨트롤러(10)가 그후 수신명령(4) "라이트 12380"를 수신한 경우 스코어보드(100) 와 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)는 명령"라이트 12380"의 어드레스에 대응하여 영역(0)에 대한 스코어보드(100)로 부터 빈 엔트리 2번을 선택한다. 단지 스코어보드(100)상의 엔트리 0번과 1번이 발행될 수 있다. 그 이유는, 라이트명령인 입력명령(4)은 이미 입력된 명령(1)과 같은 어드레스와 관련되어있고 따라서 라이트명령은 동기화조건을 만족하여 명령(4)발행이 방지되기 때문이다.
[실시예 3]
본발명의 제3실시예는, 복수개의 동기화 명령을 동시에 처리하는 기능을 달성하며 다수 레벨의 동기화 플래그(동기플래그)를 가진 스코어보드 및 다수 레벨의 동기화완료플래그(동기완료)를 가진 동기화완료 테이블을 구비한 메모리 컨트롤러(10)를 포함하는 시스템이다. 모든 동기화 레벨이 사용될때까지는, 후속 동기화 오퍼레이션은 재시도되지않는다.
제3실시예에서는, 동기화 과정은 동기화오퍼레이션이 실행된 순서로 실행된다. 상세하게는, 세 개의 동기화 오퍼레이션a, b, c이 허용되는 경우, 이들은 다음 순서로 실행된다: 동기화 오퍼레이션a 전에 허용된 오퍼레이션, 동기화오퍼레이션 a와 b 전에 허용된 오퍼레이션, 동기화 오퍼레이션b와c 전에 허용된 오퍼레이션 및 동기화 오퍼레이션c 전에 허용된 오퍼레이션. 이 기능을 달성하기위해, 이전의 동기화 오퍼레이션을 표시하는 플래그가 동기화 완료 테이블(12)내에 제공된다. 예컨대, 동기화 완료 테이블(12)에서 b에 인접한 이전의 동기화 오퍼레이션에는 a와 c에 대해 b로 표지된다. 이전의 동기화 오퍼레이션이 없다는 것을 표시하기위해서 a에 대해서는 "무"가 세트된다. a가 완료되었을 때는, b전의 동기화오퍼레이션에는 "무"가 주어진다. 마찬가지로 그 전의 동기화 오퍼레이션이 완료되었을 때는, 엔트리의 이전 동기화오퍼레이션에 "무"가 주업지고, 그리하여 상기 기능이 달성된다.
이하, 제3실시예를 도24를 참고로 간략히 설명하겠다.
여기서는, 동기화 플래그(102)가 각 입력에 대해 네 레벨 0 내지 3을 갖는 것으로 가정한다. 동기화 완료 테이블(12)에있는 각 엔트리(메모리 영역 0 내지 3의 각각에 대응하는)에 대한 동기화 완료 플래그는 네 레벨을 갖는다고 가정한다. 동기화(SYNc) 리드포인터(161)는 어는 레벨이 실행되는가를 지시한다. 동기화 라이트포인터()는, 동기화 리드 포인터(161)에 의해 표시된 레벨이 실행된후 실행되는 동기화 레벨을 표시한다.
동기화 오퍼레이션은 허용 순서로 처리되기 때문에, 이들 포인터(162 및 163)는 통상의 FIFO 버퍼와 같은 방식으로 제어된다. 각 스코어보드는 리드 포인터(161)에 의해 규정된 동기화 오퍼레이션에 대응하는 그 동기화 플래그가 "1"인 오퍼레이션만을 발행한다. 모든 뱅크에 있어서, 동기화 리드 포인터(161)에 의해 규정된 레벨의 엔트리가 소멸될 때에는, 포인터는 1 증분한다.
동기화 완료 테이블(12)에 있어 모든 동기화 완료프래그가 "0" 일때에는, 모든 동기화 오퍼레이션이 완료되었고 모든 스코어보드(100,110,120,130)내의 모든 동기화 플래그는 "0"이다. 따라서, 동기화가 사용되지않은 경우 밟은 규칙에 따라 오퍼레이션이 발행된다. 동기화 오퍼레이션이 수신될때에는, 적어도 하나의 동기화 레벨이 사용되지않았으면, 재시도 없이 동기화 오퍼레이션이 허용되고 정상적인 동기화 처리가 행해진다. 모든 동기화 레벨이 사용되고있으면, 후속 동기화 오퍼레이션이 재시도된다.
도24는, 동기화 오퍼레이션이 허용되었는데, 동기화 레벨3은 사용되었고, 동기화 레벨0, 1, 2는 사용되지않았고, 메모리영역(0, 1, 2)내 스코어보드(100, 110, 120)는 유효 엔트리를 가졌고, 메모리 영역(3)의 스코어보드는 유효 엔트리를 갖고있지않은 경우를 보여준다. 모든 개별적 플래그의 레벨1 및 2는 "0"에 세트되고 사용되지않는다. 레벨3에 대해서는, 메모리 영역(0)의 엔트리 0번에 대한 동기화 플래그만 "1"이고, 다른 메모리 영역의 모든 동기화 플래그는 "0"이다. 이것은, 레벨3의 동기화 오퍼레이션이 발행되기전의 오퍼레이션의 경우에 사용되지않은것은 단지 메모리 영역(0)의 입력 0번인 것을 의미한다.
동기화 완료 테이블(12)의 동기화 리드 포인터(161)는 레벨3이 현재 처리되고있음을 나타낸다. 새로운 동기화 오퍼레이션이, 동기화 완료 테이블(12)의 동기화 라이트 포인터(162)에 의해 규정된 레벨 0으로 입력된다. 동기화 라이트 포인터는 1 증분하여 레벨1을 나타낸다.
또한, 각 스코어보드에서 유효 엔트리에 대한 동기화 플래그의 레벨 0에 "1"이 세트된다. 도24에서, 메모리 영역(0, 1, 및 2)의 유효 엔트리는 "1"에 세트된다. 그와 동시에, 메모리 영역(0, 1 및 2)에 대응하는 동기화 완료 테이블(12)에 있어 레벨 0에 "1"이 세트되는데, 레벨 0의 동기화는 완료되지않은 것을 의미한다. 그런 뒤, 동기화 레벨3이 도24에서 처리되기 때문에, 메모리 영역의 엔트리 0번에 대한 오퍼레이션이 발행될때까지 오퍼레이션이 발행되지않는다. 메모리 영역(0)의 엔트리 0번이 발행되면, 레벨3의 동기화가 완료되고, 따라서 동기화 완료 테이블(12)에 있는 메모리 영역(0)의 레벨 3이 "0"으로 리세트된다. 동기화 리드 포인터(161)는 1만큼 증분하여 레벨1을 표시하기 때문에, 그의 레벨 0의 동기화 플래그가 "1"에 세트되어있는 오퍼레이션들이 순차 발행되고, 그리하여 레벨 0의 동기화 처리가 실행될 수 있다. 각 레벨의 모든 동기화 플래그가 "0"이면, 그 레벨의 동기화 오퍼레이션은 완료된 것이다. 따라서 동기화 완료 테이블(12)은 생략될 수 있다.
다음에는,제3실시예의 오퍼레이션을 보다 상세히 설명할 것이다.
먼저, 제3실시예에서 메모리 액세스 명령이 cPU1에 의해 발행된 경우의 처리를 도25를 참고하여 설명할 것이다.
cPU1에 의해 발행된 메모리 액세스 명령은 버스(2)를 통해 버스 인터페이스 유닛(3)에 공급된다. 버스 인터페이스(3)는 수신된 메모리 액세스 명령을 메모리 컨트롤러(10)에 전달한다(단계 S51).
수신된 메모리 액세스 명령이 동기화 명령이 아닌 메모리 액세스 명령인 때는, 메모리 컨트롤러(10)는 수신된 메모리 액세스 명령의 어드레스에 기초하여 스코어보드(100, 110, 120, 130)로 부터 대응하는 스코어보드를 선택한다. 또한, 메모리 컨트롤러(10)는 선택된 스코어보드의 모든 엔트리로 부터 그의 유효 플래그가 "1"에 세트된 엔트리(빈 엔트리)를 선택한다. 그런 뒤, 메모리 컨트롤러(10)는 전달된 메모리 액세스 명령을 선택된 엔트리에 입력한다(단계 S52).
메모리 액세스 명령을 입력할때는, 메모리 컨트롤러(10)는 메모리 액세스 명령의 연산코드 및 어드레스를 입력할뿐만 아니라 명령이 입력되는 엔트리에 유효 플래그를 "V"에 세트도하고 동기화 플래그 0, 1, 2 및 3을 "0"에 리세트한다.
버스 인터페이스 유닛(3)으로 부터 동기화 명령을 수신하면, 메모리 컨트롤러(10)는 선택된 스코어보드에 입력된 그의 유효 플래그가 "V"에 세트된 모든 엔트리에 대해 SYNc 라이트 포인터에 대응하는 동기화 플래그 n(n=0/1/2/3)을 "1"에 세트한다.
또한, 뱅크 유닛(108, 118, 128, 138)의 제어하에, 메모리 컨트롤러(10)는 스코어보드로 부터 엔트리를 선택하여 그 엔트리의 명령을 발행한다.
단계 S52에서 입력된 엔트리(메모리 액세스 명령)가 선택되어 그 엔트리의 명령이 발행되었을 때는(단계 S53, 예), 그 선택된 엔트리에 대한 발행가능 플래그는 "아니오"에 세트된다(단계 S54). 발행된 메모리 액세스 명령은 버스 인터페이스 유닛(3), 메모리 컨트롤러(10), 및 뱅크 실행유닛에 의해 실행된다.
메모리 액세스 명령의 처리가 완료된 뒤에는, 메모리 컨트롤러(10)가 스코어보드에 있는 실행된 메모리 액세스 명령을 위한 엔트리에 입력된 유효 플래그를 "1"에 세트하고 동기화 플래그 0, 1, 2, 및 3을 "0"에 리세트한다(단계 S55). 이들 처리에 의해, 실행된 메모리 액세스 명령이 입력된 엔트리는 해방된다.
상기한 처리를 통해 cPU1로 부터 발송된 메모리 액세스 명령이 실행된다.
다음에는, 스코어보드(100, 110, 120 및 130)에 각각 대응시키기위해 제공된 각 뱅크실행유닛(108, 118, 128 및 138)에서 명령을 발행하는 과정을 도26을 참고로 설명하겠다.
스코어보드상에있어 발행될 메모리 액세스 명령이 입력된 엔트리에 관해서는, 뱅크실행유닛이 먼저 관련 엔트리에 대한 유효 플래그가 "I"인지의 여부를 결정한다(단계S61). 관련 엔트리에 대한 유효 플래그가 "I"일때는, 관련 엔트리가 무효이기 때문에, 뱅크 실행유닛은 관련 엔트리의 메모리 액세스 명령이 발행될수 없다고 결정한다(단계 S62).
관련엔트리에 대한 유효 플래그가 "V"일때는(단계 S61, 아니오), 뱅크 실행유닛은 관련 엔트리에 대한 발행 플래그가 "아니오"인지의 여부를 결정한다(단계 S63).관련 엔트리에 대한 발행플래그가 "아니오"이면, 뱅크 실행유닛은 관련 엔트리의 명령이 이미 발행되었거나 또는 발행조건에 만족하지않아 관련 엔트리의 메모리 액세스 명령을 발행하지않는다고 결정한다(단계 S64).
관련 엔트리에 대한 발행플래그가 "예"이면(단계 S63), 뱅크 실행유닛은 SYNc 리드 포인터에 의해 표시된 "SYNc 완료"항목이 동기완료 테이블(12)의 모든 영역에 대해 0을 갖고있는지의 여부를 결정한다(단계 S65). "SYNc 완료"항목이 모든 영역에 대해 0을 갖고있는 상태는 동기명령이 cPU1로 부터 공급되지 않았음을 의미하기 때문에, 뱅크실행유닛은 관련 엔트리의 메모리 액세스 명령이 발행될수있다고 결정한다(단계 S66).
"SYNc 완료"항목이 동기화 완료 테이블(12)에 있는 어느 영역에 대해 "1"을 갖는경우에는(단계 S65, 아니오), 뱅크실행유닛은 SYNc 리드 포인터에 의해 표시된 동기화 플래그가 관련 엔트리에 대한 동기화 플래그 0 내지 3중 0인지의 여부를 결정한다(단계 S67). SYNc 리드 포인터에 의해 표시된 동기화 플래그가 0이면, 관련 엔트리의 명령은, 메모리 컨트롤러(10)가 동기화 명령을 수신한후 스코어보드에 입력된 메모리 액세스 명령이기 때문에, 뱅크실행유닛은 메모리 액세스 명령을 발행하지않는다(단계 S68).
SYNc 리드 포인터에 의해 표시된 동기화 플래그가 "1"이면(단계 S68), 관련 엔트리에 입력된 메모리 액세스 명령은 동기화 명령이 발송되기 전 입력된 메모리 액세스 명령이기 때문에, 뱅크 실행 유닛은 관련 엔트리의 메모리 액세스 명령이 발행될수있다고 결정한다(단계 S69).
다음에는, cPU1가 상승순으로 다음 명령을 발신할 때 제3실시예에있어 메모리 컨트롤러(10)의 처리를 설명할 것이다:
(1) 리드 12380
(2) SYNc
(3) 라이트 67830
(4) SYNc
(5) 라이트 abc
도27a 내지 33b는 영역(0)에 제공된 스코어보드(100) 및 동기화 완료 테이블(12)에 입력된 데이터항목을 나타낸다.
도27a 내지 33b에 있어서, 각 엔트리에 있는 명령 "가능/불능 발행"을 표시하는 항목은 다음과 같이 도26에 있어 뱅크실행유닛의 판정 결과를 나타내는 정보를 수용하고 있다: 즉 (a)는 도26의 단계 S62에서의 판정결과에 해당하고; (b)는 단계 S64에서의 판정결과에 해당하고; (x)는 단계 S66에서의 판정결과에 해당하고; (c)는 단계 S68에서의 판정결과에 해당하고; (y)는 단계 S69에서의 판정결과에 해당한다. 이것으로 오퍼레이션의 이해가 용이해진다. 그러나, 실제로는 항목은 단지 명령의 "가능/불능 발행"을 표시하는 정보만 수용하면 된다.
도27a 및 27b 는 스코어보드(100) 및 동기화 완료 테이블(12)의 초기상태를 나타낸다. 따라서, 스코어보드(100)에 있는 모든 엔트리는 사용되지않았다(비어있음). 스코어보드(100)에 있는 "가능/불능 발행" 항목하의 모든 엔트리에는, 불능 발행을 표시하는 데이터가 입력되었다. 이것은 (a)에 해당하는 것으로, 뱅크 실행유닛(108)이 도18의 처리를 실행할때는 엔트리가 무효인 것을 의미한다. 결과적으로, 발행될 수 있는 엔트리가 없다.
도28a 및 28b는 명령(1) "리드12380"가 버스 인터페이스 유닛(3)으로 부터 전달된 경우에 스코어보드(100)와 동기화 완료 테이블(12)을 나타낸다. 여기서, 명령"리드12380"의 어드레스에 대응하는 영역(0)을 위한 스코어보드로 부터 빈 엔트리 0번을 선택하고 명령을 엔트리에 입력한다. 스코어보드에서 0번이 발행될 수 있다.
도29a 및 29b 는 메모리 컨트롤러(10)가 동기화 명령(2)"SYNc"를 수신한 경우 스코어보드(100) 및 동기화 완료 테이블(12)을 보여준다. 메모리 컨트롤러(10)는 스코어보드(100)에서 유효 엔트리("Val"항 하의 "V"}에 있는 동기화 플래그 0를 "1"에 설정한다. 동기화 완료 테이블(12)에 있는 SYNc 라이트 포인터에 "1"이 설정된다. 뱅크 실행 유닛(108)이 발행할 수 있는 엔트리는 엔트리 0번이다.
도30a 과 30b은 그후 메모리 컨트롤러(10)가 명령(3) "라이트 67380"를 수신한 경우 스코어보드(100)와 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)는, 예정된 어드레스가 할당된 영역(0)에 대응하는 스코어보드(100)로 부터 빈 엔트리 1번을 선택한다. 예정된 어드레스는 명령"라이트 67380"에 의해 할당된 어드레스를 포함한다. 잠시후, 메모리 컨트롤러(10)는 명령을 선택된 엔트리에 입력한다. 스코어보드(100)에서 엔트리 0번 과 1번이 발행될 수 있다.
도 31a 과 31b는 메모리 컨트롤러(10)가 동기화 명령(4) "SYNc"를 수신한 경우 스코어보드(100)와 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)는 동기화 완료 테이블(12)의 SYNc라이트 포인터에 대응하는 동기화 플래그(1)를 스코어보드(100)상의 유효 엔트리("Val"항목 하의"V")에 대한 동기화 플래그 0 내지 3 중의 "1"에 설정한다. 그런 뒤, 동기화 완료 테이블(12)의 SYNc 라이트 포인터에 "2"가 설정된다. 영역(0)에 대한 SYNc 완료플래그1에 "1"이 설정된다. 뱅크 실행 유닛이 발행할 수 있는 엔트리는 엔트리 0번이다.
도32a 와 32b는 그후 메모리 컨트롤러(10)가 명령(5) "라이트 abcd80"를 수신한 경우 스코어보드(100) 및 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)는 예정된 어드레스가 할당된 영역(0)에 대응하는 스코어보드(100)로 부터 빈 엔트리 2번을 선택한다. 예정된 어드레스는 명령 "라이트 abcd80"에 의해 할당된 어드레스를 포함한다. 메모리 컨트롤러(10)는 명령을 선택된 엔트리에 입력한다. 스코어보드(100)에서 엔트리 0번만 발행될 수 있다. 이것은 입력된 명령이 순서: {1}, {3}, 및 (5)로 발행되기 때문이다.
도33a 와 33b는 뱅크실행유닛(108)이 엔트리 0번의 명령을 발행하는 경우 스코어보드(100)와 동기화 완료 테이블(12)을 표시한다. 스코어보드(100)에서, 항목"Val"은 "I"에 세트되고, 항목"En"은 "아니오"에 세트되고, SYNc 플래그 0과 1은 모두 "0"에 리세트된다. 이에 의해 엔트리 0번은 해방된다. 더욱이, 동기화 완료 테이블(12)에 있어서, SYNc 리드 포인터는 "0"에 세트되고, 영역(0)에 대한 SYNc 완료플래그 0은 "0"에 리세트된다.
상기한 과정에 의해, 하나를 초과하는 동기화 명령이 공급될 때에도, 적당한 순서로 명령이 발행되는 처리가 가능해진다.
[실시예 4]
도34에 표시된것처럼, 본발명의 제4실시예는, 각 레벨에 대해 독립된 동기화 조건이 세트될 수 있는 동기화 완료 테이블이, 다수 레벨의 동기화 플래그(SYNc 플래그)를 구비한 스코어보드 및 다수 레벨의 동기화 완료 플래그(SYNc 완료)를 구비한 동기화 완료 테이블을 가진 메모리 컨트롤러(10)에 설치될수있게 하는 것이다. 제4실시예는 무순서 처리로 동기화 처리의 완료을 실행하고, 그리하여 동기화 처리의 간접비를 절감시키는 기능이 달성될 수 있다. 모든 동기화 레벨이 사용될때까지 후속 동기화 오퍼레이션이 재시도된다.
환언하면, 제4실시예는 다수 레벨의 동기화 조건이 제3실시예에 가해지도록 하는 것이다. 그런 구조에의해, 상이한 동기화조건의 경우, 제2실시예에서와 같은 오퍼레이션이 실행되고 그 이전의 동기화 오퍼레이션에는 "무"가 주어진다. 같은 동기화 조건(예컨대, 같은 프로세서에 의한 동기화 또는 같은 어드레서에 대한 동기화)의 경우, 이 전의 동기화 오퍼레이션이 세트되고 제3 실시예에서와 같은 오퍼레이션이 실행된다. 따라서, 독립된 동기화 조건의 경우, 동기화는 무 순서 방식으로 행해지고, 동기화 처리의 간접비의 절감이 달성된다.
이하, 도34를 참고하여 제4실시예를 간략히 설명하겠다.
도34에 도시된 것 처럼, 제4실시예는, 동기화 레벨 0 내지 3의 각각에 대한 동기화 조건을 나타내는(이 경우 Sa는 같은 어드레스를 나타낸다) 동기화 조건표가 구비된 동기화 완료 테이블(12)을 갖고 있다. 이에 의해, 독립된 동기화 오퍼레이션이 독립적으로 실행될 수 있다.
제4 실시예에 의해, 동기화 조건이 같은 어드레스에 리드 및 라이트하는것일 때에는, 동기화 조건은 다른 메모리 영역과는 아무 상관이 없다. 예컨대, 메모리 영역(0)에 있는 어드레스(예컨대 어드레스(100))로 부터 또한 이 영역으로 데이터를 리드 및 라이트하는 경우, 동기화 오퍼레이션은 발행되었고, 메모리 영역(1, 2, 및 3)은 동기화 오퍼레이션이 없을 때와 같은 조건하에서 오퍼레이션될 수 있다. 이 경우, 메모리 영역(2)내 어드레스(예컨대 어드레스(1008)) 대한 동기화 오퍼레이션이 발행되었을 때는, 그 오퍼레이션은 그 전에 메모리 영역(0)에 발행된 동기화 오퍼레이션과는 독립적으로 처리될 수 있다.
각 레벨에 동기화 조건을 적용하는 이외의 오퍼레이션은 제3실시예에서와 같다. 도34의 상태에 있어, 동기화 조건으로서 "같은 어드레스"가 사용된다라는 것을 나타내는 Sa가 동기화조건 0 및 3에 세트되어있다. 메모리 영역(3)은 동기화 조건을 만족하지않기 때문에, 그 이후에 도달된 오퍼레이션은 다른 메모리 영역의 동기화 완료를 대기하지않고 실행될 수 있다. 동기화 조건이 "모든 어드레스에 대해"이면, 메모리 영역(3)의 엔트리는 동기화 조건3이 완료된 시점에서 발행될 수 있다. 각 레벨에 대한 모든 동기화 레벨이 "0"일 때는, 그 레벨의 동기화는 완료된 것이다. 따라서, 동기화 완료 테이블은 생략될 수 있다.
상기와 같이, 제4실시예가 메모리 뱅크 구조를 가진 메모리 컨트롤러에 적용될 때에는, 동기화 조건이 뱅크에 따라 상이한 경우 동기화 처리는 뱅크별로 독립적으로 수행될 수 있다.
다음에는, 제4실시예의 오퍼레이션을 보다 상세히 설명하겠다.
제4실시예에서 메모리 액세스 명령이 cPU 1에 의해 발행된 경우의 처리는 도25의 제3실시예의 처리와 유사하고, 제4실시예의 상세한 설명은 생략한다.
각각 스코어보드(100, 110, 120 및 130)에 대응하도록 제공된 각 뱅크 실행유닛(108, 118, 128 및 138)에서 명령을 발행하는 과정을 도35를 참고하여 설명하겠다.
스코어보드에서 발행될 메모리 액세스 명령이 입력된 엔트리에 관해 설명하면, 먼저 뱅크실행유닛이 관련 엔트리에 대한 유효 플래그가 "V"에 세트되어있는지의 여부를 결정한다( 단계 S71). 관련 엔트리에 대한 유효 플래그가 "I"에 세트되어있을때는, 뱅크 실행유닛은 관련 엔트리가 무효이기 때문에 관련 엔트리의 메모리 액세스 명령은 발행될수없다고 결정한다(단계 S72).
관련 엔트리에 대한 유효 플래그가 "V"이면(단계 S71), 뱅크 실행유닛은 관련 엔트리에 대한 가능 플래그가 "예"에 세트되어있는지의 여부를 결정한다(단계 S73).
관련 엔트리에 대한 가능 플래그가 "아니오"에 세트되어있으면(단계 S73), 뱅크실행유닛은 관련 엔트리에 있는 메모리 액세스 명령이 발행조건을 만족하지못하거나 또는 이미 발행되었다고 결정한다. 처음의 상태로서는, 메모리 라이트 명령이 실행될 때, 라이트 데이터가 메모리 컨트롤러에 전달되지 않았거나 또는 스누퍼가 메모리 라이트 요구에 응답을 정하지 못하는 경우가 있다. 나중의 상태로서는, 메모리 리드 명령이 실행될 때, 리드 요구가 DRaM에 전달은 되었지만 요구된 리드 데이터가 메모리 컨트롤러에 도달되지않은 경우가 있다. 그 결과, 뱅크실행유닛은 관련 엔트리에 있는 메모리 액세스 명령을 발행하지못한다(단계 S74).
관련 엔트리에 대한 가능 플래그가 "예"에 세트되어있을 때는(단계 S73, 예), 뱅크실행유닛은 모든 동기화 레벨의 "SYNc 완료 엔트리"가 동기화 완료 테이블(12)에서 "0"에 세트되어있는지의 여부를 결정한다(단계 S75). 모든 "SYNc 완료 엔트리"가 "0"에 세트된 상태는 뱅크실행유닛에 대응하는 영역에 관계되는 동기화 오퍼레이션이 완료되었다는 것을 의미하기 때문에, 뱅크실행유닛은 관련 엔트리의 메모리 액세스 명령이 발행될수있다고 결정한다(단계 S76).
동기화 완료 테이블(12)의 모든 동기화 레벨에서 하나 이상의 "SYNc 완료 엔트리"가 "1"에 세트되어있을때는(단계 S75, 아니오), 메모리 액세스 명령이 발행될수있는지 없는지의 판정은 다음 단계 S77 내지 S84에 기초하여 행해진다. 도35에서 단계 78, 80, 82 및 84로 표시된 루프는 메모리 액세스 명령이 동기화의 순서로 발행될수있는지 없는지의 판정을 위한 처리를 한다. 사실, 상기 단계들은 제4실시예의 실행 하드웨어에서 병렬로 행해진다. 즉, 실행 하드웨어는 작업을 위한 포인터(포인터"J")를 필요로하지 않는다. 포인터 "J "가 도35에서는 단지 플로 차트 표시의 편리를 위해 표시되어있고 도34에는 포인터"J "가 표시되어있지않다.
뱅크실행유닛은 아직 실행되지않은 동기화 조건들의 순서를 결정하기위해 첫 번째 발행된 동기화 조건을 리드한다(단계 S77). 아직 실행되지않은 조건들 중 첫 번째의 동기화 조건은 SYNc리드 포인터(162)에 의해 표시되어있다. 도35의 단계 S77에서, SYNc 리드 포인터(162)에 의해 표시된 값은 작업을 위한 포인터"J"에 세트되어있다.
마지막으로 발행된 동기화 조건이 리드된 후, 뱅크실행유닛은 스코어보드에 있는 엔트리의 동기화 레벨 "j"에 대한 SYNc플래그가 각각 "1"에 세트되어있다고 결정한다(단계 S78). 관련 엔트리의 SYNc플래그가 "1"에 세트되어있을 때는(단계 S78, 예), 동기화 레벨"J"의 동기화 명령 전에 메모리 액세스 명령이 발행되었기 때문에, 관련 엔트리의 메모리 액세스 명령이 발행될수있다(단계 S79).
관련 엔트리의 SYNc플래그가 "1"에 세트되어있지 않으면(단계 S78, 아니오), 뱅크 실행유닛은 관련 엔트리가 동기화 레벨"j"에 대한 동기화 목표 명령인지의 여부를 결정한다(단계 S80). 즉, 관련 엔트리가 SYNc레벨 "j"의 SYNc조건에 부합하는가의 여부가 판정된다. 관련 엔트리가 동기화 명령이면(단계 S80, 예), 관련 엔트리의 메모리 액세스 명령이 실행될 수 있다(단계 S81).
관련 엔트리가 동기화 명령이 아닐때는(단계 S80,아니오), 뱅크실행유닛은 동기화 레벨 "j" 다음에 실행될 동기화 레벨이 SYNc 라이트 포인터(162)에 의해 표시된 동기화 레벨과 일치하는지의 여부를 결정한다. 동기화 레벨"j" 다음의 동기화 레벨이 SYNc 라이트 포인터(162)에 의해 표시된 동기화 레벨과 일치하는 상태는 동기화 레벨"j" 다음의 동기화 레벨이 마지막 동기화 레벨이란 것을 의미한다. 관련 엔트리는 마지막 동기화 조건에 만족되지 않기 때문에, 관련 엔트리의 메모리 액세스 명령이 실행될수있다(단계 S83).
동기화 레벨 "j" 다음에 실행될 동기화 레벨이 SYNc 라이트 포인터(162)에 의해 표시된 동기화 레벨과 일치하지않을 때는, 동기화 레벨 "j" 다음의 동기화 레벨이 마지막 동기화 레벨이 아니기 때문에, 후속 동기화 레벨이 검토된다. 도35에서, 작업 포인터 "j"가 증분된다(단계 S84). 단계 S84는, 단계 S78, S80, S82 및 S84의 루프 처리를 생략하기위해 관련 엔트리의 메모리 액세스 명령이 실행되지못하게, 만들어질수있다.
제4실시예에 있어서는, 스코어보드의 각 엔트리에 대해 다양한 동기화 레벨에 대응하는 종속성표가 만들어질 수 있다. 종속성표는 어드레스 일치성 및 같은 프로세서 사용(프로세서 ID의 일치) 등을 표시한다. 이 경우, 전달된 명령이 스코어보드에 입력될 때, 뱅크 실행유닛은 어드레스 및 프로세서 ID를 스코오보드의 다른 엔트리의 그것들과 비교한다. 일치가 일어날 때, 관련 엔트리에 대한 표에 유효 플래그가 세트된다. 그렇지 않은 경우에는, 유효 플래그가 소거된다. 이 변형에서는, N1이 스코어보드 엔트리 수를 표시한다고 가정할 때, 비교기의 수는 N1오더(정도)이다.
이 변형에 있어, 메모리 액세스 명령 발행의 판정과 관련된 동기화에 관한 처리를 아래에 설명하겠다. 먼저, 종속성표의 행값들은 NORed이다(#1). SYNc완료 테이블에 있는 각 영역의 값들은 각각 동기화 조건에 관한 ORed이다(#2). #1의 논리 NOR 및 #2의 논리 OR은 aNDed이다(#3). 모든 동기화 조건에 관해, #3에 있어서의 모든 논리 aND는 ORed이다(#4).
SYNc완료 테이블에 격납된 값은 ORed 이다(#5). #5의 논리 OR이 "0"일때는, 동기화가 실행된 것이 아니기 때문에, 실행조건은 "Val"플래그와 "En"플래그 사이의 논리 aND이다. #5의 논리 OR이 "1"일때는, 동기화가 실행된것이기 때문에, 실행조건은 #4에 있어 "Val"과 "En"사이의 논리aND와 논리OR 사이의 논리aND이다.
끝으로, #4의 논리 OR, "En"플래그 및 "Val"플래그는 aNDed이다(#6). #6에 있어 논리 aND 연산의 결과가 "1"인 것이 발행가능한 엔트리이다.
다음에는, cPU 1이 다음 명령을 상승순으로 발송할 때, 제4실시예에 있어 메모리 컨트롤러(10)의 처리를 설명할 것이다:
(1) 리드 12380
(2) SYNc
(3) 라이트 67830
(4) 라이트 12380
(5) SYNc
(6) 라이트 abcd80
도36a 내지 42b는 영역(0)를 위해 제공된 스코어보드(100) 및 동기화 완료 테이블(12)에 입력된 데이터항목을 나타낸다.
동기화 조건은 제2실시예에서와 같다고 가정한다.
도36a 내지 42b에서, 각 엔트리에 있어 명령 "가능/불능 발행"을 표시하는 항목은 다음과 같이 도35에 있는 뱅크실행유닛의 판정 결과를 나타내는 정보를 수용하고 있다: 즉 (a)는 도35의 단계 S72에서의 판정결과에 해당하고; (b)는 단계 S73에서의 판정결과에 해당하고; (x)는 단계 S75에서의 판정결과에 해당하고; (y)는 단계 S78에서의 판정결과에 해당하고; (c)는 단계 S80에서의 판정결과에 해당하고; (z)는 단계 S82에서의 판정결과에 해당한다. 이것으로 오퍼레이션의 이해가 용이해진다. 그러나, 실제로는 항목은 단지 명령의 "가능/불능 발행"을 표시하는 정보만 수용하면 된다.
도36a 및 36b는 스코어보드(100) 와 동기화 완료 테이블(12)의 초기상태를 표시한다. 따라서, 스코어보드(100)의 모든 엔트리는 사용되어있지않다(비어있음). 스코어보드(100)상에서 항목"가능/불능 발행"하의 모든 엔트리에서는, 가능 불능을 나타내는 데이터가 입력되어있다. 이것은 (a)에 해당하는데, 뱅크실행유닛(108)이 도35의 처리를 실행할 때 엔트리들이 무효인것을 의미한다. 결과적으로, 발행될 수 있는 엔트리가 없다.
도37a 및 37b는 명령(1) "리드 12380"가 버스 인터페이스 유닛(3)으로 부터 전달된 경우 스코어보드(100)와 동기화 완료 테이블(12)을 표시한다. 여기서, 메모리 컨트롤러(10)는 명령 "리드 12380"의 어드레스에 대응하여 영역(0)에 대한 스코어보드(100)로 부터 빈 엔트리 0번을 선택하고 명령을 그 엔트리에 입력한다. 스코어보드(100)에서 엔트리 0번이 발행될 수 있다.
도38a 및 38b는 메모리 컨트롤러(100)가 동기화 명령(2) "SYNc"를 수신한 경우 스코어보드(100) 및 동기화 완료 테이블(12)을 표시한다. 동기화 컨트롤러(10)는 스코어보드(100)상에서 유효 엔트리(항목 "Val"하의 "V")에 있어 동기화 플래그 0을 "1"에 세트한다. 동기화 완료 테이블(12)의 SYNc라이트 포인터에 "1"이 세트된다. 영역(0)에 대응하는 SYNc완료 플래그 0는 "1"에 세트된다. 뱅크 실행유닛(108)이 발행할 수 있는 엔트리는 엔트리 0번이다.
도39a 및 39b는 그후 메모리 컨트롤러(10)가 명령(3)"라이트 67380"를 수신한 경우 스코어보드(100) 및 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)는 명령"라이트 67380"의 어드레스에 대응하여 영역(0)에 대한 스코어보드(100)로 부터 빈 엔트리 0번을 선택하고 명령을 그 엔트리에 입력한다. 스코어보드(100)에서 엔트리 0번과 엔트리 1번이 발행될 수 있다.
도40a 및 40b는 그후 메모리 컨트롤러(10)가 명령(4) "라이트 12380"를 수신한 경우 스코어보드(100) 및 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)는 명령"라이트 12380"의 어드레스에 대응하여 영역(0)에 대한 스코어보드(100)로 부터 빈 엔트리 2번을 선택하고 명령을 그 엔트리에 입력한다. 스코어보드(100)에서 단지 엔트리 0번과 엔트리 1번이 발행될 수 있다.
도41a 및 41b는 그후 메모리 컨트롤러(10)가 두 번째 동기화 명령(5) "SYNc"를 수신한 경우 스코어보드(100) 및 동기화 완료 테이블(12)을 표시한다. 메모리 컨트롤러(10)는 스코어보드(100)상에서 유효 엔트리(항목 "Val" 하의"V")에 대해 동기화 플래그 0 내지 3 중에서 동기화 완료 테이블(12)의 SYNc라이트 포인터에 대응하는 동기화 플래그 1을 "1"에 세트한다. 그런 뒤, 동기화 완료 테이블(12)의 SYNc라이트 포인터에 "2"가 세트된다. 영역(0)에 대한 SYNc완료 플래그 1은 "1"에 세트된다. 뱅크 실행유닛(108)이 발행할 수 있는 엔트리는 단지 0번과 1번이다.
도42a 및 42b는 그후 메모리 컨트롤러(10)가 명령(64) "라이드 abcd80"를 수신한 경우 스코어보드(100) 및 동기화 완료테이블(12)을 표시한다. 메모리 컨트롤러(10)는 명령"라이드 abcd80"의 어드레스에 대응하여 영역(0)에 대한 스코어보드(100)로 부터 빈 엔트리 3번을 선택하고 명령을 그 엔트리에 입력한다. 여기서, 동기화 완료 테이블(12)의 SYNc라이트 포인터에 "2"가 세트된다. 영역(0)에 대한 SYNc완료 플래그 1은 "1"에 세트된다. 스코어보드(100)에서 단지 엔트리 0번과 엔트리 1번이 발행될 수 있다.
상기한 처리로 메모리 컨트롤러(10)는 예정된 동기화 조건에 따라 복수개의 명령을 수신할수있을뿐 아니라 메모리 액세스 신호를 발행할 수 있다.
[실시예 5]
본발명의 제5실시예는, 제1실시예의 메모리 컨트롤러(10)에 있어, 동기화 완료 테이블가 생략되고 동기화 플래그가 스코업보드(11)로 부터 제거되도록 하는것이다.
상세하게는, 제5실시예에 의해 동기화 조건은 모든 오퍼레이션(동기화와 관계없이)에 적용된다. 동기화 오퍼레이션 조건을 가진 오퍼레이션이 실행될때는(같은 요구 또는 같은 어드레스에 대해), 동기화 실행과는 상관 없이, 단지 동기화 조건을 만족하는 오퍼레이션만이 항상 실행된다. 이에 의해 동기화 플래그 및 동기화 완료 플래그가 생략될수있을 뿐 아니라 동기화 명령후 오퍼레이션이 재시도되는 것이 방지될수있으며, 그에 의해 시스템의 처리용량이 개선될 수 있다. 제5실시예는 특히, 무질서 방식으로 보다 약 질서 방식으로 조건 판정을 할 때 효과적이다. 즉, 통상 시스템에서는 동일 어드레스에 액세스하는 순서를 보증하기에 충분하기때문에, 제5실시예는 효과적이다. 제5실시예를 실시하기 위해서는, 동일 어드레스(어드레스의 일부만 비교될수도 있다)에 액세스하는 순서를 변경하지않고, 또는 라이트하고 라이트하는 순서와 리드하고 라이트하는 순서(순서 플래그는 후에 설명함)가 변경되지 않도록하는 수단이 필요하다.
이하 도43를 참고하여 제5실시예를 간략히 설명하겠다.
도43에 표시된 것 처럼, 제5실시예에 의해, 동기화 조건은 모든 오퍼레이션에 적용된다. 동기화 플래그 및 동기화 완료 테이블가 생략되어있다. 이전의 오퍼레이션을 표시하는 순서 플래그(103)를 위한 엔트리가 스코어보드(100, 110, 120 및 130)에 부가되어있다.
이전의 오퍼레이션이 같은 어드레스를 가진 때에는, 이전 오퍼레이션의 입력번호가 엔트리에 세트된다. 이전 오퍼레이션이 발행되었거나 무효화 되었으면, 순서 플래그는 오퍼레이션 발행이 가능하도록 무효화(-)된다.
예컨대, 모든 동기화 오퍼레이션이 "같은 어드레스로 부터 그리고 거기에 리드하고 라이트"을 위한것인 경우, 오퍼레이션이 엔트리에 라이트되는 시점에서 같은 어드레스에의 억세스가 입력되었을 때에는, 입력 번호가 순서번호로 세트된다. 같은 어드레스에 하나 이상의 억세스가 입력되었을 때는, 마지막으로 입력된 억세스의 입력 번호가 순서 플래그로 세트된다.
이전의 오퍼레이션 또는 순서 플래그가 유효한, 관련 엔트리 오퍼레이션은 발행될수 없다. 이전의 오퍼레이션이 처리되었을 때는, 후속입력을 위한 순서플래그는 소거되고 후속입력이 발행될 수 있다. 어떤 이유로 입력된후 입력이 취소될때는, 엔트리를 NOP로 남겨둠으로써 메모리 장치가 취소에 의해 로크되는 것이 방지된다.
도43는 동기화 처리가 항상 같은 어드레스에 대해 실행되는 경우를 표시한다. 예컨대 메모리 영역(0)에 있어 네 개의 유효 엔트리가 같은 어드레스에 억세스를 갖는다. 제5실시예에서는, 동기화가 같은 어드레스에 대해 항상 실행되는 경우, 같은 어드레스의 이전 오퍼레이션은 순서플래그로 표시된다.
도43의 상태에서, 엔트리 1번, 0번, 7번 및 5번은 차례로 같은 어드레스에 액세스한다. 엔트리 0번은 버스오퍼레이션으로 완료되었지만, 엔트리 1번이 선행 오퍼레이션으로 순서 플래그에 입력되었기 때문에, 엔트리 1번의 처리가 완료되기 까지는 엔트리 0번이 발행될수없다. 마찬가지로 엔트리 7번은 엔트리 0번의 처리가 완료되기까지 발행될수없다. 엔트리 5번은 엔트리 7번의 처리가 완료되기까지 발행될수없다. 이에 의해 입력이 엔트리 1번, 0번, 7번 및 5번의 순서로 실행되는 것이 보장된다.
버스오퍼레이션은 완료되지않았기 때문에 엔트리 7번은 취소될 수 있다. 엔트리 7번이 취소된 다음에는 엔트리의 유효플래그를 "1"로 변경하는 대신 오퍼레이션은 "라이트"으로 부터 "NOP"으로 변경되고 이리하여 불능 엔트리 5번이 영원히 발행취소되는 것이 방지된다.
다음, 제5실시예의 오퍼레이션을 보다 상세히 설명한다.
먼저 제5실시예에서 메모리 액세스 명령이 cPU 1에 의해 발행된 경우의 처리를 도44를 참고로 설명하겠다.
cPU 1에 의해 발행된 메모리 액세스 명령이 버스(2)를 경유하여 버스인터페이스(3)에 공급된다. 버스인터페이스(3)는 수신된 메모리 액세스 명령을 메모리 컨트롤러(10)에 전달한다(단계 S91).
수신된 메모리 액세스 명령이 동기화 명령 이외의 메모리 액세스 명령이면, 메모리 컨트롤러(10)는 수신된 메모리 억세스 명령의 어드레스에 기초하여 스코어보드(100, 110, 120 및 130)중에서 해당 스코어보드를 선택한다. 또한, 메모리 컨트롤러(10)는 선택된 스코어보드의 모든 엔트리중에서 유효플래그가 "I"(빈 엔트리)에 세트된 엔트리를 선택된다. 그런 뒤, 메모리 컨트롤러(10)는 전달된 메모리 억세스 명령을 선택된 엔트리에 입력한다(단계 S92).
메모리 억세스 명령을 입력할때는, 메모리 컨트롤러(10)는 메모리 억세스 명령의 연산 코드 및 어드레스를 입력할 뿐만 아니라 유효플래그를 "V"에 세트한다.
동기화 조건에 따라, 메모리 컨트롤러(10)는 관련 엔트리의 메모리 억세스 명령에 관련된 오퍼레이션 또는 동기화될 오퍼레이션이 스코어보드에 존재하는지의 여부를 결정한다(단계 S93). 동기화될 오퍼레이션이 존재하면, 메모리 컨트롤러(10)는 동기화될 (이전의)마지막 입력된 오퍼레이션의 입력번호를 순서플래그에 입력할것이다(단계 S94). 동기화될 오퍼레이션이 존재하지않으면, 메모리 컨트롤러(10)는 관련 엔트리에 대한 순서플래그를 무효화한다(단계 S95).
엔트리의 순서플래그에 입력된 입력순서로 표시된 (이전의 오퍼레이션)이 완료되면,순서플래그는 무효화된다(단계 S96).
또한, 뱅크실행유닛(108, 118, 128 및 38)의 제어하에, 메모리 컨트롤러(10)는 스코어보드로 부터 엔트리를 선택하고 그 엔트리에 명령을 입력한다(단계 S97).
입력된 엔트리(메모리 억세스 명령)가 선택되고 엔트리의 명령이 발행되면(단계 S97, 예), 선택된 엔트리에 대한 발행가능 플래그는 "아니오"에 세트된다(단계 S98). 발행된 메모리 억세스 명령이 버스 인터페이스 유닛(3), 메모리 컨트롤러(10) 및 뱅크실행유닛에 의해 실행된다.
메모리 억세스 명령의 처리가 완료된 후, 메모리 컨트롤러(10)는 스코어보드에 있는 실행된 메모리 억세스 명령에 대한 엔트리에 격납된 유효플래그를 "I"에 세트할뿐 아니라 실행된 메모리 명령이 입력된 엔트리를 방면한다(단계 S99). 처리된 엔트리를 표시하는 입력 순서 플래그가 존재하면, 메모리 컨트롤러(10)는 순서플래그를 무효화할 것이다.
상기한 처리를 통해, cPU 1로 부터 공급된 메모리 억세스 명령이 실행된다.
스코어보드(108, 118, 128 및 138)에 각각 대응시키기위해 제공된 각 뱅크실행유닛에서 명령을 발행하는 과정을 도45를 참고하여 설명할 것이다.
발행될 메모리 억세스 명령이 스코어보드에 입력된 엔트리에 관해서는, 뱅크실행유닛이 먼저 관련 엔트리에 대한 유효플래그가 "I"인지의 여부를 결정한다(단계 S101). 관련 엔트리에 대한 유효 플래그가 "I" 이면, 뱅크실행유닛은, 관련 엔트리가 무효이기 때문에, 관련 엔트리에 있어 메모리 억세스 명령이 발행될수없다고 결정한다(단계 S102).
관련 엔트리에 대한 유효플래그가 "V"이면(단계S101, 아니오), 뱅크실행유닛은 관련 엔트리에 대한 발행플래그가 "아니오"인지의 여부를 결정한다(단계 S103). 관련 엔트리에 대한 발행 플래그가 "아니오"이면, 뱅크실행유닛은 관련 엔트리의 명령이 이미 발행되었거나 발행 조건을 만족하지않는다고 판정하고 관련 엔트리의 메모리 억세스 명령을 발행하지않는다(단계 S104).
관련 엔트리에 대한 발행플래그가 "예"이면(단계 S103,아니오), 뱅크실행유닛은 순서플래그가 무효인지의 여부를 결정한다(단계 S105). 순서플래그가 무효이면, 이것은 동기화 처리가 필요하지않다는 것 또는 관련 엔트리의 이전의 처리가 완료되었다는 것을 의미하며, 따라서 뱅크실행유닛은 관련 엔트리에 있어 메모리 억세스 명령이 발행될수있다고 결정한다(단계 S106).
순서플래그가 무효가 아니면(단계 S105, 아니오), 이것은 동기화 처리가 진행중인 것, 또는 관련 엔트리의 이전 처리가 대기중인 것을 의미하여, 뱅크실행유닛은 관련 엔트리에 있어 메모리 억세스 명령이 발행될수없다고 결정한다(단계 S107).
다음에는, cPU 1이 다음 명령을 상승순으로 공급할 때 제5실시예에서 메모리 컨트롤러(10)의 처리를 설명하겠다:
(1) 리드 12380
(2) 라이트 67830
(3) 라이트 12380
(4) 리드 12380
(5) 리드 absd70
도46 내지 53은 영역(0)을 위해 제공된 스코어보드(100) 및 동기화 완료테이블(12)에 입력되는 데이터항목을 나타낸다.
여기서는, "같은 어드레스에 관한 리드/라이트 명령이 이전 처리가 완료된 후에 발행될수있다"라는 조건이 동기화 조건으로 결정된 것으로 가정한다. 이것은, 같은 어드레스에 대한 이전의 메모리 억세스 명령이 존재할 때에는, 동기화 명령과 상관 없이, 같은 어드레스에 대한 리드/라이트 명령이 필히 발행되지않는 한편, 이전의 억세스 명령이 존재하지 않을 때는 리드/라이트 명령이 발행될수있다는 것을 의미한다.
도46 내지 53에서, 각 엔트리에 있는 명령 "가능/불능 발행"을 표시하는 항목은 다음과 같이 도45에 있어 뱅크실행유닛의 판정 결과를 나타내는 그런 정보를 수용하고 있다: 즉 (a)는 도45의 단계 S102에서의 판정결과에 해당하고; (b)는 단계 S104에서의 판정결과에 해당하고; (w)는 단계 S106에서의 판정결과에 해당하고; (d)는 단계 S107에서의 판정결과에 해당한다. 이것으로 오퍼레이션의 이해가 용이해진다. 그러나, 실제로는 항목은 단지 명령중의 "가능/불능 발행"을 표시하는 정보만 수용하면 된다.
도46는 스코어보드(100)의 초기상태를 표시한다. 따라서 스코어보드(100)의 모든 엔트리는 사용되어있지않다(비어있다). 스코어보드(100)에서의 항목"가능/불능 발행"아래의 모든 엔트리에 있어, 불능 발행을 표시하는 데이터는 입력되어있다. 이것은 (a)에 해당하는 것으로, 뱅크실행유닛(108)이 도45의 처리를 실행할때 엔트리는 무효인 것을 의미한다. 결과적으로, 발행될 수 있는 엔트리는 없다.
도47는 명령(1) "리드 12380"가 버스 인터페이스 유닛(3)으로 부터 전달되었을 경우의 스코어보드(100)를 나타낸다. 여기서, 메모리 컨트롤러(10)는 명령 "12380을 리드하라"의 어드레스에 대응하는 영역(0)에 대해 스코오보드(100)로 부터 빈 엔트리 0번을 선택하여 그 엔트리에 명령을 입력한다. 스코어보드(100)의 엔트리 0번이 발행될 수 있다.
도48은 메모리 컨트롤러(10)가 명령(2) "라이트 67380"를 그후 수신했을 경우의 스코오보드(100)를 나타낸다. 메모리 컨트롤러(10)는 명령 "라이트 67380"의 어드레스에 대응하는 영역(0)에 대해 스코오보드(100)로 부터 빈 엔트리 1번을 선택하여 그 엔트리에 명령을 입력한다. 스코어보드(100)의 엔트리 0번과 1번이 발행될 수 있다.
도49는 메모리 컨트롤러(10)가 명령(3) "라이트 12380"를 그후 수신한 경우 스코어보드(100)를 나타낸다. 메모리 컨트롤러(10)는 명령 "라이트 12380"의 어드레스에 해당하는 영역 0의 스코어 보드(100)로부터 비어 있는 엔트리 No. 2을 선택하여, 엔트리에 명령을 기입한다. 어드레스 12380이 엔트리 No. 0의 메모리 액세스 명령의 어드레스와 동일하기 때문에, 엔트리 No. 0을 나타내는 플래그(데이터)가 엔트리 No. 2의 오더 플래그로서 세트된다. 스코어 보드(100) 상의 엔트리 No. 0 및 엔트리 No. 1 만이 동기화 조건에 따라 발행될 수 있다.
도 50은 메모리 컨트롤러(10)가 명령 (4) "리드 12380"을 수신한 경우의 스코어 보드(100)를 나타낸다. 메모리 컨트롤러(10)는 명령 "리드 12380"의 어드레스에 해당하는 영역 0의 스코어 보드(100)로부터 비어 있는 엔트리 No. 3을 선택하여, 엔트리에 명령을 기입한다. 어드레스 12380이 엔트리 No. 0 및 엔트리 No. 2의 메모리 액세스 명령의 어드레스와 동일하기 때문에, 최종 기입된 엔트리 No. 2을 나타내는 플래그(데이터)가 엔트리 No. 3의 오더 플래그로서 세트된다. 동기화 조건에 따라, 스코어 보드(100) 상의 엔트리 No. 0 및 엔트리 No. 1 만이 발행될 수 있다.
도 51은 뱅크실행유닛(108)이 스코어 보드(100)상의 엔트리 No. 0을 선택하여 명령 (1) "리드 12380"을 발행하는 경우의 스코어 보드(100)를 나타낸다. 메모리 컨트롤러(10)는 스코어 보드(100)상의 항목 “En”∼“NO”중에서 엔트리 No. 0을 세트하여 엔트리 No. 0을 자유상태로 세트한다. 스코어 보드(100)상의 엔트리 No. 1 이 발행될 수 있다.
도 52는 발행된 명령 (1) "리드 12380"의 처리가 완료된 경우의 스코어 보드(100)를 도시한다. 메모리 컨트롤러(10)는 스코어 보드(100)상의 엔트리 No. 2의 오더 플래크를 무효화시킨다. 따라서, 스코어 보드(100)상의 엔트리 No. 1 및 엔트리 No. 2만이 발행될 수 있다.
도 53은 메모리 컨트롤러(10)가 명령 (5) "리드 abcd70"을 수신한 경우의 스코어 보드(100)를 나타낸다. 메모리 컨트롤러(10)는 명령 "리드 abcd70"의 어드레스에 해당하는 영역 0의 스코어 보드(100)로부터 비어 있는 엔트리 No. 0을 선택하여, 엔트리에 명령을 기입한다. 스코어 보드(100)상의 엔트리 No. 0, 엔트리 No. 1 및 엔트리 No. 2 만이 발행될 수 있다.
상술한 프로세스에 의해, 메모리 컨트롤러(10)는 소정의 동기화 조건에 따라 메모리 액세스 명령을 선택하여 발행할 수 있다.
[실시예 6]
도 54에 도시된 바와 같이, 본 발명의 제 6 실시예는 모든 메모리 영역 또는 메모리 컨트롤 범위가 단일 스코어 보드(200)에 의해 처리되고 동기화 완료 테이블이 사용되지 않은 경우를 나타낸다. 즉, 제 6 실시예는 개별 메모리 영역의 동작상태를 집합적으로 한데 뭉뚱그려 처리한 시스템인 반면에, 제 1 실시예는 개별 메모리 영역의 동작상태를 따로따로 처리한 시스템이다. 기본 동작은 제 1 실시예와 동일하다.
도 54에 도시된 바와 같이, 제 6 실시예의 메모리 컨트롤러(10)는 단일 스코어 보드(200)를 이용하여 각 뱅크 메모리 bM0∼bM3의 동작상태를 처리하여 4개의 메모리 영역 0∼3 의 제어 신호를 발생시킨다. 동기화 동작이 발행되면, 동기화 전의 동작상태에 있는 플래그가 동기화 플래그(201)로서 "1"로 세트되어, 동기화 후의 동작과 식별된다.
또한, 동기화 완료 플래그는 동기화 프로세스가 완료될 때까지 동기화 완료 테이블(240)에 "1"로 세트되어, 이것에 의해 후속 동기화 동작이 허용되지 않으므로 동기화 동작이 퇴각된다. 단일 스코어 보드에 있어서는, 동기화 플래그(201)가 모든 엔트리에 대해 "0"이면, 동기화가 완료되었음을 의미한다. 따라서, 동기화 완료 테이블(240)이 생략될 수 있다.
[실시예 7]
도 55에 도시된 바와 같이, 제 6 실시예와 마찬가지로, 제 7 실시예는 단일 스코어 보드(100)를 사용하여 개별 메모리 영역의 동작상태를 집합적으로 한데 뭉둥그려 처리하고 모든 개별 엔트리의 동기화 완료 플래그(241) 및 동기화 조건(242)이 세트되어 있는 동기화 완료 테이블(240)이 주어진 경우이다.
구체적으로는, 제 6 실시예에 의하면, 동기화 프로세스는 동기화 조건(242, 동일한 어드레스 Sa)을 충족시키는 동작에 대해서만 실행되는 반면에, 정상적인 아웃 오브 오더 프로세스 또는 위크(weak) 오더 프로세스는 동기화 조건을 충족시키는 않는 동작에 대해 실행된다.
제7 실시예는 도 55에 도시된 바와 같이, 동기화 조건(242)이 동기화 완료 테이블(240)에 부가된다는 점에서 제 6 실시예와는 다르다. 따라서, 제 7 실시예는 집합적인 방법에서만 제 6 실시예와 다르다. 제 7 실시예의 기본동작은 제 2 실시예와 동일하다.
제7 실시예에 의하면, 동기화 완료 테이블(240)이 생략되는 경우에는, 스코어 보드(100)에 동기화 동작을 기입하여 후속 동작이 도래할 때마다 동기화 조건이 충족되는 지의 여부에 대하여 결정하는 것이 필요하다. 후속 동작이 기입될 때, 동기화 플래그(201)가 스코어 보드(200)에 세트된다. 세가지 상태를 규정하는 동기화 플래그, "동기화 전", "동기화 후" 및 "동기화와 무관"의 사용으로 제어동작이 촉진된다. 동기화의 완료상태는 스코어 보드에 "동기화 전"에 대한 엔트리가 소멸된 상태로부터 판정될 수 있다.
[실시예 8]
도 56에 도시된 바와 같이, 제 6 실시예와 마찬가지로, 본 발명의 제 8 실시예는 단일 스코어 보드(200)를 사용하여 개별 메모리 영역의 동작상태를 집합적으로 한데 뭉뚱그려 처리하고 다중 레벨의 동기화 플래그에 대한 엔트리를 제 3 실시예에서와 같이 기입하는 경우이다. 제 8 실시예에 의하면, 스코어 보드(200)만을 사용하는 경우에는, 동기화 완료 테이블(24)이 생략될 수 있다.
도 56에 도시된 바와 같이, 제 8 실시예는 다중 동기화 레벨에 일치시키도록 다중 레벨의 동기화 플래그(202)의 엔트리가 스코어 보드(200)에 제공되어 있는 경우이다. 제 8 실시예의 상세한 동작은 제 3 실시예와 동일하다. 구체적으로, 제 8 실시예에 의하면, 동기화 플래그(202)가 각 엔트리에 대해 4개의 레벨 0∼3을 갖고 있는 것으로 추정된다. 동기화 완료 테이블(240)의 동기화 완료 플래그도 4개의 레벨을 갖는 것으로 추정된다. 동기화 (SYNc) 리드 포인터(261)는 레벨이 실행되는 것을 나타내고, 동기화 라이트 포이터(262)는 다음에 오는 동기화 레벨을 나타낸다.
동기화 완료 테이블(240)이 생략되는 경우에는, 동기화 동작이 스코어 보드에 기입되고, 후속 동작이 도래할 때마다 동기화 조건이 충족되는 지의 여부를 판단한다. 후속 동작이 기입될 때, 동기화 플래그(202)가 세트된다. 이러한 경우에는, 세가지 상태를 규정하는 동기화 플래그, "동기화 전", "동기화 후" 및 "동기화와 무관"의 사용으로 제어동작이 촉진된다. 동기화의 완료상태는 스코어 보드에 "동기화 전"에 대한 엔트리가 소멸된 상태로부터 판정될 수 있다.
[실시예 9]
도 57에 도시된 바와 같이, 제 6 실시예와 마찬가지로, 본 발명의 제 9 실시예는 단일 스코어 보드(200)를 사용하여 개별 메모리 영역의 동작상태를 집합적으로 한데 뭉둥그려 처리하고 각 동기화 레벨 0∼3의 동기화 조건(이 경우, 동일한 어드레스 Sa)을 나타내는 엔트리(263)를 갖춘 동기화 완료 테이블(240)이 제 4 실시예에서와 같이 주어지는 경우이다.
구체적으로, 제 9 실시예는 다수의 동기화 조건을 나타내는 엔트리(263)가 다중 동기화 레벨에 따라 동기화 완료 테이블(240)에 주어진다. 제 9 실시예의 상세한 동작은 제 4 실시예에서와 동일하다.
동기화 완료 테이블(240)이 생략되는 경우에는, 동기화 동작이 스코어 보드에 기입되고, 후속 동작이 도래할 때마다 동기화 조건이 충족되는 지의 여부를 판단한다. 후속 동작이 기입될 때, 동기화 플래그(202)가 세트된다. 이러한 경우에는, 세가지 상태를 규정하는 동기화 플래그, "동기화 전", "동기화 후" 및 "동기화와 무관"의 사용으로 제어동작이 진척된다. 동기화의 완료상태는 스코어 보드에 "동기화 전"에 대한 엔트리가 소멸된 상태로부터 판정될 수 있다.
[실시예 10]
도 58에 도시된 바와 같이, 제 6 실시예와 마찬가지로, 본 발명의 제 10 실시예는 단일 스코어 보드(200)를 사용하여 개별 메모리 영역의 동작상태를 집합적으로 한데 뭉둥그려 처리하고 동기화 조건이 모든 동작(동기화와 무관)이 적용되는 경우이다. 제 10 실시예에 의하면, 동기화 동작에 대한 조건을 갖는 동작이 실행되는 경우에는(동일한 리퀘스트 또는 동일한 어드레스), 동기화의 실행에 무관하게 동기화 조건을 충족시키는 동작만이 항상 실행된다. 이것에 의해 동기화 플래그 및 동기화 완료 테이블을 생략할 수 있을 뿐만 아니라, 동기화 명령후의 동작이 퇴각되는 것을 방지하여 시스템의 처리능력을 향상시킬 수 있게 된다.
구체적으로, 도 58에 도시된 바와 같이, 제 10 실시예는 동기화 조건이 모든 동작에 적용되고, 동기화 플래그 및 동기화 완료 테이블이 생략되어 있으며, 선행 동작을 나타내는 오더 플래그(203)의 엔트리가 스코어 보드(200)에 부가되는 경우이다. 선행 동작이 동일한 어드레스를 갖는 경우에는, 예를 들면, 선행 동작의 엔트리 넘버가 엔트리에 세트된다. 선행동작이 발행되거나 무효화되는 경우에는, 오더 플래그는 동작이 발행될 수 있도록 무효화(-)된다. 제 10 실시예의 상세한 동작은 제 5 실시예에서와 동일하다.
[발명의 효과]
지금까지 상세하게 설명된 바와 같이, 본 발명에 의하면, 다중 프로세서 시스템에 사용되는 메모리 컨트롤러에 있어서, 처리 테이블의 사용으로 메모리 액세스 상태를 처리함은 물론, 동기화 동작이 실행되는 경우에는 후속 동작(또는 동기화 조건을 충족시키는 동작)을 외관상으로는 허용할 수 있다. 따라서, 후속 동작을 요구하는 유닛이 리퀘스트를 재시도하는 것을 방지하여, 동기화 프로세스 시스템의 오버헤드를 감소시킬 수 있다.
본 발명의 다른 장점 및 변형체는 당해 기술분야의 숙련가에 의해 용이하게 실현될 것이다. 따라서, 광범위한 측면에 있어서의 본 발명은 특정예, 전형적인 장치 및 상술한 실시예에 한정되지 않는다. 따라서, 첨부된 특허청구의 범위에 기재된 바와같이 본 발명의 의도 및 범위를 벗어나지 않는 범위내에서 변형이 다양하게 이루어 질 수 있다.
상세히 설명한 바와 같이, 다중프로세서 시트템에 적용된메모리 컨트롤러에 있어서, 관리테이블의 사용은 동기화 오퍼레이션이 실행될 때 메모리 액세싱(accessing)상태를 관리할 뿐만 아니라 후속(subsegnent)오퍼레이션(혹은 동기화 조건을 만족하는 오퍼레이션)을 받아들이는 것을 가능하게 만든다.
따라서 후속오퍼레이션을 요구하는 유닛이 그 요구를 재시도하는 것을 방지하는 것이 가능해지며, 그결과 동기화 과정에서 시스템의 오버헤드(overhead)를 줄일수 있다.
Claims (20)
- 복수개의 메모리 뱅크로 이루어진 기억유닛을 가지는 컴퓨터 시스템에 사용된 메모리 컨트롤러에 있어서,상기 메모리 컨트롤러가 상기의 메모리 뱅크 각각에 대해 복수개의 엔트리를 가지고 명령을 저장하며 데이터를 동기화 하는 명령 관리 테이블과,명령을 수신하고, 수신된 명령이 상기 메모리에 대한 액세스명령일때에는 상기 명령 관리테이블내에 액세스 명령을 받아들여서 상기 동기화 데이터를 리셋하고, 수신된 명령이 동기화 명령일때에는 상기 관리 테이블 내에 기입된 명령 각각에 대해 상기 동기화 데이터를 세트하는 관리 수단과,상기 동기화 데이터가 세트되도록 명령을 우선적으로 발행하고, 상기 복수개의 메모리뱅크 각각에 대하여 독립적으로 기능하는 발행수단으로 구성되는 것을 특징으로 하는 메모리 컨트롤러.
- 제 1항의 메모리 컨트롤러에 있어서,상기 명령관리 테이블은 정보를 발행하는 명령을 저장하고,액세스 명령의 수신에 응하여 상기 관리수단은 상기 동기화데이터가 상기 관리테이블내에 입력된 명령에 대해 세트될때에는 상기 수신된 액세스 명령에 대응하는 발행정보가 발행되어지는 것을 막고 상기 동기화 데이터가 상기 관리테이블내에 기입된 명령에 대해 세트되지않을때에는 상기 발행 정보가 발행되는 것이 가능하게 하며,상기 발행수단은 상기 발행정보에 따라 명령을 발행하고 명령이 발행된후에는 발행된 명령에 대응하는 발행정보가 발행되지 않도록 하는 것을 특징으로 하는 메모리 컨트롤러.
- 제 1항의 메모리 컨트롤러에 있어서,상기 발행수단은 명령이 완료된 후 상기 관리테이블내에 있는 발행된 명령에 대응하는 엔트리를 비우는 것을 특징으로 하는 메모리 컨트롤러.
- 제 1항의 메모리컨트롤러에 있어서,상기 발행수단은 특별한 동기화 조건에 따라서 상기 동기화 데이터가 세트되는 명령을 발행하는 것을 특징으로 하는 메모리 컨트롤러.
- 제 1항의 메모리 컨트롤러에 있어서,상기 관리 수단은 복수개의 동기화 명령을 수신하고 상기 복수개의 동기화명령이 식별되도록 상기 동기화 데이터를 세트하며,상기 발행수단은 동기화 명령이 수리된 순서에 따라서 상기 동기화 데이터가 세트되도록 명령중의 하나를 발행하고 수신된 동기화 명령의 완료에 응해서 상기 동기화 데이터를 갱신하는 것을 특징으로 하는 메모리 컨트롤러.
- 복수개의 메모리 뱅크로 이루어진 기억유닛을 가지는 컴퓨터 시스템에 사용된 메모리 컨트롤러에 있어서,상기 메모리 컨트롤러가 상기의 메모리 뱅크 각각에 대해 복수개의 엔트리를 가지고 명령을 저장하며 데이터를 동기화 하는 명령 관리 테이블과,동기화 명령의 처리상태를 지시하는 스테이터스(status)데이터를 저장하는 동기화 관리 테이블과,명령을 수신하고 그 수신된 명령이 상기 메모리에 대한 액세스 명령일때에는 상기 명령관리 테이블내에 그 액세스 명령을 기입해서 상기 동기화 데이터를 리셋하고, 상기 수신된 명령이 동기화 명령일 때에는 상기 관리 테이블내에 기입된 명령 각각에 대해 상기 동기화 데이터를 세트하고, 동기화 명령 과정이 진행중임을 지시하는 스테이터스 데이터를 상기 동기화 관리 테이블 내에 세트하는 관리수단과,상기 동기화 데이터가 세트되도록 명령을 우선적으로 발행하고 상기 복수개의 메모리 뱅크 각각에 대하여 독립적으로 기능하는 발행수단 및,상기 발행수단에 의해 발행된 명령의 완료후에 동기화 명령과정이 완료되는 때에 상기 동기화 관리 테이블 내에 저장된 스테이터스 테이터를 리셋하는 수단으로 구성되는 것을 특징으로 하는 메모리 컨트롤러.
- 제 6항의 메모리 컨트롤러에 있어서,상기 명령 관리 테이블은 정보를 발행하는 명령을 저장하고,액세스 명령의 수신에 응하여 상기 관리수단은 상기 동기화 데이터가 상기 관리 테이블내에 기입된 명령에 대해 세트될때에는 상기 수신된 액세스 명령에 대응하는 발행정보가 발행되는 것을 막고 상기 동기화 데이터가 상기 관리 테이블내에 기입된 명령에 대해 세트되지 않을때에는 상기 발행정보가 발행되는 것이 가능하게 하며,상기 발행수단은 상기 발행정보에 따라 명령을 발행하고 명령이 발행된 후에는 발행된 명령에 대응하는 발행정보가 발행되지 않도록 하는 것을 특징으로 하는 메모리 컨트롤러
- 제 6 항의 메모리 컨트롤러에 있어서,상기 발행수단은 명령이 완료된 후 상기 테이블내에 있는 발행된 명령에 대응하는 엔트리를 비우는 것을 특징으로 하는 메모리 컨트롤러.
- 제 6 항의 메모리 컨트롤러에 있어서,상기 발행수단은 특별한 동기화 조건에 따라서 상기 동기화 데이터가 세트되는 명령을 발행하는 것을 특징으로 하는 메모리 컨트롤러.
- 제 6 항의 메모리 컨트롤러에 있어서,상기 관리 수단은 복수개의 동기화 명령을 수신해서 그 복수개의 동기화 명령이 식별되도록 상기 동기화 데이터를 세트함과 아울러 상기 복수개의 동기화 명령 각각에 대한 상기 동기화 관리 테이블 내에 있는 스테이터스 데이터를 세트하고,상기 발행수단은 동기화 명령이 수리된 순서에 따라서 상기 동기화 데이터가 세트되도록 명령중의 하나를 발행하고 수신된 동기화 명령의 완료에 응해서 상기 동기화 데이터 및 상기 스테이터스 데이터를 갱신하는 것을 특징으로 하는 메모리 컨트롤러.
- 명령을 전송하는 다중 프로세서, 다수의 메모리 뱅크로 이루어진 메모리, 및 상기 다수의 메모리 뱅크 각각에 대해 다수의 엔트리를 갖고 있고 명령 및 동기화 데이터를 저장하는 명령처리테이블을 구비하는 컴퓨터 시스템의 메모리 제어방법에 있어서, 상기 메모리 제어 방법은,상기 다중 프로세서로부터 전송되는 명령을 수신하는 단계,수신된 명령이 메모리 액세스 명령인 경우에 상기 명령처리테이블의 액세스 명령을 기입하여 동기화 데이터를 리셋하는 단계,수신된 명령이 동기화 명령인 경우에 상기 명령처리테이블에 기입된 각 명령에 대한 동기화 테이터를 세트하는 단계, 및상기 다수의 메모리 뱅크에 대해 동기화 데이터가 세트되어 있는 명령을 우선적으로 발행하는 단계로 구성되는 것을 특징으로 하는 메모리 제어방법.
- 제 11 항에 있어서, 상기 명령처리테이블은 명령발행정보를 저장하고,상기 명령기입단계는 동기화 데이터가 상기 명령처리테이블에 기입된 명령에 대해 세트되어 있는 경우에 액세스 명령을 수신함에 따라 수신된 명령에 해당하는 발행정보를 발행하지 못하게 하고, 동기화 데이터가 상기 명령처리테이블에 기입된 명령에 대해 세트되어 있지 않은 경우에 발행정보를 발행시키는 서브단계를 포함하며,상기 발행단계는 발행정보에 따라 명령을 발행하고, 명령을 발행한 후에 발행된 명령에 해당하는 발행정보를 발행하지 못하게 하는 서브단계를 포함하는 것을 특징으로 하는 메모리 제어방법.
- 제 11 항에 있어서, 상기 발행단계는 명령이 완료된 후에 상기 명령처리테이블의 발행된 명령에 해당하는 엔트리를 자유롭게 세트하는 서브단계를 포함하는 것을 특징으로 하는 메모리 제어방법.
- 제 11 항에 있어서, 상기 발행단계는 특정 동기화 조건에 따라 동기화 데이터가 세트되어 있는 명령을 발행하는 서브단계를 포함하는 것을 특징으로 하는 메모리 제어방법.
- 제 11 항에 있어서, 상기 동기화 데이터 세트단계는 다수의 동기화 명령을 수신하여 다수의 동기화 명령이 식별되도록 동기화 데이터를 세트하는 서브단계를 포함하고,상기 발행단계는 동기화 명령에 따라 수신된 순서대로 동기화 데이터를 세트하는 명령을 발행하는 서브단계 및 수신된 동기화 명령의 완료동작에 따라 동기화 데이터를 갱신하는 서브단계를 포함하는 것을 특징으로 하는 메모리 제어방법.
- 명령을 전송하는 다중 프로세서, 다수의 메모리 뱅크로 이루어진 메모리, 및 상기 다수의 메모리 뱅크 각각에 대해 다수의 엔트리를 갖고 있고 명령 및 동기화 데이터를 저장하는 명령처리테이블을 구비하는 컴퓨터 시스템의 메모리 제어방법에 있어서, 상기 메모리 제어 방법은,상기 다중 프로세서로부터 전송되는 명령을 수신하는 단계,수신된 명령이 메모리 액세스 명령인 경우에 상기 명령처리테이블의 액세스 명령을 기입하여 동기화 데이터를 리셋하는 단계,수신된 명령이 동기화 명령인 경우에 상기 명령처리테이블에 기입된 각 명령에 대한 동기화 테이터를 세트한 다음, 동기화 명령 프로세스가 진행 중임을 나타내는 상태 데이터를 동기화 처리 테이블에 세트하는 단계,상기 다수의 메모리 뱅크에 대해 동기화 데이터가 세트되어 있는 명령을 우선적으로 발행하는 단계, 및발행수단에 의해 명령발행을 완료한 후에 동기화 명령 프로세스를 완료한 경우에는 상기 동기화 처리 테이블에 저장된 상태 데이터를 리셋하는 단계로 구성되는 것을 특징으로 하는 메모리 제어방법.
- 제 16 항에 있어서, 상기 명령처리테이블은 명령발행정보를 저장하고,상기 기입단계는 동기화 데이터가 상기 명령처리테이블에 기입된 명령에 대해 세트되어 있는 경우에 액세스 명령을 수신함에 따라 수신된 명령에 해당하는 발행정보를 발행하지 못하게 하고, 동기화 데이터가 상기 명령처리테이블에 기입된 명령에 대해 세트되어 있지 않은 경우에 발행정보를 발행시키는 서브단계를 포함하며,상기 발행단계는 발행정보에 따라 명령을 발행하고, 명령을 발행한 후에 발행된 명령에 해당하는 발행정보를 발행하지 못하게 하는 서브단계를 포함하는 것을 특징으로 하는 메모리 제어방법.
- 제 16 항에 있어서, 상기 발행단계는 명령이 완료된 후에 상기 명령처리테이블의 발행된 명령에 해당하는 엔트리를 자유롭게 세트하는 서브단계를 포함하는 것을 특징으로 하는 메모리 제어방법.
- 제 16 항에 있어서, 상기 발행단계는 특정 동기화 조건에 따라 동기화 데이터가 세트되어 있는 명령을 발행하는 서브단계를 포함하는 것을 특징으로 하는 메모리 제어방법.
- 제 16 항에 있어서, 상기 기입단계는 다수의 동기화 명령을 수신하여 다수의 동기화 명령이 식별되도록 동기화 데이터를 세트하고 다수의 동기화 명령의 각각에 대해 상기 동기화 처리 테이블에 상태 데이터를 세트하는 서브단계를 포함하고,상기 발행단계는 동기화 명령에 따라 수신된 순서대로 동기화 데이터를 세트하는 명령을 발행하는 서브단계 및 수신된 동기화 명령의 완료동작에 따라 동기화 데이터 및 상태 데이터를 갱신하는 서브단계를 포함하는 것을 특징으로 하는 메모리 제어방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP96-15726 | 1996-01-31 | ||
JP1572696 | 1996-01-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR970059955A KR970059955A (ko) | 1997-08-12 |
KR100220890B1 true KR100220890B1 (ko) | 1999-09-15 |
Family
ID=11896768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970003124A KR100220890B1 (ko) | 1996-01-31 | 1997-01-31 | 메모리 컨트롤러 및 메모리 제어방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5881264A (ko) |
EP (1) | EP0788054B1 (ko) |
KR (1) | KR100220890B1 (ko) |
CN (1) | CN1120425C (ko) |
DE (1) | DE69733374T2 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100708096B1 (ko) * | 2000-07-21 | 2007-04-16 | 삼성전자주식회사 | 버스 시스템 및 그 실행 순서 조정방법 |
KR101013769B1 (ko) | 2008-12-16 | 2011-02-14 | 인하대학교 산학협력단 | 버스 중재방법 및 장치 |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6260131B1 (en) * | 1997-11-18 | 2001-07-10 | Intrinsity, Inc. | Method and apparatus for TLB memory ordering |
US6370632B1 (en) | 1997-11-18 | 2002-04-09 | Intrinsity, Inc. | Method and apparatus that enforces a regional memory model in hierarchical memory systems |
DE69943402D1 (de) | 1998-02-04 | 2011-06-16 | Panasonic Corp | Speichersteuerungseinheit und -verfahren und Medium mit Ausführungsprogramm |
US6065086A (en) * | 1998-02-17 | 2000-05-16 | International Business Machines Corporation | Demand based sync bus operation |
US6862635B1 (en) * | 1998-11-13 | 2005-03-01 | Cray Inc. | Synchronization techniques in a multithreaded environment |
US6363466B1 (en) | 1999-09-13 | 2002-03-26 | Vlsi Technology, Inc. | Interface and process for handling out-of-order data transactions and synchronizing events in a split-bus system |
JP3857530B2 (ja) * | 2001-03-09 | 2006-12-13 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ジョブ実行制御装置、方法、及びプログラム |
US7089405B2 (en) * | 2001-03-21 | 2006-08-08 | Sun Microsystems, Inc. | Index-based scoreboarding system and method |
US6725314B1 (en) * | 2001-03-30 | 2004-04-20 | Sun Microsystems, Inc. | Multi-bank memory subsystem employing an arrangement of multiple memory modules |
US7711928B2 (en) * | 2004-03-31 | 2010-05-04 | Oracle America, Inc. | Method and structure for explicit software control using scoreboard status information |
US7409475B2 (en) * | 2004-10-20 | 2008-08-05 | Kabushiki Kaisha Toshiba | System and method for a high-speed shift-type buffer |
US7603544B2 (en) * | 2004-12-23 | 2009-10-13 | Intel Corporation | Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation |
US7480781B2 (en) * | 2004-12-30 | 2009-01-20 | Intel Corporation | Apparatus and method to merge and align data from distributed memory controllers |
WO2006098135A1 (ja) * | 2005-03-14 | 2006-09-21 | Matsushita Electric Industrial Co., Ltd. | バスコントローラ |
JP2006331008A (ja) * | 2005-05-25 | 2006-12-07 | Matsushita Electric Ind Co Ltd | メモリインタフェース |
US7738483B2 (en) * | 2005-09-08 | 2010-06-15 | Kabushiki Kaisha Toshiba | Systems and methods for managing communication between master and slave devices |
US8165301B1 (en) | 2006-04-04 | 2012-04-24 | Bitmicro Networks, Inc. | Input-output device and storage controller handshake protocol using key exchange for data security |
US7620748B1 (en) * | 2006-04-06 | 2009-11-17 | Bitmicro Networks, Inc. | Hardware assisted non-volatile memory-to-input/output direct memory access (DMA) transfer |
KR100593425B1 (ko) * | 2006-04-11 | 2006-06-28 | (주)케이제이엔지니어링 건축사사무소 | 공동주택내 전신주의 접지선 고정장치 |
US8065459B2 (en) * | 2006-05-17 | 2011-11-22 | Nxp B.V. | Multi-processing system and a method of executing a plurality of data processing tasks |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
JP2010020363A (ja) * | 2008-07-08 | 2010-01-28 | Sony Corp | 演算処理装置 |
JP5300407B2 (ja) | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
JP2010097557A (ja) * | 2008-10-20 | 2010-04-30 | Toshiba Corp | セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法 |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US9135190B1 (en) | 2009-09-04 | 2015-09-15 | Bitmicro Networks, Inc. | Multi-profile memory controller for computing devices |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) * | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
JP2011198091A (ja) * | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
US8935513B2 (en) * | 2012-02-08 | 2015-01-13 | International Business Machines Corporation | Processor performance improvement for instruction sequences that include barrier instructions |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US9582276B2 (en) * | 2012-09-27 | 2017-02-28 | Apple Inc. | Processor and method for implementing barrier operation using speculative and architectural color values |
US9383995B2 (en) | 2013-01-25 | 2016-07-05 | Apple Inc. | Load ordering in a weakly-ordered processor |
US9779038B2 (en) * | 2013-01-31 | 2017-10-03 | Apple Inc. | Efficient suspend-resume operation in memory devices |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9916213B1 (en) | 2013-03-15 | 2018-03-13 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9858084B2 (en) | 2013-03-15 | 2018-01-02 | Bitmicro Networks, Inc. | Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US9811461B1 (en) | 2014-04-17 | 2017-11-07 | Bitmicro Networks, Inc. | Data storage system |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
KR101993028B1 (ko) | 2015-02-05 | 2019-06-26 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
US10877888B2 (en) | 2018-09-07 | 2020-12-29 | Apple Inc. | Systems and methods for providing distributed global ordering |
CN110806900B (zh) * | 2019-04-30 | 2021-07-09 | 成都海光微电子技术有限公司 | 一种访存指令处理方法及处理器 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2825906B2 (ja) * | 1990-02-01 | 1998-11-18 | 株式会社日立製作所 | 計算機システム |
JPH0498435A (ja) * | 1990-08-10 | 1992-03-31 | Toshiba Corp | 計算機システムの共有メモリ制御装置 |
US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
US5530835A (en) * | 1991-09-18 | 1996-06-25 | Ncr Corporation | Computer memory data merging technique for computers with write-back caches |
CA2083022A1 (en) * | 1991-11-22 | 1993-05-23 | Maria Pay Kudisch | Application specific integrated circuit for shared memory controller |
US5307320A (en) * | 1992-09-23 | 1994-04-26 | Intel Corporation | High integration DRAM controller |
US5898882A (en) * | 1993-01-08 | 1999-04-27 | International Business Machines Corporation | Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage |
US5627984A (en) * | 1993-03-31 | 1997-05-06 | Intel Corporation | Apparatus and method for entry allocation for a buffer resource utilizing an internal two cycle pipeline |
US5634026A (en) * | 1995-05-12 | 1997-05-27 | International Business Machines Corporation | Source identifier for result forwarding |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
-
1997
- 1997-01-29 US US08/790,919 patent/US5881264A/en not_active Expired - Fee Related
- 1997-01-30 EP EP97101467A patent/EP0788054B1/en not_active Expired - Lifetime
- 1997-01-30 DE DE69733374T patent/DE69733374T2/de not_active Expired - Fee Related
- 1997-01-31 KR KR1019970003124A patent/KR100220890B1/ko not_active IP Right Cessation
- 1997-01-31 CN CN97102917A patent/CN1120425C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100708096B1 (ko) * | 2000-07-21 | 2007-04-16 | 삼성전자주식회사 | 버스 시스템 및 그 실행 순서 조정방법 |
KR101013769B1 (ko) | 2008-12-16 | 2011-02-14 | 인하대학교 산학협력단 | 버스 중재방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR970059955A (ko) | 1997-08-12 |
US5881264A (en) | 1999-03-09 |
EP0788054A3 (en) | 2002-05-15 |
DE69733374T2 (de) | 2006-04-27 |
CN1175034A (zh) | 1998-03-04 |
DE69733374D1 (de) | 2005-07-07 |
CN1120425C (zh) | 2003-09-03 |
EP0788054A2 (en) | 1997-08-06 |
EP0788054B1 (en) | 2005-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100220890B1 (ko) | 메모리 컨트롤러 및 메모리 제어방법 | |
US5274790A (en) | Cache memory apparatus having a plurality of accessibility ports | |
US7533227B2 (en) | Method for priority scheduling and priority dispatching of store conditional operations in a store queue | |
US6122712A (en) | Cache coherency controller of cache memory for maintaining data anti-dependence when threads are executed in parallel | |
US7321954B2 (en) | Method for software controllable dynamically lockable cache line replacement system | |
US8131894B2 (en) | Method and system for a sharing buffer | |
US5564034A (en) | Cache memory with a write buffer indicating way selection | |
US6134633A (en) | Prefetch management in cache memory | |
JP2000339157A (ja) | キャッシュメモリ制御装置および計算機システム | |
JPS6118226B2 (ko) | ||
JPH0581129A (ja) | データ処理システムのキヤツシユ内のデータユニツトに対する所有権変更制御装置 | |
JPS59165144A (ja) | 命令取出し装置 | |
CA1187198A (en) | System for controlling access to channel buffers | |
CN113924558A (zh) | 阶层式存储器系统中的存储器管线控制 | |
JP3862959B2 (ja) | マイクロプロセッサのロード/ストア命令制御回路、およびロード/ストア命令制御方法 | |
US6078993A (en) | Data supplying apparatus for independently performing hit determination and data access | |
US9170962B2 (en) | Dynamic designation of retirement order in out-of-order store queue | |
JP3505728B2 (ja) | 記憶制御装置 | |
US6643718B1 (en) | Method and apparatus for controlling order dependency of items in a multiple FIFO queue structure | |
US4547848A (en) | Access control processing system in computer system | |
JPH09269935A (ja) | メモリ制御装置、及びメモリ制御方法 | |
EP1278121B1 (en) | Microprocessor maintaining memory consistency | |
US6918119B2 (en) | Method and system to improve usage of an instruction window buffer in multi-processor, parallel processing environments | |
JPH09218823A (ja) | キャッシュメモリ制御装置 | |
JPS6022376B2 (ja) | キャッシュメモリ制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20080527 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |