KR101262313B1 - 지연된 메모리 억세스 요청 조정 - Google Patents

지연된 메모리 억세스 요청 조정 Download PDF

Info

Publication number
KR101262313B1
KR101262313B1 KR1020087008617A KR20087008617A KR101262313B1 KR 101262313 B1 KR101262313 B1 KR 101262313B1 KR 1020087008617 A KR1020087008617 A KR 1020087008617A KR 20087008617 A KR20087008617 A KR 20087008617A KR 101262313 B1 KR101262313 B1 KR 101262313B1
Authority
KR
South Korea
Prior art keywords
memory access
memory
access request
memory controller
controller
Prior art date
Application number
KR1020087008617A
Other languages
English (en)
Other versions
KR20080043406A (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 KR20080043406A publication Critical patent/KR20080043406A/ko
Application granted granted Critical
Publication of KR101262313B1 publication Critical patent/KR101262313B1/ko

Links

Images

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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

지연된(delayed) 메모리 억세스 요청 조정(arbitration) 방법은 제 1 메모리 억세스 요청을 메모리 컨트롤러(102)에 디스패치하고, 상기 제 1 메모리 억세스 요청에 의해 나타나는 메모리 억세스 동작의 예측된 완료에 대한 응답으로 제 2 메모리 억세스 요청을 메모리 컨트롤러(102)에 디스패칭하는 과정을 포함한다. 또 다른 방법은 제 1 메모리 억세스 요청을 제 1 시각(time)에 버스 인터페이스 유닛에서 수신하는 단계와, 제 1 시각 다음인 제 2 시각에 제 2 메모리 억세스 요청을 메모리 컨트롤러에 디스패칭하는 단계와, 제 2 시각 다음인 제 3 시각에 버스 인터페이스 유닛에서 제 3 메모리 억세스 요청을 수신하는 단계와, 제 3 시각 다음인 제 4 시각에 제 3 메모리 억세스 요청을 메모리 컨트롤러에 디스패칭하고 제 4 시각 다음인 제 5 시각에 제 1 메모리 억세스 요청을 메모리 컨트롤러에 디스패칭하는 단계를 포함한다.

Description

지연된 메모리 억세스 요청 조정{DELAYED MEMORY ACCESS REQUEST ARBITRATION}
본 발명의 개시사항은 일반적으로 메모리 억세스 요청들을 프로세싱하는 것에 관한 것이다.
메모리 컨트롤러는 프로세싱 시스템들에서 자주 사용되는데, 메모리에 데이터를 저장하거나 메모리로부터의 데이터에 억세스하려하는 소자의 메모리 리소스들에의 억세스를 제어하도록 사용된다. 종래의 시스템들에서, 메모리 억세스 요청들은 메모리 컨트롤러가 메모리 억세스 요청들을 받아들일 수 있게 되는대로 메모리 컨트롤러에 공급된다. 그 다음 메모리 컨트롤러는 전형적으로 메모리 억세스 요청들을 버퍼링하고, 할당된 특정 우선순위들(assigned priorities)에 기초하여 버퍼링된 메모리 억세스 요청들을 프로세싱한다. 그러나, 메모리 컨트롤러가 다음(next) 메모리 억세스 요청을 프로세싱하거나 버퍼링할 능력이 있게 되자마자 메모리 억세스 요청들을 메모리 컨트롤러에 디스패치(dispatch)하는 종래의 기술로 인하여, 메모리 컨트롤러가 우선 다음 메모리 억세스 요청을 수신할 능력을 갖추게 된 이후에 특정한 높은 우선순위의 메모리 억세스 요청들이 선택이 가능하게 된 때에는, 그 높은 우선순위의 메모리 억세스 요청들은 가장 효율적인 방식으로 프로세싱되지 못할 수 있다. 예를 들어 설명해 보면, 메모리 컨트롤러가 다음 요청을 받아들일 가능성으로 인해 높은 우선순위의 메모리 억세스 요청이 낮은 우선순위의 메모리 억세스 요청의 디스패치 직후에 수신된 경우에는, 높은 우선순위 메모리 억세스 요청의 프로세싱은 메모리 컨트롤러가 다시 다음 메모리 억세스 요청을 받아들일 능력이 될 때까지 지연될 수 있다.
따라서, 메모리 억세스 요청들을 프로세싱하는 향상된 기술이 유익할 것이다.
삭제
본 개시사항의 목적과 이점들은 하기의 상세한 설명과 첨부된 도면들의 조합으로부터 당업자에게는 명확해질 것이고, 도면에서 비슷한 참조 문자들은 비슷한 구성요소들을 지시하는데에 이용되며, 도면에서:
도 1은 본 개시사항의 적어도 하나의 실시예에 따라, 지연된 메모리 억세스 요청 디스패치 기술을 사용하는 예시적인 프로세싱 시스템을 도시하는 블럭 다이어그램이다.
도 2는 본 개시사항의 적어도 하나의 실시예에 따라, 지연된 메모리 억세스 요청 디스패치에 대한 예시적인 방법을 도시하는 순서도이다.
도 3은 본 개시사항의 적어도 하나의 실시예에 따라, 도 2의 방법의 예시적인 구현방안을 도시하는 타이밍 다이어그램과 우선순위 차트이다.
도 4는 본 개시사항의 적어도 하나의 실시예에 따라, 도 3의 타이밍 다이어그램에 대응되는 메모리 컨트롤러 큐(queue)의 예시적인 상태들을 도시하는 다이어그램이다.
하기의 설명은 메모리 억세스 요청들의 조정(arbitration)에 관한 여러 개의 구체적인 실시예들과 세부사항들을 제공함에 의해 본 개시사항에 대한 철저한 이해를 전달하기 위한 것이다. 그러나, 본 개시사항은 이러한 구체적 실시예들과 세부사항들로 한정되는 것이 아니고, 단지 예시적인 것일 뿐임이 이해되어야 한다. 또한 알려진 시스템들과 방법들의 관점에서, 당업자는 특정 디자인 및 다른 필요들에 따라 임의 개수의 대안적 실시예들로 본 개시사항의 용도를 의도된 목적 및 이점들에 맞게 인식할 수 있음이 이해되어야 한다.
본 개시사항의 일 실시형태에 따르면, 지연된 메모리 억세스 요청 조정 방법은 제 1 메모리 억세스 요청을 메모리 컨트롤러에 디스패치하고, 제 1 메모리 억세스 요청에 의해 나타난 메모리 억세스 동작의 예측된 완료에 대한 응답으로 제 2 메모리 억세스 요청을 메모리 컨트롤러에 디스패치하는 단계를 포함한다.
본 개시사항의 또 다른 실시형태에 따르면, 지연된 메모리 억세스 요청 조정 방법은 제 1 메모리 억세스 요청을 제 1 시각(time)에 버스 인터페이스 유닛(bus interface unit)에서 수신하는 단계와, 제 1 시각 다음인 제 2 시각에 제 2 메모리 억세스 요청을 메모리 컨트롤러에 디스패치하는 단계와, 제 2 시각 다음인 제 3 시각에 버스 인터페이스 유닛에서 제 3 메모리 억세스 요청을 수신하는 단계와, 제 3 시각 다음인 제 4 시각에 제 3 메모리 억세스 요청을 메모리 컨트롤러에 디스패치하고 제 4 시각 다음인 제 5 시각에 제 1 메모리 억세스 요청을 메모리 컨트롤러에 디스패치하는 단계를 포함한다.
본 개시사항의 추가적인 실시형태에 따르면, 시스템은 메모리에 연결된 것으로서 메모리 억세스 요청들을 프로세싱하기 위한 메모리 컨트롤러와, 이 메모리 컨트롤러에 연결된 버스 인터페이스 유닛을 포함한다. 일 실시예에서, 버스 인터페이스 유닛은 하나 또는 그 이상의 메모리 억세스 요청들을 저장하기 위한 버퍼와, 메모리 억세스 요청들을 수신하기 위해 버퍼에 연결된 제 1 입력 및 메모리 컨트롤러로부터의 신호를 수신하기 위한 제 2 입력을 갖는 조정기(arbiter)로 구성되고, 상기 조정기는 상기 신호에 대한 응답으로 메모리 컨트롤러에 디스패치하기 위해 제 2 메모리 억세스 요청을 선택한다. 메모리 컨트롤러는 메모리 컨트롤러에 먼저 디스패치된 제 1 메모리 억세스 요청에 의해 나타나는 메모리 억세스 동작의 예측된 완료에 대한 응답으로 상기 신호를 공급한다.
도 1을 참조해 보면, 본 개시사항의 적어도 하나의 실시예에 따라, 지연된 메모리 억세스 요청 디스패치를 사용하는 예시적인 프로세싱 시스템(100)이 도시되어 있다. 도시된 예에서, 시스템(100)은 메모리 컨트롤러(102), 메모리(104)(예컨대 DRAM 또는 SRAM), 버스 인터페이스 유닛(BIU)(106)과 BIU(106)에 연결된 하나 또는 그 이상의 구성요소들, 예를 들어 중앙 처리 유닛(CPU)(108), 그래픽 엔진(110)과 하나 또는 그 이상의 장치들(114, 116)에 연결된 하나 또는 그 이상의 직접 메모리 억세스(DMA) 마스터(112)와 같은 구성요소들을 포함한다. 일 실시예에서, 상기 메모리 컨트롤러(102)는 하나 또는 그 이상의 큐 엔트리들(예컨대 큐 엔트리들(122, 124))을 갖는 메모리 억세스 요청 큐(120)와, 선택기(126) 그리고 스케줄 관리기(schedule manager)(128)를 포함한다. 일 실시예에서, BIU(106)는 BIU(106)에 연결된, CPU(108), 그래픽 엔진(110), DMA 마스터(112)와 같은 장치들로부터의 메모리 억세스 요청들을 버퍼링하기 위해 조정기(130)와 메모리 억세스 요청 큐(132)를 포함한다. 일 실시예에서, 조정기(130)는 스케줄 관리기(128) 또는 메모리 컨트롤러(102)의 또 다른 구성요소에 의해 공급되는 디스패치_req 신호(134)에 응답한다.
동작에 있어서, BIU(106)는 BIU(106)에 연결된 하나 또는 그 이상의 장치들로부터 메모리 억세스 요청들을 수신하고 큐(132)에서 메모리 억세스 요청들을 버퍼링한다. 메모리 억세스 요청들에 할당된 우선순위들 또는 메모리 억세스 요청들이 BIU(106)에서 수신되는 시퀀스와 같은 다양한 특성들에 기초하여, 조정기(130)는 프로세싱을 위해 큐(132)로부터의 메모리 억세스 요청을 선택하고 메모리 컨트롤러(102)에 요청을 디스패치한다. 큐(120)에서 버퍼링된 메모리 억세스 요청들은 스케줄 관리기(128)에 의해 결정된 스케줄 또는 우선순위와 같은 메모리 억세스 요청들의 특정한 특성들에 기초하여 순서대로 또는 번갈아 순서에 관계없이(선택기(126)를 이용하여) 프로세싱된다. 선택된 메모리 억세스 요청을 수신함에 있어서, 스케줄 관리기(128)는 선택된 메모리 억세스 요청을 선택된 메모리 억세스 요청에 의해 나타나는 메모리 억세스 동작을 수행하도록 프로세싱한다. 예를 들어, 이 메모리 억세스 동작은 데이터가 메모리(104)에 쓰여지는(written) 쓰기 동작 또는 데이터가 메모리(104)로부터 읽혀지는(read) 읽기 동작을 포함할 수 있다.
스케줄 관리기(128)가 선택된 메모리 억세스 요청의 프로세싱을 개시할 때, 프로세싱되고 있는 선택된 메모리 억세스 요청에 의해 비워진(vacated) 큐 엔트리들(122, 124) 중 하나에서 또는 직접적으로 선택기(126)를 통해, 메모리 컨트롤러(102)는 BIU(106)로부터 또 다른 메모리 억세스 요청을 수신할 수 있게 된다. 그러나, 일 실시예에서, 스케줄 관리기(128)는 메모리 컨트롤러(102)가 BIU(106)로부터 다음 메모리 억세스 요청을 수신할 수 있게 되자마자 조정기(130)가 디스패치를 위한 다음 메모리 억세스 요청을 선택하도록 지시하기보다는, 현재 메모리(104)를 사용하여 프로세싱되고 있는 메모리 억세스 동작의 완료가 가까워졌을 때까지(다시 말해, 메모리 억세스 동작의 예측된 완료시까지) 다음 메모리 억세스 요청을 위해 조정기(130)에 대한 시그널링(signaling)을 지연시킨다. 현재 메모리 억세스 동작의 완료가 잘 알려졌는지를 판단함에 있어서, 스케줄 관리기(128)는 디스패치_req 신호(134)를 어써트(assert)하고, 그에 의해 다음 메모리 억세스 요청을 메모리 컨트롤러(102)에 디스패치하도록 조정기(130)에 시그널링을 행한다. 상기 신호(134)에 대한 응답으로, 조정기(130)는 우선순위 또는 시간 스탬프들과 같은 하나 또는 그 이상의 특성들에 기초하여 큐(132)로부터 메모리 억세스 요청을 선택하고, 임시의 버퍼링과 후속되는 프로세싱을 위해 메모리 컨트롤러(102)에 선택된 메모리 억세스 요청을 디스패치한다. 그래서, 도 1의 프로세싱 시스템(100)은 종래의 시스템들에 의해 시행되던 것처럼 메모리 컨트롤러(102)에서 메모리 억세스 요청의 시작에 뒤이어 즉시 메모리 억세스 요청을 디스패치하도록 조정기(130)에 지시하기보다는, 지연된 조정 기술을 구현하고 그것에 의해, 메모리 컨트롤러(102)가 메모리 억세스 요청을 받아들일 수 있는 제 1 모멘트 후에, BIU(106)에서 수신되는 어느 높은 우선순위의 메모리 억세스 요청들이 조정기(130)에 의해 선택가능하고 메모리 컨트롤러(102)에 디스패치됨이 가능하게 하기 위하여 하나의 다음 메모리 억세스 요청이 선택될 필요가 있기 이전의 거의 마지막 모멘트에 이르기까지 메모리 컨트롤러에 디스패치돼야 할 다음 메모리 억세스 요청이 선택되지 않도록 하며, 그로써 시스템(100)의 효율을 향상시킨다.
스케줄 관리기(128)는 조정기(130)가 다양한 기술들 중 어느 것을 이용하여 다음 메모리 억세스 요청을 디스패치하도록 조정기(130)에 시그널링을 행하기 위해 메모리 억세스 동작의 예측된 완료 여부를 판단할 수 있다. 일 실시예에서, 메모리 억세스 동작의 예측된 완료는 메모리(104)와 메모리 컨트롤러(102) 사이의 시그널링을 이용하여 나타내어질 수 있다. 예를 들어, 읽기(read) 억세스 동작 중 메모리(104)는 요청된 데이터가 메모리 컨트롤러(102)와 메모리(104)에 연결된 버스 라인들에서 이용가능하다는 것을 나타내는 신호를 메모리 컨트롤러(102)에 공급할 수 있는데, 이는 상기 데이터가 다음 클럭 주기 도중 래칭(latching)되게 하기 위함이다. 따라서, 이러한 경우에, 메모리(104)로부터의 상기 신호를 받는 대로 메모리 컨트롤러(102)는 디스패치_req 신호(134)를 어써트할 수 있고 그럼으로써 조정기(130)가 다음 메모리 억세스 요청의 디스패치를 개시하도록 조정기에 시그널링을 행한다. 또 다른 예에서, 메모리 억세스 동작은 쓰기 억세스 동작을 포함할 수 있고 상기 시그널링은 메모리 컨트롤러로부터 메모리에 공급되는 신호를 포함할 수 있는데, 이 신호는 쓰기 데이터가 메모리 컨트롤러(102)와 메모리(104)를 연결하는 버스에 위치함을 나타내고, 다음 주기 동안 메모리(104)가 데이터를 래치(latch)하는 것에 대한 응답이다. 이러한 경우에 스케줄 관리기(128)는, 메모리(104)에 공급될 수 있는 또는 메모리로(104)부터 메모리 컨트롤러(102)에 공급될 수 있는 쓰기 데이터의 어써트에 대한 응답으로, 상기 신호(134)를 어써트할 수 있다. 또 다른 실시예에서, 메모리 컨트롤러(102)에 의해 프로세싱되는 메모리 억세스 동작들의 일부 또는 전부는 미리 결정된 지속구간(duration)을 가질 수 있다. 예를 들어 설명하자면, 읽기 억세스 동작들의 특정 타입들은 여러 개의 클럭 주기들 집합을 필요로 함이 메모리 컨트롤러(102)에 의해 알려질 수 있다. 따라서, 그러한 읽기 억세스 동작들의 예측된 완료는 메모리 억세스 동작의 실제 완료 이전에 미리 결정된 지속구간에 의해 나타날 수 있다. 예를 들어, 메모리 억세스 동작이 8 개의 클럭 주기들을 사용한다고 알려진 경우에, 메모리 억세스 동작의 예측된 완료는 예를 들어 7 번째 클럭 주기에서 발생할 수 있고, 이 때에 스케줄 관리기(128)는 메모리 컨트롤러(102)에 다음 메모리 억세스 요청 디스패치를 위해 조정기(130)에 시그널링을 행하도록 디스패치_req 신호(134)를 어써트할 수 있다.
도 2를 참조해 보면, 본 개시사항의 적어도 하나의 일 실시예에 따라, 지연된 메모리 억세스 요청을 메모리 컨트롤러에 디스패치하는 예시적인 방법(200)이 도시되어 있다. 상기 방법(200)은 블럭(202)에서 개시되는바, 여기서 메모리 컨트롤러(102)는 BIU(106)으로부터 수신된 선택된 메모리 억세스 요청에 의해 나타내어지는, 메모리(104)에 관한 메모리 억세스 동작을 개시한다. 블럭(204)에서, 스케줄 관리기(128)는 메모리 억세스 동작을 모니터링하고, 스케줄 관리기(128)가 현재 메모리 억세스 동작의 예측된 완료를 확인한 때에 스케줄 관리기(128)는 디스패치_req 신호(134)를 어써트하거나 그렇지 않으면 조정기(130)가 블럭(206)에서 BIU(206)로부터의 다음 메모리 억세스 요청의 디스패치를 개시하도록 조정기(130)에 신호를 전달한다. 블럭(208)에서 조정기(130)는 어써트된 디스패치_req 신호(134)를 수신한다. 그에 호응하여, 블럭(210)에서 조정기(130)는 메모리 컨트롤러(102)에의 디스패치를 위하여 큐(132)로부터 메모리 억세스 요청을 선택한다. 상기 언급된 바와 같이, 조정기(130)는 BIU(106)에서 수신되는 메모리 접근 요청들의 우선순위와 그와 같은 다양한 특성들에 기초하여 다음 메모리 억세스 요청을 선택할 수 있다. 블럭(212)에서, 조정기(130)는 선택된 메모리 억세스 요청을 메모리 컨트롤러(102)에 디스패치한다. 블럭(214)에서, 디스패치된 메모리 억세스 요청은 메모리 컨트롤러(102)에서 수신되고 메모리 억세스 요청 큐(120)에서 버퍼링될 수 있거나 선택기(126)를 사용하는 즉시의 프로세싱을 위해 스케줄 관리기(128)에 직접 공급될 수도 있는데, 이것은 스케줄 관리기(128) 또는 메모리 컨트롤러(102)의 다른 구성요소에 의해 제어될 수 있다.
도 3과 도 4를 참조해 보면, 본 개시사항의 적어도 하나의 일 실시예에 따라, 도 1의 시스템에서의 도 2의 방법에 대한 예시적인 구현이 도시되어 있다. 도 3은 본 개시사항의 적어도 하나의 일 실시예에 따라, BIU(106)에서의 메모리 억세스 요청들의 수신을 나타내는 시퀀스(302)와, 메모리 컨트롤러에 메모리 억세스 요청들을 디스패치하는 종래의 기술을 나타내는 시퀀스(304), 그리고 메모리 컨트롤러(102)에 메모리 요청들을 디스패치하는 기술을 나타내는 시퀀스(306)를 갖는 타이밍 다이어그램(300)을 도시하고 있다. 도 3은 또한 메모리 컨트롤러(102)에의 디스패치를 위해 메모리 억세스 요청들을 선택하는 데에 있어서 조정기(130)에 의해 사용되고 조정기(130)에 의해 유지될 수 있는 예시적인 특성 차트(310)를 도시하고 있다. 도 4는 종래의 디스패치 시퀀스(304)와 지연된 디스패치 시퀀스(306) 모두에 대한 타이밍 다이어그램(300)의 다양한 점들에서 메모리 컨트롤러(102)의 큐(120)의 예시적인 상태들을 도시하고 있다. 설명을 용이하게 하기 위해, 메모리 억세스 요청들은 메모리 컨트롤러(120)에 의한 추가적 프로세싱을 위해 큐(120)의 2개의 큐 엔트리들(122, 124)로부터 얻어진다는 점이 가정된다.
시퀀스(302)는 BIU(106)에서의 메모리 억세스 요청들(R1-R4)의 수신을 나타낸다. 도시된 대로, 메모리 억세스 요청들(R1, R2)은 포인트(A)에 앞서 수신되고 메모리 억세스 요청들(R3, R4)은 포인트(A)와 포인트(B) 사이에서 수신된다. 도시되지는 아니하였으나, 요청들(R0, R6)은 BIU(106)에서 메모리 억세스 요청(R1)의 수신에 앞서서 수신된다. 차트(310)에 도시하는 대로, 메모리 억세스 요청들(R6, R0)은 1의 우선순위를 가지고, 메모리 억세스 요청(R1)이 2의 우선순위를 가지며, 메모리 억세스 요청(R2)이 3의 우선순위를, 메모리 억세스 요청(R3)이 0의 우선순위를, 메모리 억세스 요청(R4)이 1의 우선순위를 가지고, 여기서 0의 우선순위는 가장 높은 우선순위를 나타내고 3의 우선순위는 가장 낮은 우선순위를 나타낸다. 타이밍 다이어그램(300)에서, 포인트들(A, B, C)은 메모리 컨트롤러(102)가 메모리 컨트롤러(102)에서 메모리 억세스 요청에 의해 나타나는 메모리 억세스 동작의 프로세싱을 개시하는 때의 포인트들을 나타내고, 그러므로 메모리 컨트롤러(102)가 BIU(106)로부터 또 다른 메모리 억세스 요청을 수신할 능력을 처음으로 갖게 되는 때를 나타낸다. 포인트들(A', B', C')은 개별적으로 스케줄 관리기(128)가 프로세싱되고 있는 메모리 억세스 동작의 예측된 완료를 식별하는 때의 포인트들을 나타낸다.
상기 언급된 바와 같이, 종래의 메모리 디스패치 기술은 메모리 컨트롤러가 또 다른 메모리 억세스 요청을 수신할 능력을 갖자마자 메모리 억세스 요청이 메모리 컨트롤러에 디스패치되는 것으로 구현된다. 이 종래의 기술을 나타내는 시퀀스(304)에 도시된 바와 같이, 포인트(A)일 때 BIU에서 버퍼링된, 가장 높은 우선순위를 갖는 메모리 억세스 요청(이 예에서는 메모리 억세스 요청 R1)은, 포인트(A) 직후에, 프로세싱을 위해 메모리 컨트롤러에 디스패치된다. 마찬가지로, 종래의 기 술 사용시 포인트(B)에서, 메모리 컨트롤러에서 공간이 다시 이용가능하게 되는 경우에는, 종래의 디스패치 시퀀스(304)는 가장 높은 우선순위의 메모리 억세스 요청이 디스패치를 위해 선택되는 포인트 B에서 버퍼링됨을 예시하고 있다(이 경우 메모리 억세스 요청 R3). 그러나, 상기에 언급된 대로 시퀀스(304)에 의해 나타내어진 이 종래의 기술은 종종 메모리 억세스 요청들의 덜 효율적인 스케줄링을 제공한다. 예를 들어, 메모리 억세스 요청 R3가 CPU(108)(도 1)로부터의 보다 높은 우선순위의 메모리 억세스 요청이라고 가정하면, 메모리 억세스 요청들(R1, R2)은 예컨대 DMA 마스터(112)에 연결된 장치들로부터의 낮은 우선순위의 메모리 억세스 요청들이다. 종래의 디스패치 시퀀스(304)에서, 메모리 억세스 요청(R1)은 메모리 억세스 요청(R3)의 디스패치와 프로세싱에 앞서 메모리 컨트롤러(102)에서 디스패치되고 프로세싱되는데(메모리 억세스 요청(R3)가 메모리 억세스 요청(R1)보다 높은 우선순위를 가지고 있는 경우에라도 그러하다), 이는 메모리 컨트롤러(102)가 버스 인터페이스 유닛(106)으로부터 메모리 억세스 요청을 수신할 능력을 처음으로 갖게 되는 때의 포인트(A) 이후의 시각에 메모리 억세스 요청(R3)이 수신되고 그로 인해 메모리 억세스 요청(R3)이 상기 수신으로 인해 디스패치를 위한 선택이 가능하지 않게 됨에 기인한다.
반면에, 도 2의 방법(200)의 예시적인 구현방안을 나타내는 디스패치 시퀀스(306)는, 조정 지연과 메모리 컨트롤러(102)에서 (메모리 컨트롤러(102)에 의해 수행되고 있는 메모리 억세스 동작의 예측된 완료에 의해 나타날 수 있는) 거의 가장 마지막 가능 모멘트에 이르기까지의 메모리 억세스 요청의 선택에 의해, 메모리 억세스 요청들의 더욱 효율적인 조정을 달성할 수 있음을 예시한다. 예를 들어 설명해보자면, 스케줄 관리기(128)는 현재 프로세싱 중인 메모리 억세스 동작이 포인트(A')에서 완료에 가까워졌는지를 판단한다. 이에 호응하여, 스케줄 관리기(128)는 조정기(130)에 의해 수신되는 디스패치_req 신호(134)를 어써트한다. 이 신호(134)의 어써트에 대한 응답으로, 조정기(130)는 큐(130)에서 그때에 이용가능한 메모리 억세스 요청들(다시 말해, 메모리 억세스 요청들 R6, R0)을 선택한다. 이 경우, 메모리 억세스 요청(R0)이 메모리 억세스 요청(R6)보다 높은 우선순위를 가지기 때문에, 메모리 억세스 요청(R0)은 메모리 컨트롤러(102)에의 디스패치를 위하여 조정기(130)에 의해 선택된다. 시퀀스(306)는 메모리 컨트롤러(102)가 현재의 메모리 억세스 동작을 완료하는 때인 포인트(A)까지 계속되나, 종래의 기술들과는 달리, 스케줄 관리기(128)는 메모리 컨트롤러(102)가 또 다른 메모리 억세스 요청을 수신할 능력을 갖게 되는 경우에도 다음 메모리 억세스 요청을 위해 시그널링을 행하지 않는다. 대신, 스케줄 관리기(128)는 다음 메모리 억세스 동작의 예측된 완료시까지 기다리고, 예측된 완료시인 포인트(B')에서 신호(134)를 어써트한다. 포인트(B')에서의 신호(134) 어써트에 대한 응답으로, 조정기(130)는 메모리 컨트롤러(102)에의 디스패치를 위해 다음 메모리 억세스 요청을 선택한다. 시퀀스(302)에서 예시된 바와 같이, 메모리 컨트롤러(102)가 처음으로 다음 메모리 억세스 요청을 수신할 능력을 가지게 되는 때인 포인트(A)부터 현재 메모리 억세스 동작이 메모리 컨트롤러(102)에서 완료에 가까워진 때인 포인트(B') 사이의 지연은, BIU(106)가 높은 우선순위의 메모리 억세스 요청(R3)을 수신할 수 있게 한다. 포인트(B')에서의 신호(134) 어써트에 대한 응답에 따라, 조정기(130)는 그것의 큐(132)에서 이용가능한 메모리 억세스 요청(R3)을 큐(132)에서 가장 높은 우선순위의 요청으로서 가지고, 조정기(130)는 포인트(B') 이후에 메모리 컨트롤러(102)에의 디스패치를 위해 메모리 억세스 요청(R3)을 선택한다. 비슷한 방식으로, 메모리 컨트롤러(102)에 의해 수행 중인 메모리 억세스 동작이 포인트(C')에서 완료에 가까워졌을 때, 조정기(130)가 메모리 컨트롤러(102)에의 디스패치를 위해 메모리 억세스 요청(R1)을 선택함에 대한 응답으로, 스케줄 관리기(128)는 신호(134)를 어써트한다.
도 4에 예시된 바와 같이, 메모리 억세스 요청의 지연된 선택 및 디스패치는 일반적으로 메모리 컨트롤러(102)에서 메모리 억세스 요청들의 보다 효율적인 스케줄링을 가능하게 한다. 예를 들어 설명해보면, 종래의 디스패치 시퀀스(304)의 포인트(B)에서 메모리 컨트롤러는 프로세싱을 위해 그것의 큐로부터 메모리 억세스 요청을 선택한다. 메모리 억세스 큐 상태(402)에 의해 예시된 바와 같이, 종래의 디스패치 기술을 사용하는 메모리 컨트롤러는 포인트(B)에서 큐 내부에 메모리 억세스 요청들(R1과 R0)을 가질 수 있는데, 메모리 억세스 요청(R0)이 일반적으로 그것의 높은 우선순위로 인해 프로세싱을 위하여 요청들(R1과 R0)로부터 선택될 수 있다. 또한, 종래의 기술을 사용하는 메모리 컨트롤러의 메모리 억세스 요청 큐는 메모리 억세스 요청들(R1, R3)을 가질 수 있는데, 메모리 억세스 요청(R3)이 일반적으로 그것의 높은 우선순위로 인해 프로세싱을 위하여 요청들(R1과 R3)로부터 선택될 수 있다. 반대로, 메모리 억세스 큐 상태(404)에 예시된 대로, 본 명세서에 개시된 지연된 메모리 억세스 요청 디스패치 기술을 갖는 메모리 컨트롤러(102)는, 포인트(B)에서, 그것의 큐(120) 내부에 메모리 억세스 요청(R3)을 가질 수 있는데, 이 메모리 억세스 요청(R3)은 프로세싱을 위해 선택될 수 있으며, 포인트(C)에서 큐(120)는 메모리 억세스 요청들(R1과 R0)을 포함할 수 있고, 메모리 억세스 요청(R0)이 프로세싱을 위해 요청들(R1과 R0)로부터 선택될 수 있다. 따라서, 도 3과 도 4가 예시하는 바와 같이, 본 명세서에 개시된 지연된 메모리 억세스 요청 디스패치 기술은 가장 높은 우선순위의 메모리 억세스 요청(R3)이 종래의 디스패치 기술을 사용하는 프로세싱 시스템에 있을 때보다 더 빨리 프로세싱될 수 있게 한다. 그래서, 본 명세서에 개시된 상기 지연된 메모리 억세스 요청 디스패치 기술은 종래의 기술들(이에 의해 메모리 억세스 요청들은 메모리 컨트롤러가 그것들을 수신할 능력을 갖자마자 즉시 디스패치됨)과 비교하여 메모리 억세스 요청들의 시퀀싱이 보다 효율적으로 이루어지도록 한다.
본 명세서에 개시된 실시예들을 면밀히 검토할 경우 본 개시사항의 다른 실시예들, 용도들, 이점들은 당업자에게 자명해질 것이다. 본 명세서와 도면들은 단지 예시적인 것으로 고려되어야 하고, 본 개시사항의 범위는 단지 특허청구범위와 그것의 균등물에 의해서만 제한될 수 있다.

Claims (10)

  1. 제 1 메모리 억세스 요청(memory access request)을 메모리 컨트롤러(memory controller)(102)에 디스패치(dispatch)하는 단계와;
    제 2 메모리 억세스 요청을 상기 메모리 컨트롤러(102)에 디스패치하는 단계와;
    상기 제 2 메모리 억세스 요청에 근거하여 상기 메모리 컨트롤러(102)에 의한 제 1 메모리 억세스 동작을 개시하는 단계와; 그리고
    상기 메모리 컨트롤러(102)가 상기 제 1 메모리 억세스 동작을 개시한 것에 응답하여 상기 메모리 컨트롤러(102)가 다음 메모리 억세스 요청을 수신할 수 있는 가장 빠른 시간 이후 상기 제 1 메모리 억세스 동작의 실제 완료 이전의 소정의 지속구간(predetermined duration)에서 상기 메모리 컨트롤러(102)가 상기 제 1 메모리 억세스 요청에 근거하여 제 2 메모리 억세스 동작을 개시하기 전에 제 3 메모리 억세스 요청을 상기 메모리 컨트롤러(102)에 디스패치하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 메모리 컨트롤러(102)가 다음 메모리 억세스 요청을 수신할 수 있는 상기 가장 빠른 시간은 메모리(104)와 상기 메모리 컨트롤러(102) 간의 시그널링(signaling)에 의해 나타내지는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 제 2 메모리 억세스 요청은, 읽기 억세스 요청(read access request)과 쓰기 억세스 요청(write access request) 중 하나를 포함하고,
    상기 읽기 억세스 요청의 경우, 상기 시그널링에는 요청된 데이터가 상기 메모리(104)로부터 상기 메모리 컨트롤러(102)로의 송신(transmission)에 대해 이용가능함을 나타내는 신호가 포함되고; 그리고
    상기 쓰기 억세스 요청의 경우, 상기 시그널링에는 쓰기 데이터가 상기 메모리(104)에 제공되고 있음을 나타내는 신호가 포함되는 것을 특징으로 하는 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 제 3 메모리 억세스 요청을 상기 메모리 컨트롤러(102)에 디스패치하는 단계는, 상기 메모리 컨트롤러(102)에 제공될 이용가능한 복수 개의 메모리 억세스 요청들로부터 상기 제 3 메모리 억세스 요청을 선택하는 것을 포함하는 것을 특징으로 하는 방법.
  6. 제2항에 있어서,
    상기 제 3 메모리 억세스 요청을 디스패치하는 단계는, 상기 메모리 컨트롤러(102)가 다음 메모리 억세스 요청을 수신할 수 있는 상기 가장 빠른 시간에 응답하여 상기 메모리 컨트롤러(102)로부터 버스 인터페이스 유닛(bus interface unit)(106)으로 신호(134)를 제공하는 것을 포함하고, 여기서 상기 버스 인터페이스 유닛(106)은 상기 신호(134)를 수신하는 것에 응답하여 복수 개의 메모리 억세스 요청들로부터 상기 제 3 메모리 억세스 요청을 선택하는 것을 특징으로 하는 방법.
  7. 시스템(100)으로서,
    버스 인터페이스 유닛(106)과; 그리고
    상기 버스 인터페이스 유닛(106)에 연결됨과 아울러 메모리(104)에 연결된 메모리 컨트롤러(102)를 포함하여 구성되고,
    상기 버스 인터페이스 유닛(106)은,
    하나 이상의 메모리 억세스 요청들을 저장하기 위한 버퍼(132)와, 그리고
    제 1 입력 및 제 2 입력을 갖는 조정기(130)를 포함하고,
    여기서 상기 조정기(130)의 제 1 입력은 상기 버퍼(132)에 연결되어 메모리 억세스 요청들을 수신하고, 상기 조정기(130)의 제 2 입력은 신호(134)를 수신하며, 상기 조정기(130)는 상기 신호(134)에 응답하여 디스패치를 위한 다음 메모리 억세스 요청을 선택하고,
    상기 메모리 컨트롤러(102)는 상기 버스 인터페이스 유닛(106)으로부터 디스패치된 복수 개의 메모리 억세스 요청들을 저장하는 버퍼(120)를 포함하고, 상기 버스 인터페이스 유닛(106)으로부터 디스패치된 복수 개의 메모리 억세스 요청들은 우선순위(priority)가 가장 높은 메모리 억세스 요청을 포함하고, 상기 우선순위가 가장 높은 메모리 억세스 요청은 우선순위가 낮은 메모리 억세스 요청 이후에 상기 메모리 컨트롤러(102)의 버퍼(120)에 수신되며,
    상기 메모리 컨트롤러(102)는 상기 우선순위가 낮은 메모리 억세스 요청에 근거하여 메모리 억세스 동작을 개시하기 전에 상기 우선순위가 가장 높은 메모리 억세스 요청에 근거하여 현재 메모리 억세스 동작을 개시하며,
    상기 메모리 컨트롤러(102)는, 상기 현재 메모리 억세스 동작의 개시에 응답하여 상기 메모리 컨트롤러(102)의 버퍼(120)에서 버퍼 위치가 이용가능하게 된 이후 상기 현재 메모리 억세스 동작의 실제 완료 이전의 소정의 지속구간에 상기 신호(134)를 상기 버스 인터페이스 유닛(106)에 제공하는 것을 특징으로 하는 시스템.
  8. 제7항에 있어서,
    상기 현재 메모리 억세스 요청은, 읽기 억세스 요청과 쓰기 억세스 요청 중 하나를 포함하고,
    상기 읽기 억세스 요청의 경우, 상기 신호(134)는 요청된 데이터가 상기 메모리(104)로부터 상기 메모리 컨트롤러(102)로의 송신에 대해 이용가능함을 나타내는 표시에 응답하여 제공되고; 그리고
    상기 쓰기 억세스 요청의 경우, 상기 신호(134)는 쓰기 데이터가 상기 메모리(104)에 제공되고 있음을 나타내는 표시에 응답하여 제공되는 것을 특징으로 하는 시스템.
  9. 삭제
  10. 제7항에 있어서,
    상기 조정기(130)는 상기 하나 이상의 메모리 억세스 요청들과 관련된 우선순위에 근거하여 상기 다음 메모리 억세스 요청을 선택하는 것을 특징으로 하는 시스템.
KR1020087008617A 2005-09-09 2008-04-10 지연된 메모리 억세스 요청 조정 KR101262313B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/222,615 2005-09-09
US11/222,615 US8065457B2 (en) 2005-09-09 2005-09-09 Delayed memory access request arbitration
PCT/US2006/032742 WO2007032866A1 (en) 2005-09-09 2006-08-23 Delayed memory access request arbitration

Publications (2)

Publication Number Publication Date
KR20080043406A KR20080043406A (ko) 2008-05-16
KR101262313B1 true KR101262313B1 (ko) 2013-05-08

Family

ID=37562281

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087008617A KR101262313B1 (ko) 2005-09-09 2008-04-10 지연된 메모리 억세스 요청 조정

Country Status (8)

Country Link
US (1) US8065457B2 (ko)
EP (1) EP1922627B1 (ko)
JP (1) JP5058167B2 (ko)
KR (1) KR101262313B1 (ko)
CN (1) CN101258476B (ko)
DE (1) DE602006018959D1 (ko)
TW (1) TWI426387B (ko)
WO (1) WO2007032866A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8195903B2 (en) * 2006-06-29 2012-06-05 Oracle America, Inc. System and method for metering requests to memory
US8478950B2 (en) 2008-07-29 2013-07-02 Synopsys, Inc. Data processing circuit with arbitration between a plurality of queues
TWI370361B (en) * 2008-08-21 2012-08-11 Ili Technology Corp Memory access controlling apparatus and control method thereof
CN101667448B (zh) * 2008-09-04 2012-11-07 奕力科技股份有限公司 存储器存取控制装置及其相关控制方法
JP5418193B2 (ja) * 2009-12-14 2014-02-19 富士ゼロックス株式会社 調停装置、画像処理装置、及び画像形成システム
US20120290810A1 (en) * 2011-04-18 2012-11-15 Jean-Jacques Lecler Memory Access Latency Metering
GB2518884A (en) * 2013-10-04 2015-04-08 Ibm Network attached storage system and corresponding method for request handling in a network attached storage system
US10402324B2 (en) 2013-10-31 2019-09-03 Hewlett Packard Enterprise Development Lp Memory access for busy memory by receiving data from cache during said busy period and verifying said data utilizing cache hit bit or cache miss bit
US9646660B2 (en) * 2014-09-23 2017-05-09 Intel Corporation Selectable memory access time
CN107526534B (zh) * 2016-06-21 2020-09-18 伊姆西Ip控股有限责任公司 管理存储设备的输入输出(i/o)的方法和设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030070018A1 (en) 1999-04-23 2003-04-10 Jiin Lai Delayed transaction method and device used in a PCI system
US20030185032A1 (en) 2002-03-26 2003-10-02 Zagorianakos Steven W. Dual bus memory controller

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4400771A (en) * 1975-12-04 1983-08-23 Tokyo Shibaura Electric Co., Ltd. Multi-processor system with programmable memory-access priority control
US5524220A (en) * 1994-08-31 1996-06-04 Vlsi Technology, Inc. Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems
US5892981A (en) 1996-10-10 1999-04-06 Hewlett-Packard Company Memory system and device
US6134625A (en) * 1998-02-18 2000-10-17 Intel Corporation Method and apparatus for providing arbitration between multiple data streams
US6105086A (en) * 1998-06-04 2000-08-15 Lsi Logic Corporation Data communication circuit and method for buffering data between a shared resource and multiple interfaces
US6453401B1 (en) * 1999-07-02 2002-09-17 Rambus Inc. Memory controller with timing constraint tracking and checking unit and corresponding method
US6594730B1 (en) * 1999-08-03 2003-07-15 Intel Corporation Prefetch system for memory controller
US6499090B1 (en) * 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
JP2002244919A (ja) * 2001-02-20 2002-08-30 Matsushita Electric Ind Co Ltd Dramインターフェース回路
US7093094B2 (en) * 2001-08-09 2006-08-15 Mobilygen Corporation Random access memory controller with out of order execution
US6745308B2 (en) * 2002-02-19 2004-06-01 Ati Technologies, Inc. Method and system for bypassing memory controller components
US7099972B2 (en) * 2002-07-03 2006-08-29 Sun Microsystems, Inc. Preemptive round robin arbiter
JP4008307B2 (ja) * 2002-08-09 2007-11-14 松下電器産業株式会社 メモリインターフェース回路
US6857055B2 (en) * 2002-08-15 2005-02-15 Micron Technology Inc. Programmable embedded DRAM current monitor
JP3876816B2 (ja) * 2002-10-24 2007-02-07 日本電気株式会社 コンピュータの共有資源利用制限方法
US7093059B2 (en) * 2002-12-31 2006-08-15 Intel Corporation Read-write switching method for a memory controller
JP2004287576A (ja) * 2003-03-19 2004-10-14 Matsushita Electric Ind Co Ltd バスコントローラ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030070018A1 (en) 1999-04-23 2003-04-10 Jiin Lai Delayed transaction method and device used in a PCI system
US20030185032A1 (en) 2002-03-26 2003-10-02 Zagorianakos Steven W. Dual bus memory controller

Also Published As

Publication number Publication date
CN101258476A (zh) 2008-09-03
WO2007032866A1 (en) 2007-03-22
US8065457B2 (en) 2011-11-22
TWI426387B (zh) 2014-02-11
KR20080043406A (ko) 2008-05-16
US20070067532A1 (en) 2007-03-22
CN101258476B (zh) 2011-06-08
EP1922627A1 (en) 2008-05-21
JP5058167B2 (ja) 2012-10-24
TW200723001A (en) 2007-06-16
EP1922627B1 (en) 2010-12-15
JP2009508215A (ja) 2009-02-26
DE602006018959D1 (de) 2011-01-27

Similar Documents

Publication Publication Date Title
KR101262313B1 (ko) 지연된 메모리 억세스 요청 조정
JP4723260B2 (ja) ソースデバイスに対するリクエストをスケジューリングする装置及び方法
JP4944042B2 (ja) Soc相互接続において転送待ち時間を低減するための方法および装置
US20050102456A1 (en) Command transmission method and command transmission apparatus in pipeline bus system
EP2807567B1 (en) Systems and methods for dynamic priority control
JP2009508215A5 (ko)
US20140325114A1 (en) Multi-channel direct memory access controller and control method thereof
JP4184614B2 (ja) バスシステム及びその実行順序の調整方法
US7346722B2 (en) Apparatus for use in a computer systems
US6901507B2 (en) Context scheduling
US9620215B2 (en) Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode
US20060179172A1 (en) Method and system for reducing power consumption of a direct memory access controller
US20160246515A1 (en) Method and arrangement for controlling requests to a shared electronic resource
CN115801814A (zh) 一种基于串口双fifo缓冲区结构的数据传输方法、系统及存储介质
JP2007249635A (ja) データ転送装置及びデータ転送方法
JPH11175464A (ja) 調停装置および方法
JPH06243093A (ja) バス制御システム
JP6119997B2 (ja) データ処理装置、データ処理装置の制御方法
CN116225318A (zh) 命令调度方法、闪存控制器、闪存设备及存储介质
GB2341771A (en) Address decoding
GB2341765A (en) Bus idle usage
JPH11143812A (ja) Dma回路
JPH05134980A (ja) バスシステム
GB2341772A (en) Primary and secondary bus architecture
GB2341769A (en) Data packet reordering

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: 20180328

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 7