KR100306548B1 - 컴퓨터시스템메모리콘트롤러및버스트데이터순서변환방법 - Google Patents

컴퓨터시스템메모리콘트롤러및버스트데이터순서변환방법 Download PDF

Info

Publication number
KR100306548B1
KR100306548B1 KR1019980028710A KR19980028710A KR100306548B1 KR 100306548 B1 KR100306548 B1 KR 100306548B1 KR 1019980028710 A KR1019980028710 A KR 1019980028710A KR 19980028710 A KR19980028710 A KR 19980028710A KR 100306548 B1 KR100306548 B1 KR 100306548B1
Authority
KR
South Korea
Prior art keywords
burst
data
pointer
quadword
buffer
Prior art date
Application number
KR1019980028710A
Other languages
English (en)
Other versions
KR19990023208A (ko
Inventor
워런 에드워드 몰리
데이비드 더블유. 빅터
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR19990023208A publication Critical patent/KR19990023208A/ko
Application granted granted Critical
Publication of KR100306548B1 publication Critical patent/KR100306548B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

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

공유 멀티 프로세서 시스템에서, 순차 버스트 프로토콜이나 인터리브 버스트 프로토콜을 이용하여 I/O 디바이스들과 프로세서들 간의 캐시 라인 버스트 전송을 지원함으로써 제조시에 하드웨어 변경 비용을 최소화할 수 있는 메모리 컨트롤러가 설계된다.

Description

컴퓨터 시스템 메모리 콘트롤러 및 버스트 데이터 순서 변환 방법{DUAL PROCESSOR MODE MEMORY CONTROLLER}
본 발명은 컴퓨터 시스템에서 이용되는 메모리 컨트롤러에 관한 것으로, 특히 프로세서 모두가 순차 버스트 순서화(sequential burst ordering) 또는 인터리브(interleaved) 버스트 순서화를 이용하는 하나 또는 그 이상의 프로세서에 SMP 공유 버스에 의해 아무런 변경없이 결합될 수 있는 단일 메모리 컨트롤러에 관한 것이다.
컴퓨터 워크스테이션과 같은 컴퓨터 시스템은 적어도 하나의 마이크로프로세서와 여러가지 서브시스템 간의 정보 전달로 인해 동작한다. 마이크로프로세서와 서브시스템 간의 통신은 버스라고 하는 데이타 통신 통로를 따라 행해진다. 통상의 멀티 프로세서 시스템에서는 다수의 프로세서가 버스와 메모리 컨트롤러를 통해 공통의 메인 메모리를 공유하며, 각 프로세서는 적어도 하나의 캐시와 캐시 컨트롤러를 갖고 있다. 대칭적 멀티 프로세싱 시스템(symmetric multi-procesing system : SMP)에서는 다수의 프로세서 요소는 프로세서 버스에 의해 함께 결합되어 있다. 흔히 SMP 버스라고 하는 이 프로세서 버스는 프로그래밍의 공유 메모리 스타일을 지원한다. 이와 같은 컴퓨터 시스템에서는 하나 또는 그 이상의 프로세서가 "공유 메모리"라고 하는 메모리에 액세스하는 것이 통상적이다. 이 공유 메모리는 많은 메모리 모듈을 포함하는 메모리 어레이가 될 수 있다. 공유 메모리로의 액세스는 일반적으로 공유 메모리 버스를 통해서 행해진다. 이 공유 메인 메모리에는 동기식 다이나믹 랜덤 액세스 메모리(SDRAM)가 포함될 수 있다. 또한, 이와 같은 시스템은 많은 경우에 데이타의 사본들을 저장하기 위해 적은 량의 고속이며 고가인 스태틱 랜덤 액세스 메모리(SRAM)가 사용되는 캐시 메모리 시스템을 포함한다.
총개발비와 중복 설계(design redundancies)를 줄이기 위한 노력의 일환으로, 칩 설계 업계에서는 브랜드명 플랫폼(brand name platform)들에 대한 칩 설계 개발 조직으로의 공동화(commonality)를 위한 움직임이 있어왔다. 이 작업 중 일부는 순차 버스트 순서화나 인터리브 버스트 순서화를 이용하는 프로세서들을 아무런 변경없이 지원할 수 있는 메모리 컨트롤러 설계를 정하는 노력과 관련되어 있다. 이것은 각 프로세서가 멀티 비트 전송(multi-beat transfers)으로 전달하는 서로 다른 버스트 순서화를 지원하기 위하여 메모리 컨트롤러에의 독특한 도전을 나타낸다.
캐시 메모리 시스템에서는 메모리 명령과 어드레스가 송출될 때마다 시스템 프로세서들 중 어느 하나의 프로세서의 캐시 메모리에 요구된 정보가 포함되어 있는지 여부를 검사한다. 데이타가 있다면, 그 프로세서에 프로세서들을 연결하고, 또 프로세서들을 메모리 컨트롤러에 연결하는 공유 버스로의 액세스가 허가되어져야 한다. 이러한 액세스가 허가되면, 다른 읽기 명령이 그 버스 상에 송출되지 못하게 될 것이다. 인-라인 캐시 컨트롤러(in-line cache controller)를 구비한 시스템에 있어서는, 각 프로세서를 SMP 버스에 접속시키는 인 라인 캐시 컨트롤러는 프로세서와 메모리 컨트롤러 간의 캐시 레벨(a level of cache)을 제공하며, 또한 공통 SMP 공유 버스를 메모리 컨트롤러에 전달한다. 서로 다른 종류의 프로세서들 간의 버스 프로토콜은 중간 캐시 컨트롤러에 의해서 공통으로 되지만 버스트 전송 중의 데이타 순서화는 메모리 컨트롤러 설계에 의해서 해결되어야 한다. 여기서, 바람직한 실시예는 내부 프로세서 버스(미도시)를 SMP 버스(14)로 변환시키기 위해인 라인 캐시 컨트롤러(12)를 포함하지만 다른 실시예는 그와 같은 컨트롤러를 포함하는 대신에 SMP 버스(14)에 직접 부착하는 프로세서(10)를 준비한다는 점에 주의해야 한다.
프로세서에는 "순차(sequential)"라고 하는 일종의 멀티 비트 버스트 전송 프로토콜을 지원하는 것과 "인터리브(interleaved)"라고 하는 멀티 비트 버스트 프로토콜을 지원하는 것이 있다. 각 종류의 전송 프로세서를 지원할 수 있는 멀티 프로세서 시스템에서 메모리 컨트롤러는 순차 및 인터리브 버스트 프로토콜 모두를 지원할 수 있어야 한다.
공유 메모리 시스템을 포함하는 임의 시스템에서의 대부분의 액티비티(activities)는 하나 또는 그 이상의 클럭 사이클 완료를 필요로 한다. 통상적으로, 액티비티는 하나 이상의 사이클을 요하며, 요구되는 클럭수는 동적 조건에 따라 다르다. SMP 데이타 버스가 쿼드 워드(quad word; QW) 폭이라면 64 바이트 캐시 라인(CL)의 전송을 지원하는데는 4개 비트(beat)의 버스트 전송이 필요하다.
메모리에 관련하여, SDRAM은 4비트 버스트 전송을 지원하며, 파워 업(power-up) 또는 리세트(reset)시에 순차 또는 인터리브 버스트 모드로 동작하도록 프로그램될 수 있다. 이것은 메모리에 대한 프로세서의 읽기 및 쓰기를 위한 공통 데이타 버스트 프로토콜을 제공한다. 그러나, SDRAM 특성은 프로세서와 통신하거나 메모리로의 직접 메모리 액세스(DMA)를 수행하는 I/O 디바이스 문제를 해결하지 못한다.
상술한 SMP 버스이외에도, 멀티 프로세서 시스템에서의 메모리 컨트롤러는 IO 버스도 지원해야만 한다. 현재 시스템에, 모니터, 그래픽 어댑터, IDE형 디바이스와 같은 입/출력(I/O) 서브시스템은 IO 버스를 통해 마이크로프로세서와 정보를 교환해야할 필요가 있다. "인터리브" 버스트 프로토콜은 IO 버스와 관련되어 있으므로 메모리 컨트롤러에 대한 문제를 야기시킨다. IO 버스는 단지 순차 버스트 순서화 프로토콜만을 지원한다. 그러므로, 메모리 컨트롤러는 인터리브형 프로세서가 I/O 데이타를 액세스 또는 전송하는 인터리브와 순차 버스트 순서화 간의 순서 변환(order translation)을 수행해야 한다. 인터리브와 순차 버스트 순서화 간의 본 발명의 변환 능력은 순차 및 인터리브 버스트 프로토콜을 지원할 수 있는 메모리 컨트롤러 설계를 가능하게 하여 종래의 메모리 컨트롤러 시스템에는 없는 공동화를 제공함으로써 종래 기술을 극복한다.
본 발명은 SMP 공유 버스에 의해서 하나 또는 그 이상의 마이크로프로세서에 결합될 수 있는 단일 메모리 컨트롤러와 이에 관련된 순서 변환 로직에 관한 것이다. 본 시스템은 순차 또는 인터리브 버스트 순서 프로토콜을 이용하는 프로세서를 지원할 수 있다. 따라서, 본 발명은 순차 버스트 프로토콜 또는 인터리브 버스트 프로토콜만이 메모리 컨트롤러에 의해서 지원되는 종래 시스템에서의 단점을 해결한다. 본 발명에 따른 시스템은 최소한의 하드웨어 변경 비용으로 각 프로토콜을 지원할 수 있다.
본 발명은 적어도 하나의 SDRAM 메모리 장치를 구비하며 적어도 하나의 버스를 통해서 적어도 하나의 마이크로프로세서와 적어도 하나의 I/O 디바이스 간의 정보 전송이 가능한 컴퓨터 워크스테이션의 환경에서 구현된다. 바람직한 실시예는 인 라인 캐시 컨트롤러를 구비한 적어도 하나의 프로세서를 포함한다. 이 시스템에서는 다수의 프로세서가 사용될 수 있다. 프로세서들 간의 통신은 SMP 공유 버스를 통해 행해지며, 프로세서는 정보를 메모리 컨트롤러에 전송할 수 있다. 바람직한 실시예는 또한 파워 업 또는 리세트시에 프로그램될 수 있는 적어도 하나의 SDRAM 장치로 구성된 메모리 카드를 포함하여 순차 또는 인터리브 버스트 순서 프로토콜을 지원한다. 메모리 컨트롤러와 메모리 카드 간의 정보는 메모리 버스를 통해 전송된다.
바람직한 실시예는 또한 I/O 버스를 통해 메모리 컨트롤러와 통신하는 적어도 하나의 I/O 디바이스를 포함한다.
본 발명의 시스템은 I/O 디바이스(50)와 프로세서(10) 또는 메모리(30) 간의 통신 상에서 인터리브 또는 순차 버스트 순서화 프로토콜을 지원할 수 있다. 본 발명은 메모리 컨트롤러에 상주하는 여러가지 테이블과 순서 변환 로직을 이용하여 그와 같은 지원을 행한다. 이러한 변환을 지원하기 위하여 I/O 디바이스(50), 프로세서(10) 또는 메모리(30)에 전송되거나 또는 이들로부터 전송될 데이타는 메모리 컨트롤러내의 중간 버퍼(22)에 일시적으로 저장된다. 버퍼(22)는 다수의 어드레스(24a, 24b, 24c, 24d)를 포함하며, 각 어드레스는 하나의 데이타 쿼드워드(quadword)를 포함한다. 시스템 프로세서가 순차 버스트 프로토콜을 이용할 것인지 아니면 인터리브 버스트 프로토콜을 이용할 것인지에 따라서 본 발명의변환 로직은 데이타를 적당한 순서로 I/O 버스(50)로부터 읽어오거나 또는 I/O 버스(50)에 전송하기 위하여 중간 버퍼(22)내의 어드레스들(24)를 통해 포인터(미도시)를 증가 또는 감소시킬 것이다.
본 발명의 상술한 특성과 기타 다른 특성은 첨부 도면을 참조한 이하의 상세한 설명에서 설명된다.
도1은 본 발명이 적용될 수 있는 컴퓨터 시스템.
도2는 본 발명의 메모리/IO 컨트롤러에서 이용되는 중간 버퍼들의 구조와 내용을 도시한 내부 메모리 맵의 개략도.
도3은 본 발명의 순서 변환 로직에 관련된 메모리/IO 컨트롤러 기능의 플로우차트.
<도면의 주요 부분에 대한 부호의 설명>
10, 10a : 프로세서
14 : SMP 버스
20 : 메모리/IO 컨트롤러
30 : 메모리
40 : I/O 버스
50 : I/O 디바이스
본 발명의 방법은 적어도 하나의 버스를 이용하여 상호간에 정보를 전송할 수 있는 적어도 하나의 마이크로프로세서와 적어도 하나의 I/O 디바이스를 구비한 컴퓨터 워크스테이션 시스템의 환경에서 구현된다. 도1에는 마이크로프로세서와 I/O 디바이스 간의 통신을 제어하는 소프트웨어 운영 체제와 결합하여 통상적으로 사용되는 컴퓨터 시스템이 도시되어 있다. 컴퓨터 워크스테이션 시스템은 상호 접속된 구성 요소들의 조합이다. 예컨대, 마이크로프로세서(1/0)는 SMP 버스(14)에 의해서 메모리/IO 컨트롤러(20)에 접속되어 있다. 하나 또는 그 이상의 I/O 디바이스(50)는 I/O 버스(40)에 의해서 메모리/IO 컨트롤러(20)에 접속되어 있다. 본 발명의 바람직한 실시예는 다수의 프로세서(10, 10a)를 포함하지만 다른 실시예에서는 단 하나의 프로세서를 포함할 수 있다.
컴퓨터 워크스테이션 시스템은 부가적으로 적어도 하나의 시스템 메모리(30) 또는 메모리 모듈을 포함한다. 본 발명의 바람직한 실시예의 메모리 카드는 하나 또는 그 이상의 동기식 다이나믹 랜덤 액세스 메모리(SDRAM)를 포함한다. 메모리(30)에 액세스하려는 프로세서(10) 요구는 통상적으로 메모리/IO컨트롤러(20)에 의해서 처리된다. 메모리/IO 컨트롤러(20)는 또한 I/O 버스 컨트롤러 기능을 수행할 수 있다. 메모리/IO 컨트롤러(20)는 메모리(30)와 I/O 중이층(mezzanine) 버스(40)에로의 프로세서(10) 액세스를 제어한다. I/O 중이층 버스(40)는 하나 또는 그 이상의 I/O 디바이스(50)에 접속된다. 바람직한 실시예에서 본 발명의 방법은 메모리/IO 컨트롤러(20)에서 수행된다.
도2는 본 발명을 구현하는데 사용된 중간 버퍼(22)의 구조와 내용을 도시하는 내부 메모리 맵의 개략도이다. 캐시 버스트 프로토콜은 몇 개의 클럭 사이클을 사용하여 풀(full) 캐시 라인(CL) 데이타를 프로세서(10)에 전송하거나 프로세서(10)로부터 전송한다. 필요한 클럭 사이클수는 캐시 라인의 크기와 SMP 버스(14)의 크기에 따라 다르다. 일부 프로세서(10)는 128바이트의 CL 크기를 이용하지만, 본 발명의 바람직한 실시예의 CL 크기는 64바이트이다. 본 발명의 바람직한 실시예의 SMP 버스는 16바이트 버스이다. 각 클럭 사이클 동안에 16바이트 SMP 버스(24)를 통해 하나의 쿼드워드(4워드, 또는 16비트)가 전송된다. 따라서, SMP 버스(24)를 통해 64바이트의 캐시 라인을 전송하는데는 4 클럭 사이클이 필요하다. CL 버스트 수행시에는 목적하는 특정 쿼드워드가 먼저 전송된다. 따라서, 아래의 표1에서 나타낸 바와 같이, 64바이트 캐시 라인 전송을 위한 개시 쿼드워드(QW) 어드레스(24)는 2진값 B'00에서 B'11(십진값 0에서 3)까지 변할 수 있다.
개시 QW 어드레스 순차 순서에서 전송된 캐시 라인의 데이타 워드 인터리브 순서에서 전송된 캐시 라인의 데이타 워드
0 0 0, 1, 2, 3 0, 1, 2, 3
0 1 1, 2, 3, 0 1, 0, 3, 2
1 0 2, 3, 0, 1 2, 3, 0, 1
1 1 3, 0, 1, 2 3, 2, 1, 0
순차 버스트 순서화 방식에서, 목적하는 QW가 먼저 전송되고, 이어서 나머지 QW가 순차 순서로 전송되는데, 이 때 QW0 "랩핑 어라운드(wrapping around)"가 최고 정수값을 뒤따른다. 예컨대, 본 발명의 바람직한 실시예의 4 쿼드워드 방식에서는 개시 QW 어드레스가 B'11인 전송을 위한 버스트 순서는 각각 QW3, QW0, QW1, 및 QW2가 각각 될 것이다. 반면에, "인터리브" 버스트 순서 프로토콜은 순차 순서를 뒤따르지 않는다. 순차 프로토콜과 마찬가지로, 인터리브 전송에서도 목적하는 QW가 먼저 전송된다. 그 다음, 시스템은 전송될 다음 QW를 결정하기 위하여 "백필(back-fill)"한다. 시스템은 이전의 짝수 정수 쿼드워드, 그리고 다음의 홀수 정수 쿼드워드, 그리고 이전의 짝수 정수 쿼드워드 등을 전송함으로써 백필한다. 이와 같은 순서화 방식은 도2의 "개시 QW 어드레스"와 "인터리브 순서"열에 나타나 있다. 예컨대, 개시 QW 어드레스가 B'01인 경우, 인터리브 버스트 순서화 방식에서 QW 전송은 다음과 같이, 즉 첫번째 사이클에서는 QW1이 전송되고, 이어서 두번째 사이클에서 QW0이 전송되며, 세 번째 사이클에서 QW3가 전송되고 네 번째 사이클에서 QW2가 전송된다. 이와 동일하게, 개시 QW 어드레스가 B'11이면, 전송 순서는 처음 두 개의 사이클에서 QW3, QW2가 되고, 후속되는 두 개의 클럭 사이클 또한 원래 워드가 전송된 순서와 동일한 순서로 개시 라인의 나머지 워드를 전송한다. 예컨대, B'01의 개시 QW 어드레스의 경우에, 풀 4 사이클 CL 전송은 각각 쿼드워드 QW1, QW0, QW3, 및 QW2가 될 것이다. 이와 동일하게, 개시 QW 어드레스가 B'11인 경우, 풀 4 사이클 CL 전송은 각각 QW3, QW2, QW1, 및 QW0이 될 것이다.
도3은 본 발명의 순서 변환 로직에 관련된 메모리/IO 컨트롤러 기능의 플로우챠트이다. 먼저, 한편에서의 프로세서(10) 또는 메모리(30)와 다른 한편에서의 I/O 디바이스(50) 간에 전송된 데이타는 메모리 I/O 컨트롤러(20)에 상주하는 중간 버퍼(22)에 먼저 저장된다는 점에 유의한다. 그 다음, 도3에 도시된 순서 변환 로직이 수행되어서, 중간 버퍼(22)의 여러가지 어드레스(24) 내의 데이타의 쿼드워드가 그들의 최종 목적지로 전송되어야 할 순서를 결정한다. 초기에, 중간 버퍼(22)에 대한 포인터(미도시)가 "0"으로 초기화된다. 도3에 도시된 변환 로직의 제1단계로서, 메모리/IO 컨트롤러(20)는 시스템 프로세서(10)가 순차 버스트 순서 프로토콜과 인터리브 프로토콜 중 어느 것을 이용할 것인지를 결정하는 검사(단계102)를 수행한다. 만일 순차 프로토콜을 이용하는 것이라면, 순서 변환 로직이 필요없다. 이러한 경우에, 메모리/IO 컨트롤러는 버퍼 어드레스(24)를 통해 순차 순서로 버스트 카운트를 증가시키고(단계110), 표2에서의 인덱스 "0"으로 나타낸 초기 버퍼 개시 어드레스(24)에서 시작한다(표1의 "순차 순서"열 참조).
만일 시스템 프로세서(10)가 인터리브 버스트 순서 프로토콜을 이용한다면, 현재 기술에서의 I/O 디바이스(50)는 순차 프로토콜에 따라서 행해질 캐시 라인 버스트 전송을 요구하므로 순서 변환 로직이 필요하게 된다. 따라서, 다음에 메모리/IO 컨트롤러(20)는 I/O 액세스가 요구되는지 여부를 검사한다(단계104). I/O 액세스가 요구되지 않는다면, 메모리 I/O 컨트롤러(20)는 버퍼 어드레스를 통해 순차 순서로 버스트 카운트를 증가시키고(단계110), 표2에서의 인덱스 "0"으로 나타낸 첫번째 버퍼 어드레스(24)에서 시작한다. 이 처리(단계110) 결과, 중간 버퍼(22)의 내용이 인터리브 포맷에 따라서 로드되었기 때문에 인터리브 버스트 순서 전송이 행해진다. 예컨대, 도2는 개시 쿼드워드 어드레스가 B'10인 경우에, 중간 버퍼(22)의 첫번째 어드레스(24)(표2에서 인덱스 "0"으로 나타냄)에는 캐시 라인의 두번째 쿼드워드(QW2)가 로드될 것이라는 것을 도시하고 있다. 버퍼 어드레스(24) "1", "2", 및 "3"에는 쿼드워드 QW3, QW0, 및 QW1이 각각 로드될 것이다. 따라서, 인덱스 "0"에서 개시하여 1씩 증가시킴으로써 버퍼(22)를 통해 버스트 카운트를 증가시킨 결과, 캐시 라인 쿼드워드 QW2, QW3, QW0, 및 QW1 각각의 데이타 전송이 행해지며, 이는 쿼드워드 어드레스 B'10을 개시하기 위한 인터리브 버스트 순서이다.
프로세서(10)가 인터리브 버스트 순서 프로토콜을 이용하는 시스템에서 I/O 액세스가 요구된다면, 순서 변환 단계(106, 108, 110)이 수행되어야 한다. 여기서, 인터리브 프로토콜과 순차 프로토콜 모두에서의 버스트 순서는 캐시 라인 QW 어드레스 B'00과 B'10을 개시시키기 위한 것이라는 것에 유의한다. 캐시 라인 QW 어드레스 B'00을 개시시키는 경우에, 프로토콜 모두가 QW0, QW1, QW2, 및 QW3 각각의 데이타 전송 순서를 필요로 한다. 캐시 라인 QW 어드레스 B'10을 개시시키는 경우에는, 프로토콜 모두는 QW2, QW3, QW0, 및 QW1 각각의 전송 순서를 필요로 한다. 따라서, 요구된 캐시 라인 QW 개시 어드레스가 홀수 정수라면 변환 단계108만 수행되면 된다. 따라서, 다음에 메모리/IO 컨트롤러(20)는 요구된 개시 어드레스가 홀수인지 아니면 짝수인지 여부를 판단한다(단계106). 만일 짝수라면,메모리/IO 컨트롤러(20)는 버퍼 어드레스(24)를 통해 순차 순서로 버스트 카운트를 증가시키고(단계110), 표2에서의 인덱스 "0"으로 나타낸 초기 버퍼 개시 어드레스(24)에서 시작한다. 요구된 캐시 라인 쿼드워드 개시 어드레스가 홀수 정수이면, 중간 버퍼(22)내의 버퍼 어드레스(24)로의 포인터(미도시)는 역(reverse) 순차 순서로 감소하고, 표2에서의 인덱스 "0"으로 나타낸 초기 버퍼 개시 어드레스(24)에서 시작한다. 따라서, 캐시 라인 QW 어드레스 B'01과 B'11을 개시하는 경우에는, 중간 버퍼에서 먼저 버퍼 어드레스(24) "0"로부터, 그 다음에 버퍼 어드레스(24) "3", "2", 및 "1" 각각으로부터 데이타가 전송된다(도2 참조). 캐시 라인 QW 어드레스 B'01을 개시하는 경우에는, 이것은 먼저 QW1(인덱스 위치 "0"에 대응), 이어서 QW2(인덱스 위치 "3"), 그 다음에 QW3(인덱스 위치 "2"), 마지막으로 QW0(인덱스 위치 "1")의 전송으로 나타난다(도2 참조). 예를 더 들어 보면, QW 어드레스 B'11을 개시하기 위한 인터리브-순차 순서 변환 처리(단계108) 결과, 버퍼 어드레스(24)의 내용 "0", "3", "2", "1" 각각이 전송되며, 그 결과, 캐시 라인 쿼드워드는 QW3, QW0, QW1, QW2의 순서로 전송될 것이다.
상술한 설명으로부터, 본 발명은 적어도 하나의 프로세서, 적어도 하나의 SDRAM 장치, 적어도 하나의 I/O 디바이스, 및 16바이트 SMP 버스를 구비한 컴퓨터 시스템에 대해 고찰한 것임을 잘 알 수 있다. 따라서, 본 발명의 상세한 설명은 단지 예시적인 것이며 이에 한정되는 것이 아님이 이해될 것이다. 본 기술 분야의 통상의 전문가라면 본 발명의 본질과 범위를 벗어남이 없이 여러가지 변경, 수정 및 개선이 쉽게 이루어질 수 있으며 실시될 수 있음을 이해할 것이다. 본 발명은첨부된 청구의 범위와 이의 균등물에 의해서만 한정된다.
본 발명은 인터리브와 순차 버스트 순서화 간의 상호 변환 능력을 제공하므로 순차 및 인터리브 버스트 프로토콜을 지원할 수 있는 메모리 컨트롤러 설계를 가능하게 하여, 순차 버스트 프로토콜 또는 인터리브 버스트 프로토콜 만이 메모리 컨트롤러에 의해서 지원되는 종래 시스템에서의 단점을 해결한다. 본 발명에 따르면 최소한의 하드웨어 변경 비용으로 각 프로토콜을 지원할 수 있다.

Claims (15)

  1. 전송 장치, 버퍼 및 수신 장치를 이용하여 버스트 전송 데이타를 순서화하는 방법(method of burst transmission data ordering)- 상기 수신 장치는 상기 전송 장치로부터 순서화된 버스트 데이타를 요청함 -에 있어서,
    (a) 상기 수신 장치로부터 상기 요청을 인터셉트(intercept)하는 단계;
    (b) 버스트 순서 변환 로직(burst order translation logic)을 수행하여 상기 버스트 데이타를 처리하는 단계
    (c) 상기 요청된 데이타를 상기 버퍼에 변환된 형태로 저장하는 단계; 및
    (d) 상기 요청된 데이타를 버스트 전송하는 단계
    를 포함하는 버스트 전송 데이타 순서화 방법.
  2. 제1항에 있어서, 상기 요청된 데이타는 목적하는 적어도 하나의 쿼드워드(quadword) 및 적어도 하나의 다른 쿼드워드를 포함하며,
    상기 단계 (b)는
    (1) 상기 수신 장치가 순차 또는 인터리브 버스트 순서(sequential or interleaved burst order)를 이용하는 지의 여부를 결정하는 단계;
    (2) 상기 수신 장치에 의해 상기 I/O 액세스가 요청되었는지를 결정하는 단계; 및
    (3) 상기 목적하는 쿼드워드가 짝수 또는 홀수 값으로 표현되는 지의 여부를결정하는 단계
    를 더 포함하는 버스트 전송 데이타 순서화 방법.
  3. 제1항에 있어서, 상기 요청 장치가 I/O 장치인 버스트 전송 데이타 순서화 방법.
  4. 제1항에 있어서, 상기 요청 장치가 프로세서인 버스트 전송 데이타 순서화 방법.
  5. 제1항에 있어서, 상기 버퍼는 하나 이상의 처리가능한 메모리 위치 및 상기 위치에 대한 포인터를 포함하며,
    전송시 상기 데이타를 재정렬시키기 위하여 상기 포인터 값을 변경하는 단계를 더 포함하는 버스트 전송 데이타 순서화 방법.
  6. 제5항에 있어서, 상기 변경 단계는 상기 포인트를 순차적으로 증가시켜 전송시 상기 데이타를 재정렬시키는 단계를 포함하는 버스트 전송 데이타 순서화 방법.
  7. 제5항에 있어서, 상기 변경 단계는 상기 포인트를 순차적으로 감소시켜 전송시 상기 데이타를 재정렬시키는 단계를 포함하는 버스트 전송 데이타 순서화 방법.
  8. 적어도 하나의 시스템 프로세서, 적어도 하나의 중간 버퍼, 및 적어도 하나의 I/O 디바이스를 포함하는 시스템내에서의 버스트 전송 데이타 순서화 방법- 상기 버스트는 복수의 쿼드워드로 분할됨 -에 있어서,
    (a) 상기 중간 버퍼에 대한 포인터를 초기화시켜서 상기 중간 버퍼의 어드레스 "0"에 대응시키는 단계;
    (b) 상기 시스템 프로세서가 순차 또는 인터리브 버스트 순서 프로토콜을 이용하는 지의 여부를 결정하는 단계;
    (c) 상기 프로세서가 인터리브 버스트 순서 프로토콜을 이용하면, 상기 버스트 데이타의 상기 I/O 디바이스로의 액세스가 요청되었는지의 여부를 결정하는 단계;
    (d) 상기 프로세서가 인터리브 버스트 순서 프로토콜을 이용하고 상기 버스트 데이타에 대한 I/O 액세스가 요청되었다면, 상기 I/O 액세스에 목적하는 상기 쿼드워드가 홀수 정수 또는 짝수 정수 값으로 표현되는지의 여부를 결정하는 단계;
    (e) 상기 프로세서가 인터리브 버스트 순서 프로토콜을 이용하고 상기 버스트 데이타에 대한 I/O 액세스가 요청되었고 목적하는 상기 쿼드워드가 홀수 정수값으로 표현된다면 다음의 단계,
    (1) 상기 중간 버퍼의 상기 어드레스 "0"에 제1 쿼드워드를 저장하는 단계;
    (2) 상기 포인터를 감소시켜 상기 중간 버퍼의 마지막 상기 특정 인 접 어드레스를 표현하는 정수 값에 대응시키는 단계;
    (3) 상기 포인터에 의해 지시된 상기 중간 버퍼의 상기 어드레스에 제2 쿼드워드를 저장하는 단계; 및
    (4) 상기 중간 버퍼 내의 모든 쿼드워드가 저장될 때까지 상기 포인 터를 계속 감소시키고 상기 포인터에 의해 지시된 상기 어드레스에 상기 쿼 드워드를 저장하는 단계
    를 실행함으로써 감소 로직(decrement logic)을 수행하는 단계; 및
    (f) 상기 중간 버퍼의 컨텐츠를 순차 순서로 버스트 전송하는 단계
    를 포함하는 버스트 전송 데이타 순서화 방법.
  9. 적어도 하나의 시스템 프로세서, 적어도 하나의 중간 버퍼, 및 적어도 하나의 I/O 디바이스를 포함하는 시스템내에서의 버스트 전송 데이타 순서화 방법- 상기 버스트는 복수의 쿼드워드로 분할됨 -에 있어서,
    (a) 상기 중간 버퍼에 대한 포인터를 초기화시켜서 상기 중간 버퍼의 어드레스 "0"에 대응시키는 단계;
    (b) 상기 시스템 프로세서가 순차 또는 인터리브 버스트 순서 프로토콜을 이용하는 지의 여부를 결정하는 단계;
    (c) 상기 프로세서가 인터리브 버스트 순서 프로토콜을 이용하면, 상기 버스트 데이타의 상기 I/O 디바이스로의 액세스가 요청되었는지의 여부를 결정하는 단계;
    (d) 상기 프로세서가 인터리브 버스트 순서 프로토콜을 이용하고 상기 버스트 데이타에 대한 I/O 액세스가 요청되었다면, 상기 I/O 액세스에 목적하는 상기 쿼드워드가 홀수 정수 또는 짝수 정수 값으로 표현되는지의 여부를 결정하는 단계;
    (e) 상기 프로세서가 순차 버스트 순서 프로토콜을 이용하거나 상기 버스트 데이타에 대한 I/O 액세스가 요청되지 않았거나 목적하는 상기 쿼드워드가 짝수 정수값으로 표현된다면 다음의 단계,
    (1) 상기 중간 버퍼의 상기 어드레스 "0"에 제1 쿼드워드를 저장하는 단계;
    (2) 상기 포인터를 감소시켜 상기 중간 버퍼의 다음 상기 특정 인 접 어드레스를 표현하는 정수 값에 대응시키는 단계;
    (3) 상기 포인터에 의해 지시된 상기 중간 버퍼의 상기 어드레스에 제2 쿼드워드를 저장하는 단계; 및
    (4) 상기 중간 버퍼 내의 모든 쿼드워드가 저장될 때까지 상기 포인 터를 계속 증가시키고 상기 포인터에 의해 지시된 상기 어드레스에 상기 쿼 드워드를 저장하는 단계
    를 실행함으로써 증가 로직(increment logic)을 수행하는 단계
    를 포함하는 버스트 전송 데이타 순서화 방법.
  10. 수신 장치, 버퍼 및 전송 장치를 구비하여 버스트 데이타 프로토콜을 변환하기 위한 시스템에 있어서,
    (a) 상기 수신 장치로부터 데이타 버스트 요청을 인터셉트(intercept)하는수단;
    (b) 상기 전송 장치에 의해 전송된 데이타에 대해 버스트 순서 변환 로직(burst order translation logic)을 수행하는 수단;
    (c) 상기 요청된 데이타를 상기 버퍼에 변환된 형태로 저장하는 수단; 및
    (d) 상기 요청된 데이타를 버스트 전송하는 수단
    을 포함하는 시스템.
  11. 제10항에 있어서,
    상기 버스트 순서 변환 로직 수단은 상기 버퍼에 결합하여 동작하는 메모리/IO 컨트롤러에 저장되는 시스템.
  12. 제10항에 있어서, 상기 버스트 데이타는 복수의 쿼드워드를 포함하되, 목적하는 쿼드워드를 포함하고, 상기 버스트 순서 변환 로직을 수행하는 수단은
    (1) 상기 수신 장치가 순차 또는 인터리브 버스트 순서(sequential or interleaved burst order)를 이용하는 지의 여부를 결정하는 수단;
    (2) 상기 수신 장치에 의해 I/O 액세스가 요구되었는지를 결정하는 수단; 및
    (3) 상기 목적하는 쿼드워드가 짝수 또는 홀수 정수값으로 표현되는 지의 여부를 결정하는 수단
    을 더 포함하는 시스템.
  13. 제10항에 있어서,
    상기 버퍼에 대한 인덱스를 초기화하는 수단; 및
    전송시 버스트 데이타를 재배열하기 위해 포인터 값을 변경하기 위한 수단
    을 더 포함하고,
    상기 버퍼는 하나 이상의 처리가능한 메모리 위치 및 상기 위치에 대한 포인터를 포함하는 시스템.
  14. 제13항에 있어서,
    상기 변경 수단은 전송시 버스트 데이타를 재배열하기 위해 상기 포인터를 순차 증가시키는 수단을 포함하는 시스템.
  15. 제13항에 있어서,
    상기 변경 수단은 전송시 데이타를 재배열하기 위해 상기 포인터를 순차 감소시키는 수단을 포함하는 시스템.
KR1019980028710A 1997-08-12 1998-07-15 컴퓨터시스템메모리콘트롤러및버스트데이터순서변환방법 KR100306548B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/909,930 US5915126A (en) 1997-08-12 1997-08-12 Computer system memory controller and method of burst data ordering translation
US08/909,930 1997-08-12
US8/909,930 1997-08-12

Publications (2)

Publication Number Publication Date
KR19990023208A KR19990023208A (ko) 1999-03-25
KR100306548B1 true KR100306548B1 (ko) 2001-10-19

Family

ID=25428062

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980028710A KR100306548B1 (ko) 1997-08-12 1998-07-15 컴퓨터시스템메모리콘트롤러및버스트데이터순서변환방법

Country Status (2)

Country Link
US (1) US5915126A (ko)
KR (1) KR100306548B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6160562A (en) * 1998-08-18 2000-12-12 Compaq Computer Corporation System and method for aligning an initial cache line of data read from local memory by an input/output device
US6192424B1 (en) * 1998-12-11 2001-02-20 Oak Technology, Inc. Bus arbiter for facilitating access to a storage medium in enhanced burst mode using freely specifiable address increments/decrements
US6233199B1 (en) * 1999-02-26 2001-05-15 Micron Technology, Inc. Full page increment/decrement burst for DDR SDRAM/SGRAM
US6574691B1 (en) * 1999-07-28 2003-06-03 Koninklijke Philips Electronics N.V. Apparatus and method for interfacing a non-sequential 486 interface burst interface to a sequential ASB interface
US20020143823A1 (en) * 2001-01-19 2002-10-03 Stevens Mark A. Conversion system for translating structured documents into multiple target formats
US7457901B2 (en) * 2005-07-05 2008-11-25 Via Technologies, Inc. Microprocessor apparatus and method for enabling variable width data transfers
US7441064B2 (en) * 2005-07-11 2008-10-21 Via Technologies, Inc. Flexible width data protocol
US7502880B2 (en) 2005-07-11 2009-03-10 Via Technologies, Inc. Apparatus and method for quad-pumped address bus
US7590787B2 (en) 2005-07-19 2009-09-15 Via Technologies, Inc. Apparatus and method for ordering transaction beats in a data transfer
US7444472B2 (en) * 2005-07-19 2008-10-28 Via Technologies, Inc. Apparatus and method for writing a sparsely populated cache line to memory
US8572302B1 (en) 2006-10-13 2013-10-29 Marvell International Ltd. Controller for storage device with improved burst efficiency
KR102193682B1 (ko) 2014-08-01 2020-12-21 삼성전자주식회사 선택적 ecc 기능을 갖는 반도체 메모리 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5255374A (en) * 1992-01-02 1993-10-19 International Business Machines Corporation Bus interface logic for computer system having dual bus architecture

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5255378A (en) * 1989-04-05 1993-10-19 Intel Corporation Method of transferring burst data in a microprocessor
EP0458516B1 (en) * 1990-05-25 1997-11-05 AT&T Corp. Memory access bus arrangement
US5202973A (en) * 1990-06-29 1993-04-13 Digital Equipment Corporation Method of controlling a shared memory bus in a multiprocessor system for preventing bus collisions and for ensuring a full bus
JP2752522B2 (ja) * 1990-12-20 1998-05-18 富士通株式会社 広帯域isdnにおけるフロー制御方式
AU2476192A (en) * 1991-08-16 1993-03-16 Multichip Technology High-performance dynamic memory system
US5333293A (en) * 1991-09-11 1994-07-26 Compaq Computer Corp. Multiple input frequency memory controller
US5448742A (en) * 1992-05-18 1995-09-05 Opti, Inc. Method and apparatus for local memory and system bus refreshing with single-port memory controller and rotating arbitration priority
US5537555A (en) * 1993-03-22 1996-07-16 Compaq Computer Corporation Fully pipelined and highly concurrent memory controller
US5729709A (en) * 1993-11-12 1998-03-17 Intel Corporation Memory controller with burst addressing circuit
US5644788A (en) * 1994-10-28 1997-07-01 Cyrix Corporation Burst transfers using an ascending or descending only burst ordering
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5689659A (en) * 1995-10-30 1997-11-18 Motorola, Inc. Method and apparatus for bursting operand transfers during dynamic bus sizing
US5715476A (en) * 1995-12-29 1998-02-03 Intel Corporation Method and apparatus for controlling linear and toggle mode burst access sequences using toggle mode increment logic

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5255374A (en) * 1992-01-02 1993-10-19 International Business Machines Corporation Bus interface logic for computer system having dual bus architecture

Also Published As

Publication number Publication date
KR19990023208A (ko) 1999-03-25
US5915126A (en) 1999-06-22

Similar Documents

Publication Publication Date Title
US5043874A (en) Memory configuration for use with means for interfacing a system control unit for a multi-processor system with the system main memory
EP0126976B1 (en) Multiprocessor system with communicating random access shared memory
US5659797A (en) Sparc RISC based computer system including a single chip processor with memory management and DMA units coupled to a DRAM interface
KR950008226B1 (ko) 버스트 전송 모드를 갖는 버스 마스터
KR100341948B1 (ko) 제어된버스트메모리액세스기능을갖는데이타처리기및그방법
EP0085048B1 (en) Extended addressing apparatus and method for direct storage access devices
KR100306548B1 (ko) 컴퓨터시스템메모리콘트롤러및버스트데이터순서변환방법
US5781763A (en) Independent control of DMA and I/O resources for mixed-endian computing systems
US5905911A (en) Data transfer system which determines a size of data being transferred between a memory and an input/output device
JP2003076654A (ja) Dspメモリ間データ転送方式
US5060186A (en) High-capacity memory having extended addressing capacity in a multiprocessing system
CA2026741C (en) Main storage memory cards having single bit set and reset functions
US6633927B1 (en) Device and method to minimize data latency and maximize data throughput using multiple data valid signals
US6138188A (en) Buffer management device and method for improving buffer usage and access performance in data processing system
US6041328A (en) Tracking availability of elements within a shared list of elements from an index and count mechanism
CA1324679C (en) Method and means for interfacing a system control unit for a multi-processor system with the system main memory
US4618946A (en) Dual page memory system having storage elements which are selectively swapped between the pages
JPH07271654A (ja) コントローラ
JPH0689247A (ja) データ通信及び処理システム並びにデータ通信処理方法
KR100294639B1 (ko) 다중억세스캐쉬장치
JPH06187227A (ja) 記憶装置とメモリ管理方法
EP0927935A1 (en) Memory structure with groups of memory banks and serializing means
Friedman New Monolithics Shape the Future MIL-STD-1553 to 1750A Interfaces
GB2343268A (en) Memory devices
JPS6347856A (ja) メモリシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20060725

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee