KR101645003B1 - 메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치 - Google Patents

메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치 Download PDF

Info

Publication number
KR101645003B1
KR101645003B1 KR1020100013390A KR20100013390A KR101645003B1 KR 101645003 B1 KR101645003 B1 KR 101645003B1 KR 1020100013390 A KR1020100013390 A KR 1020100013390A KR 20100013390 A KR20100013390 A KR 20100013390A KR 101645003 B1 KR101645003 B1 KR 101645003B1
Authority
KR
South Korea
Prior art keywords
data
memory
buffer
word
address
Prior art date
Application number
KR1020100013390A
Other languages
English (en)
Other versions
KR20110093373A (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 삼성전자주식회사
Priority to KR1020100013390A priority Critical patent/KR101645003B1/ko
Priority to US13/006,382 priority patent/US8688891B2/en
Publication of KR20110093373A publication Critical patent/KR20110093373A/ko
Application granted granted Critical
Publication of KR101645003B1 publication Critical patent/KR101645003B1/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/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

컴퓨팅 장치에서 다중 뱅크 메모리의 액세스를 효율화시키는 기술이 개시된다. 개시된 컴퓨팅 장치는 프로세서와, 메모리와, 정렬된 워드 단위로 메모리를 액세스하여 데이터 버퍼에 저장하고, 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 데이터 버퍼로부터 추출하여 출력하는 메모리 제어기를 포함한다. 태그된 버퍼를 도입함으로써 비정렬된 메모리 액세스에 대해서도 고정된 메모리 잠복기(fixed memory latency)를 보장하는 것이 가능해진다. 반복적인 메모리 액세스 횟수를 저감시켜 전력 소모를 줄이고 메모리 액세스 대역폭(bankwidth)을 향상시킨다.

Description

메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치{memory controller and computing apparatus incorporating the memory controller}
컴퓨팅 장치에서 다중 뱅크 메모리의 액세스를 효율화시키는 기술이 개시된다.
최근의 프로세서, 특히 디지털 신호처리기(digital signal processor)는 다중 코어(multi-core), 다중 포트(multi-port) 구조를 통해 다중 뱅크 메모리(multi-bank memory)를 액세스함으로써 성능(performance)을 높이는 것들이 있다. 흔히 다중 뱅크 메모리는, 예를 들면 각각이 4 바이트로 구성되는 워드 단위로 데이터를 저장한다. 일 예로, 일련의 주소값을 가진 데이터들에 대해 처음 4바이트인 첫번째 워드는 제 1 뱅크에 저장되고, 그 다음 4 바이트인 두번째 바이트는 제 2 뱅크에 저장될 수 있다. 처음 4바이트 혹은 그 다음 4바이트에 대한 액세스 요구는 하나의 뱅크를 액세스하여 응답 가능하다. 이러한 형태의 메모리 액세스를 정렬된 메모리 액세스(aligned memory access)라고 한다. 그런데, 두번째 바이트부터 다섯번째 바이트로 구성되는 워드에 대한 액세스는 제 1 뱅크와 제 2 뱅크를 모두 액세스해야만 응답할 수 있다. 이러한 형태의 메모리 액세스를 비정렬된 메모리 액세스(unaligned memory access)라고 한다.
단일 뱅크 메모리 구조(single-bank memory architecture)를 채택한 시스템에서는 비정렬된 메모리 액세스가 발생하면 두 번의 메모리 액세스가 필요하다. 다중 포트, 다중 뱅크 메모리 구조(multi-port, multi-bank memory architecture)를 채택한 시스템에서는 메모리 제어기를 통해 두 뱅크를 동시에 액세스할 수 있으므로 정렬된 메모리 액세스와 동일한 메모리 잠복기(memory latency)를 보장할 수 있다. 그러나 예를 들어 2 포트, 2 뱅크 시스템의 경우 하나의 포트가 2개의 뱅크를 액세스하고 있는 동안 나머지 하나의 포트는 해당 뱅크를 액세스하는 것이 불가능해진다. 이는 다중 포트 시스템의 장점을 훼손한다.
비정렬된 메모리 액세스에 대해 정렬된 메모리 액세스 수준의 메모리 잠복기를 제공하는 컴퓨팅 장치 및 그 메모리 액세스 제어 방법이 제시된다. 또 메모리 액세스를 감소시켜 뱅크 충돌(bank conflict)을 줄이고 전력 소모를 줄이는 컴퓨팅 장치가 제시된다.
일반적인 일 양상에 따르면, 컴퓨팅 장치는 프로세서와, 메모리와, 정렬된 워드 단위로 메모리를 액세스하여 데이터 버퍼에 저장하고, 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 데이터 버퍼로부터 추출하여 출력하는 메모리 제어기를 포함한다.
보다 구체적으로, 메모리 제어기는 정렬된 워드 단위로 메모리를 액세스하는 메모리 액세스부와, 메모리 액세스부가 출력하는 워드 데이터들을 임시로 저장하는 둘 이상의 데이터 버퍼들과, 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 상기 데이터 버퍼들로부터 추출하고 조합하여 출력하는 태그 제어기를 포함하는 태그된 버퍼(tagged buffer)를 포함한다.
일 양상에 따르면, 메모리는 복수의 뱅크로 구획되고, 메모리 액세스부 및 태그된 버퍼가 뱅크별로 대응되어 복수개 구비된다.
태그된 버퍼를 도입함으로써 비정렬된 메모리 액세스에 대해서도 고정된 메모리 잠복기(fixed memory latency)를 보장하는 것이 가능해진다. 또한 다중 포트, 다중 뱅크 메모리 구조(multi-port, multi-bank memory architecture)에서 다중 포트의 장점을 살리면서 비정렬된 메모리 액세스에 대해 정렬된 메모리 액세스 수준의 메모리 잠복기를 제공한다. 또한 반복적인 메모리 액세스 횟수를 저감시켜 메모리 액세스 대역폭(bankwidth)을 향상시킨다.
나아가 반복적인 메모리 액세스를 줄임으로써 뱅크 충돌(bank conflict)을 회피하고 전력소모를 줄일 수 있다.
도 1은 일 실시예에 따른 컴퓨팅 장치의 개략적인 구성을 도시한 블럭도이다.
도 2는 도 1의 실시예에 있어서 메모리 제어기(30)의 태그로직들(100, 200)의 보다 상세한 구성을 도시한 블럭도이다.
도 3은 일 실시예에 따른 컴퓨팅 장치의 메모리 액세스 제어 방법을 개략적으로 도시한 흐름도이다.
도 4는 일 실시예에 따른 메모리 액세스 단계(1300)의 보다 상세한 흐름도이다.
도 5는 일 실시예에 따른 컴퓨팅 장치의 메모리 액세스 제어 방법을 예시적으로 설명하기 위한 도면이다.
전술한, 그리고 추가적인 양상들은 후술하는 실시예들을 통해 더욱 명확해질 것이다. 이하에서는 첨부된 도면을 참조하여 기술되는 실시예들을 통해 이러한 양상들을 구체적으로 설명한다.
도 1은 일 실시예에 따른 컴퓨팅 장치의 개략적인 구성을 도시한 블럭도이다. 도시된 바와 같이, 컴퓨팅 장치는 프로세서(10)와, 메모리(90)와, 정렬된 워드 단위로 메모리(90)를 액세스하여 데이터 버퍼(50)에 저장하고, 프로세서(10)로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 데이터 버퍼(50)로부터 추출하여 출력하는 메모리 제어기(30)를 포함한다. 컴퓨팅 장치는 예를 들면 디지털신호처리기(digital signal processor) 비디오 신호처리 장치 또는 고속 컴퓨터 중의 하나일 수 있다. 도시된 실시예에 있어서 프로세서(10)는 다중 포트, 다중 뱅크 메모리 액세스를 지원하는 프로세서이다. 도시된 실시예에 있어서 메모리(90)는 물리적으로 동시에 액세스될 수 있는 복수의 뱅크(910,930)로 구획되고, 메모리 액세스부(70) 및 태그된 버퍼(50)는 내부에 처리 단위가 대응하는 뱅크별로 복수개 구비된다. 메모리 제어기(30)는 VHDL 코드로 설계된 FPGA(Field Programmable Gate Array)로 구현된다. 그러나 메모리 제어기(30)는 프로세서(10) 내부에 집적될 수도 있다.
메모리 제어기(30)는 정렬된 워드 단위로 메모리(90)를 액세스하는 메모리 액세스부(70)와, 태그된 버퍼(tagged buffer)(100, 200)를 포함한다. 메모리 액세스부(70)는 액세스하는 메모리 뱅크의 수 만큼의 포트를 갖고 있다. 도시된 바와 같이 메모리 액세스부(70)는 메모리측 버퍼(730,770)와, 프로세서측 버퍼(710,750)를 포함한다. 메모리측 버퍼(730,770)가 읽어들인 정렬된 워드들은 프로세서측 버퍼(710,750) 중의 하나로 복사될 수 있다. 이에 따라 프로세서(10)는 임의의 하나의 뱅크(910,930)를 액세스할 수 있다. 태그된 버퍼(50)는 프로세서(10)와 메모리 액세스부(70) 사이에 위치한다. 태그된 버퍼(50) 내부에는 메모리 포트의 수 만큼의 태그 로직들(100,200)이 있다. 태그 로직들(100,200)은 각 포트로 발생되는 메모리 요구(memory request)의 주소값을 태그값과 비교하여 메모리액세스부(70)에 메모리 요구를 전달할지 여부를 결정한다.
도 2는 도 1의 실시예에 있어서 메모리 제어기(30)의 태그로직들(100, 200)의 보다 상세한 구성을 도시한 블럭도이다. 도시된 바와 같이 일 실시예에 따른 태그로직(tagged buffer)(100, 200)은 메모리 액세스부(70)가 출력하는 워드 데이터들을 임시로 저장하는 둘 이상의 데이터 버퍼들(131,133)과, 프로세서(10)로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 데이터 버퍼들(100,200)로부터 추출하고 조합하여 출력하는 태그 제어기(110)를 포함한다. 데이터 버퍼들(131,133)은 데이터를 저장하는 캐쉬로 동작한다.
도시된 실시예에 있어서, 데이터 버퍼들은 다중 뱅크 메모리(90)로부터 제 1 워드를 읽어들여 저장하는 제 1 데이터 버퍼(131)와, 다중 뱅크 메모리(90)로부터 제 2 워드를 읽어들여 저장하는 제 2 데이터 버퍼(133)를 포함한다. 도시된 실시예에 있어서, 태그 제어기(110)는 제 1 데이터 버퍼(131)가 저장하는 제 1 워드의 주소값을 저장하는 제 1 주소 버퍼(115)와, 기 제 2 데이터 버퍼(133)가 저장하는 제 2 워드의 주소값을 저장하는 제 2 주소 버퍼(117)와, 제 1 데이터 버퍼(131)에 저장된 바이트들과 제 2 데이터 버퍼(133)에 저장된 바이트들 중 요구된 바이트들을 조합하여 워드를 생성하여 출력하는 태그 멀티플렉서(113), 그리고 이들의 동작을 제어하는 비교기(111)를 포함한다.
정렬된 워드가 저장되는 데이터 버퍼(131,133)가 2개 구비되어 태그 멀티플렉서(113)는 이 두 개의 정렬된 워드에 포함된 8개 바이트들 중 선택되는 연속된 4개로 구성되는 임의의 비정렬된 워드를 데이터 버퍼들에 저장된 바이트들로부터 조합할 수 있다.
이하에서는 본 발명의 일 실시예에 따른 컴퓨팅 장치의 메모리 액세스 제어 방법에 대해 설명한다. 도 3은 일 실시예에 따른 컴퓨팅 장치의 메모리 액세스 제어 방법을 개략적으로 도시한 흐름도이다. 도시된 바와 같이 일 실시예에 따른 컴퓨팅 장치의 메모리 액세스 제어 방법은 정렬된 워드 단위로 메모리를 액세스하여 복수의 데이터 버퍼 중 하나에 저장하는 버퍼링 단계(1100)와, 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 구성하는 바이트들을 데이터 버퍼들에서 추출한 후 조합하여 출력하는 메모리 액세스 단계(1300)를 포함한다. 메모리 액세스부(70)는 다중 뱅크 메모리(90)를 항상 정렬된 워드 단위로 액세스하기 때문에 데이터 버퍼들(131,133)에 버퍼링되는 데이터는 항상 정렬된 워드 데이터이다.
도 4는 일 실시예에 따른 메모리 액세스 단계(1300)를 보다 상세히 설명하는 흐름도이다. 도 4 및 도 1,2를 참조하여 메모리 액세스 단계(1300)를 보다 상세히 설명한다. 도 4에 도시된 바와 같이, 메모리 액세스 단계(1300)는 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 구성하는 바이트들이 데이터 버퍼들 중 어디엔가 저장되어 있는지 여부를 판단하는 버퍼 검색 단계(1310)와, 바이트들이 복수의 데이터 버퍼들 중에 저장되어 있는 경우 하나 혹은 복수의 데이터 버퍼들로부터 해당하는 바이트들을 추출한 후 조합하여 출력하는 데이터 조합 단계(1370)를 포함한다.
버퍼 검색 단계는 데이터 버퍼에 저장된 워드들의 주소를 요구된 데이터의 주소와 비교하여 이루어진다. 구체적으로 도 1에서 프로세서(10)가 메모리 요구를 발하면 도 2에서 비교기(111)는 주소 버스(151)로부터 요구된 데이터가 저장된 주소를 획득하고, 이 주소 값 중 하위 2비트를 제외한 값을 제 1 주소 버퍼(115) 및 제 2 주소 버퍼(117)에 저장된 주소값과 순차적으로 비교한다. 만약 일치하는 값이 제 1 주소 버퍼(115) 또는 제 2 주소 버퍼(117)에 저장되어 있다면 해당하는 워드가 제 1 데이터 버퍼(131) 또는 제 2 데이터 버퍼(133) 중의 어느 하나 혹은 두 버퍼에 걸쳐 저장되어 있다.
일 양상에 따라, 메모리 액세스 제어 방법은 버퍼 검색 단계 이후에 요구된 워드를 구성하는 바이트들 중 데이터 버퍼에 저장되어 있지 않은 바이트가 있는 경우, 그 바이트가 포함된 워드를 메모리로부터 읽어들여 또다른 데이터 버퍼에 저장하는 데이터 버퍼링 단계를 더 포함한다.
즉, 단계 1310에서 버퍼 검색 결과 요구된 워드를 구성하는 바이트들 중 데이터 버퍼에 저장되어 있지 않은 바이트가 있는 경우, 다시 말하면 주소 버스(151)로부터의 주소값과 일치하는 값이 제 1 주소 버퍼(115) 또는 제 2 주소 버퍼(117)에 저장되어 있지 않다면, 태그 제어기(110)는 그 바이트가 포함된 워드를 메모리로부터 읽어들여 또다른 데이터 버퍼에 저장한다(단계 1350). 즉, 태그 제어기(110)는 주소 버스(151)에서 획득한 주소값 중 하위 2 비트를 제외한 값을 주소 버스(155)로 출력한다. 그리고 미도시된 메모리 읽기 제어 신호를 외부로 출력한다. 이에 의해 메모리 액세스부(70)는 다중 뱅크 메모리(90)의 해당 번지를 액세스하여 요구된 데이터를 획득하고 이 데이터는 데이터 버스(157)에 로딩된다. 태그 제어기(110)는 제 1 데이터 버퍼(131)가 가용 상태인(available) 경우 이 값을 제 1 데이터 버퍼(131)에 기록하고, 제 2 데이터 버퍼(133)가 가용 상태인 경우 이 값을 제 2 데이터 버퍼(133)에 기록한다.
일 양상에 따라, 데이터 버퍼링 단계(1350) 이후에 메모리로부터 읽어들인 워드에 포함된 요구된 바이트와, 기존 데이터 버퍼에 포함된 요구된 바이트를 조합하여 요구된 워드를 구성하여 출력하는 단계를 더 포함한다.
즉, 요구된 비정렬된 워드를 구성하는 바이트 중 일부가 데이터 버퍼 중 하나에 저장된 경우, 태그 멀티플렉서(113)는 데이터 버스(157)에서 획득된 해당 바이트들과 데이터 버퍼에 저장된 바이트들을 조합하여 요구된 워드를 구성한다. 이후에 이 구성된 워드를 데이터 버스(153)로 출력하여 메모리 요구를 발한 프로세서(10)로 제공한다.
한편, 본 발명은 비디오 재생과 같이 메모리의 연속된 주소를 순차적으로 액세스하는 응용분야에 적용될 수 있다. 일반적인 양상에 따라, 태그 제어기(110)는 요구된 워드 전체가 마지막 데이터 버퍼에 저장되어 있는 경우 해당하는 데이터 버퍼로부터 워드를 출력하고, 그 저장된 데이터를 그 직전 데이터 버퍼로 기록한다. 이는 그 다음 액세스는 새로운 워드일 가능성이 매우 높으므로 제 2 데이터 버퍼(133)를 가용상태로 만들기 위해서이다.
도 5는 일 실시예에 따른 컴퓨팅 장치의 메모리 액세스 제어 방법을 예시적으로 설명하기 위한 도면이다. 도 5는 프로세서가 액세스하고자 하는 메모리의 번지들을 보여준다. 도 2와 도 5를 참조하여 태그 로직의 동작과 그 메모리 액세스 제어 방법을 예시적으로 설명한다. 도 5의 (a)와 같이 프로세서(10)가 메모리의 0번지부터 3번지에 저장된 하나의 워드를 액세스하는 경우, 주소 버스(151)에는 0x0의 값이 프로세서(10)에 의해 로딩된다. 이때 물론 주소 버퍼들(115,117)은 아직 사용된 바가 없기 때문에 의미 없는 값이 기록되어 있다. 비교기(111)는 주소 버스(151)에 로딩된 0x0 값 중 하위 2 비트를 제외한 값을 주소 버퍼들(115,117)에 저장된 값과 비교한다. 비교결과 일치하지 않으므로 태그 제어기(110)는 주소 버스(155)에 주소 버스(151)에 로딩된 값을 로드하고, 메모리 읽기를 요구한다. 이에 의해 도 1의 메모리 액세스부(70)는 정렬된 워드, 즉 다중 뱅크 메모리(90)의 0x0 번지부터 저장된 4개의 바이트를 액세스하여 돌려줄 것이다. 이 데이터는 데이터 버스(157)에 로딩된다. 태그 멀티플렉서(113)는 데이터 버스(157)로부터 해당하는 워드를 추출하여 데이터 버스(153)로 로딩한다. 이에 따라 프로세서(10)는 해당하는 워드를 획득할 수 있다. 이후에 태그 제어기(110)는 이 주소 값 0x0 중 하위 2비트를 제외한 값을 제 1 주소 버퍼(115)에 기록하고, 데이터 버스(157)에서 읽어들인 데이터를 제 1 데이터 버퍼(131)에 기록한다.
다음으로 도 5의 (b)와 같이 프로세서(10)가 메모리 주소 0x1 번지로부터 4바이트로 구성되는 비정렬된 워드를 요구할 경우, 주소 버스(151)에는 0x1의 값이 프로세서(10)에 의해 로딩된다. 비교기(111)는 주소 버스(151)에 로딩된 0x1 값 중 하위 2 비트를 제외한 값을 주소 버퍼들(115,117)에 저장된 값과 비교한다. 비교결과 제 1 주소 버퍼(115)에 저장된 값과 일치한다. 그러나 주소 버스(151)에 로딩된 값의 하위 비트가 0이 아니므로 태그 제어기(110)는 주소 버스(155)에 주소 버스(151)에 로딩된 값 중 하위 2비트를 제외한 값에서 1을 더한 값을 로드하고, 메모리 읽기를 요구한다. 이에 의해 도 1의 메모리 액세스부(70)는 정렬된 워드, 즉 다중 뱅크 메모리(90)의 0x4 번지부터 저장된 4개의 바이트를 액세스하여 돌려줄 것이다. 이 데이터는 데이터 버스(157)에 로딩된다. 태그 멀티플렉서(113)는 데이터 버스(157)로부터 상위 하나의 바이트와, 제 1 데이터 버퍼(131)에 저장된 상위 3개의 바이트를 조합하여 비정렬된 워드를 구성하고 이를 데이터 버스(153)로 로딩한다. 이에 따라 프로세서(10)는 해당하는 워드를 획득할 수 있다. 이후에 태그 제어기(110)는 이 주소 값 0x0 중 하위 2비트를 제외한 값에 1을 더한 값을 제 2 주소 버퍼(117)에 기록하고, 데이터 버스(157)에서 읽어들인 데이터를 제 2 데이터 버퍼(133)에 기록한다.
다음으로 도 5의 (c)와 같이 프로세서(10)가 메모리 주소 0x2 번지로부터 4바이트로 구성되는 비정렬된 워드를 요구할 경우, 주소 버스(151)에는 0x2의 값이 프로세서(10)에 의해 로딩된다. 비교기(111)는 주소 버스(151)에 로딩된 0x2 값 중 하위 2 비트를 제외한 값을 주소 버퍼들(115,117)에 저장된 값과 비교한다. 비교결과 제 1 주소 버퍼(115)에 저장된 값과 일치한다. 이미 제 2 주소 버퍼(117) 및 제 2 데이터 버퍼(133)에 다음 워드가 로딩되어 있으므로, 태그 제어기(110)는 추가적인 메모리 액세스 요구를 발하지 않는다. 단지 태그 멀티플렉서(113)는 제 1 데이터 버퍼(131)에 저장된 하위 2개의 바이트와 제 2 데이터 버퍼(133)에 저장된 상위 2개의 바이트를 조합하여 비정렬된 워드를 구성하고 이를 데이터 버스(153)로 로딩한다. 이에 따라 프로세서(10)는 해당하는 워드를 획득할 수 있다.
다음으로 도 5의 (d)와 같이 프로세서(10)가 메모리 주소 0x3 번지로부터 4바이트로 구성되는 비정렬된 워드를 요구할 경우, 주소 버스(151)에는 0x3의 값이 프로세서(10)에 의해 로딩된다. 비교기(111)는 주소 버스(151)에 로딩된 0x3 값 중 하위 2 비트를 제외한 값을 주소 버퍼들(115,117)에 저장된 값과 비교한다. 비교결과 제 1 주소 버퍼(115)에 저장된 값과 일치한다. 이미 제 2 주소 버퍼(117) 및 제 2 데이터 버퍼(133)에 다음 워드가 로딩되어 있으므로, 태그 제어기(110)는 추가적인 메모리 액세스 요구를 발하지 않는다. 단지 태그 멀티플렉서(113)는 제 1 데이터 버퍼(131)에 저장된 하위 1개의 바이트와 제 2 데이터 버퍼(133)에 저장된 상위 3개의 바이트를 조합하여 비정렬된 워드를 구성하고 이를 데이터 버스(153)로 로딩한다. 이에 따라 프로세서(10)는 해당하는 워드를 획득할 수 있다.
다음으로 도 5의 (e)와 같이 프로세서(10)가 메모리 주소 0x4 번지로부터 4바이트로 구성되는 정렬된 워드를 요구할 경우, 주소 버스(151)에는 0x4의 값이 프로세서(10)에 의해 로딩된다. 비교기(111)는 주소 버스(151)에 로딩된 0x4 값 중 하위 2 비트를 제외한 값을 주소 버퍼들(115,117)에 저장된 값과 비교한다. 비교결과 제 2 주소 버퍼(117)에 저장된 값과 일치한다. 태그 멀티플렉서(113)는 제 2 데이터 버퍼(133)에 저장된 4개의 바이트로 정렬된 워드를 구성하고 이를 데이터 버스(153)로 로딩한다. 이에 따라 프로세서(10)는 해당하는 워드를 획득할 수 있다. 이후에 태그 제어기(110)는 제 2 주소 버퍼(117)에 저장된 값을 제 1 주소 버퍼(115)로 복사하고, 제 2 데이터 버퍼(133)에 저장된 값을 제 1 데이터 버퍼(131)로 복사한 후, 제 2 주소 버퍼(117)에는 의미 없는 숫자를 기록하여 제 2 주소 버퍼(117) 및 제 2 데이터 버퍼(133)를 가용 상태로 돌린다. 이에 의해 후행하는 연속된(consecutive) 메모리 액세스시에 제 2 데이터 버퍼가 준비될 수 있다.
이상 설명한 예시적인 동작에서 코어로부터 5회의 메모리 요구가 있었음에도 불구하고 실제 메모리로의 액세스는 2회에 거쳐 본 발명의 일반적인 양상에 의해 메모리 요구가 절감되고 이에 따라 메모리 액세스시 유발되는 전력 소모가 절감된다는 것을 확인할 수 있다. 또한 메모리 액세스에 있어서 싸이클당 대역폭도 종래 (32비트×5회)/(8 cycle) 에서 (32비트×5회)/(5 cycle)로 현저히 개선된다는 것을 확인할 수 있다.
본 발명은 첨부된 도면을 참조하여 기술되는 실시예를 중심으로 기술되었지만 이에 한정되는 것은 아니다. 예를 들어 본 발명은 비정렬된 워드 단위의 액세스에 대해 설명되었지만 비정렬된 바이트 단위의 액세스에 있어서도 개선된 성능을 제공한다. 이 경우 도 2에서 비교기(111)는 유사하게 동작하며, 단지 태그 멀티플렉서(131)가 추출하는 바이트가 복수개가 아니라 단일의 바이트이므로, 태그 멀티플렉서라기 보다는 태그 바이트선택기(byte selector)로 동작한다는 점만이 다르다는 것은 이상의 설명을 이해한 당업자에게 자명하다. 또한 본 발명은 데이터 읽기를 예로 들어 설명되었으나, 데이터 기록에도 동일하게 적용될 수 있다는 사실 역시 자명하다. 따라서 본 발명은 이 같은 자명한 양상들 및 자명한 변형예들을 포괄하도록 의도된 후술하는 청구범위에 의해 해석되어져야 한다.

Claims (14)

  1. 프로세서와; 메모리와;
    상기 프로세서와 상기 메모리 사이에 위치하고, 정렬된 워드 단위로 상기 메모리를 액세스하여 출력된 워드 데이터를 읽어들여 임시 저장하는 데이터 버퍼를 포함하는 메모리 제어기; 를 포함하고,
    상기 메모리 제어기는, 상기 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 상기 데이터 버퍼로부터 추출하여 출력하는 컴퓨팅 장치.
  2. 제 1 항에 있어서, 상기 메모리 제어기가 :
    정렬된 워드 단위로 상기 메모리를 액세스하는 메모리 액세스부와;
    상기 메모리 액세스부가 출력하는 워드 데이터들을 임시로 저장하는 둘 이상의 데이터 버퍼들과, 상기 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 상기 데이터 버퍼들로부터 추출하고 조합하여 출력하는 태그 제어기를 포함하는 태그된 버퍼(tagged buffer);
    를 포함하는 컴퓨팅 장치.
  3. 제 2 항에 있어서, 상기 메모리는 뱅크를 포함하고, 상기 메모리 액세스부 및 상기 태그된 버퍼가 상기 뱅크를 위해 제공되는 컴퓨팅 장치.
  4. 제 3 항에 있어서, 상기 태그된 버퍼가 :
    상기 메모리로부터 제 1 워드를 읽어들여 저장하는 제 1 데이터 버퍼와, 상기 메모리로부터 제 2 워드를 읽어들여 저장하는 제 2 데이터 버퍼와, 상기 제 1 데이터 버퍼가 저장하는 제 1 워드의 주소값을 저장하는 제 1 주소 버퍼와, 상기 제 2 데이터 버퍼가 저장하는 제 2 워드의 주소값을 저장하는 제 2 주소 버퍼와, 상기 제 1 데이터 버퍼에 저장된 바이트들과 제 2 데이터 버퍼에 저장된 바이트들 중 요구된 바이트들을 조합하여 워드를 생성하여 출력하는 태그 멀티플렉서, 그리고 이들의 동작을 제어하는 비교기를 포함하는 컴퓨팅 장치.
  5. 정렬된 워드 단위로 메모리를 액세스하고 상기 메모리로부터 데이터를 읽어들여, 프로세서와 메모리 사이에 위치하는 복수의 데이터 버퍼 중 하나에 저장하는 버퍼링 단계;
    프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 구성하는 바이트들을 데이터 버퍼들에서 추출한 후 조합하여 출력하는 메모리 액세스 단계;를 포함하는 컴퓨팅 장치의 메모리 액세스 제어 방법.
  6. 제 5 항에 있어서, 상기 메모리 액세스 단계는 :
    프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 구성하는 바이트들이 데이터 버퍼들 중 어디엔가 저장되어 있는지 여부를 판단하는 버퍼 검색 단계;
    바이트들이 복수의 데이터 버퍼들 중에 저장되어 있는 경우 하나 혹은 복수의 데이터 버퍼들로부터 해당하는 바이트들을 추출한 후 조합하여 출력하는 데이터 조합 단계;
    를 포함하는 컴퓨팅 장치의 메모리 액세스 제어 방법.
  7. 제 6 항에 있어서, 상기 버퍼 검색 단계는 :
    상기 데이터 버퍼에 저장된 워드들의 주소를 요구된 데이터의 주소와 비교하여 이루어지는 컴퓨팅 장치의 메모리 액세스 제어 방법.
  8. 제 6 항에 있어서, 상기 방법이 상기 버퍼 검색 단계 이후에 :
    요구된 워드를 구성하는 바이트들 중 데이터 버퍼에 저장되어 있지 않은 바이트가 있는 경우, 그 바이트가 포함된 워드를 상기 메모리로부터 읽어들여 또다른 데이터 버퍼에 저장하는 데이터 버퍼링 단계;를 더 포함하는 컴퓨팅 장치의 메모리 액세스 제어 방법.
  9. 제 8 항에 있어서, 상기 데이터 버퍼링 단계 이후에 상기 메모리로부터 읽어들인 워드에 포함된 요구된 바이트와, 기존 데이터 버퍼에 포함된 요구된 바이트를 조합하여 요구된 워드를 구성하여 출력하는 단계를 더 포함하는 컴퓨팅 장치의 메모리 액세스 제어 방법.
  10. 제 8 항에 있어서, 요구된 워드 전체가 마지막 데이터 버퍼에 저장되어 있는 경우 해당하는 데이터 버퍼로부터 워드를 출력하고, 그 저장된 데이터를 그 직전 데이터 버퍼로 기록하는 컴퓨팅 장치의 메모리 액세스 제어 방법.
  11. 프로세서의 메모리 액세스를 제어하는 메모리 제어기에 있어서,
    프로세서와 메모리 사이에 위치하고, 정렬된 워드 단위로 메모리를 액세스하여 출력된 워드 데이터를 읽어들여 임시 저장하는 데이터 버퍼; 를 포함하고,
    상기 메모리 제어기는, 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 데이터 버퍼로부터 추출하여 출력하는 메모리 제어기.
  12. 제 11 항에 있어서, 상기 메모리 제어기가 :
    정렬된 워드 단위로 상기 메모리를 액세스하는 메모리 액세스부와;
    메모리 액세스부가 출력하는 데이터들을 임시로 저장하는 둘 이상의 데이터 버퍼들과, 상기 프로세서로부터의 비정렬된 메모리 액세스 요구에 응답하여 요구된 데이터를 상기 데이터 버퍼들로부터 추출하고 조합하여 출력하는 태그 제어기를 포함하는 태그된 버퍼(tagged buffer);를 포함하는 메모리 제어기.
  13. 제 12 항에 있어서, 상기 태그된 버퍼가 :
    메모리로부터 정렬된 워드를 읽어들여 저장하는 데이터 버퍼와, 상기 데이터 버퍼가 저장하는 워드의 주소값을 저장하는 주소 버퍼와, 상기 데이터 버퍼에 저장된 바이트들중 요구된 바이트들을 조합하여 출력하는 태그 멀티플렉서, 그리고 데이터 버퍼 및 주소 버퍼, 그리고 상기 태그 멀티플렉서를 제어하는 태그 제어기를 포함하는 메모리 제어기.
  14. 제 12 항에 있어서, 상기 태그된 버퍼가 :
    상기 메모리로부터 제 1 워드를 읽어들여 저장하는 제 1 데이터 버퍼와, 상기 메모리로부터 제 2 워드를 읽어들여 저장하는 제 2 데이터 버퍼와, 상기 제 1 데이터 버퍼가 저장하는 제 1 워드의 주소값을 저장하는 제 1 주소 버퍼와, 상기 제 2 데이터 버퍼가 저장하는 제 2 워드의 주소값을 저장하는 제 2 주소 버퍼와, 상기 제 1 데이터 버퍼에 저장된 바이트들과 제 2 데이터 버퍼에 저장된 바이트들 중 요구된 바이트들을 조합하여 워드를 생성하여 출력하는 태그 멀티플렉서, 그리고 제 1 및 제 2 데이터 버퍼와 제 1 및 제 2 주소 버퍼, 그리고 상기 태그 멀티플렉서를 제어하는 태그 제어기를 포함하는 메모리 제어기.
KR1020100013390A 2010-02-12 2010-02-12 메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치 KR101645003B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100013390A KR101645003B1 (ko) 2010-02-12 2010-02-12 메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치
US13/006,382 US8688891B2 (en) 2010-02-12 2011-01-13 Memory controller, method of controlling unaligned memory access, and computing apparatus incorporating memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100013390A KR101645003B1 (ko) 2010-02-12 2010-02-12 메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치

Publications (2)

Publication Number Publication Date
KR20110093373A KR20110093373A (ko) 2011-08-18
KR101645003B1 true KR101645003B1 (ko) 2016-08-03

Family

ID=44370428

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100013390A KR101645003B1 (ko) 2010-02-12 2010-02-12 메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치

Country Status (2)

Country Link
US (1) US8688891B2 (ko)
KR (1) KR101645003B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246407A1 (en) * 2011-03-21 2012-09-27 Hasenplaugh William C Method and system to improve unaligned cache memory accesses
WO2013058775A1 (en) 2011-10-21 2013-04-25 Soft Machines, Inc. Fast unaligned memory access
US10394724B2 (en) * 2016-08-22 2019-08-27 Qualcomm Incorporated Low power data transfer for memory subsystem using data pattern checker to determine when to suppress transfers based on specific patterns
US11182110B1 (en) * 2019-08-21 2021-11-23 Xilinx, Inc. On-chip memory block circuit

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68928507T2 (de) * 1988-06-07 1998-04-16 Fujitsu Ltd Vektordatenverarbeitungsvorrichtung
JP3215105B2 (ja) * 1990-08-24 2001-10-02 富士通株式会社 メモリアクセス装置
US5737748A (en) * 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
US5920890A (en) 1996-11-14 1999-07-06 Motorola, Inc. Distributed tag cache memory system and method for storing data in the same
JP3439350B2 (ja) * 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
KR100351504B1 (ko) 2000-06-05 2002-09-05 삼성전자 주식회사 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
US6622225B1 (en) * 2000-08-31 2003-09-16 Hewlett-Packard Development Company, L.P. System for minimizing memory bank conflicts in a computer system
US6546453B1 (en) * 2000-08-31 2003-04-08 Compaq Information Technologies Group, L.P. Proprammable DRAM address mapping mechanism
US6591349B1 (en) * 2000-08-31 2003-07-08 Hewlett-Packard Development Company, L.P. Mechanism to reorder memory read and write transactions for reduced latency and increased bandwidth
JP3732397B2 (ja) * 2000-10-05 2006-01-05 株式会社日立製作所 キャッシュシステム
US20040088472A1 (en) * 2002-10-31 2004-05-06 Nystuen John M. Multi-mode memory controller
KR100519102B1 (ko) * 2002-12-30 2005-10-05 제일모직주식회사 난연성 열가소성 수지 조성물
US7308526B2 (en) * 2004-06-02 2007-12-11 Intel Corporation Memory controller module having independent memory controllers for different memory types
US7366823B2 (en) * 2005-05-11 2008-04-29 Broadcom Corporation Method and system for memory access

Also Published As

Publication number Publication date
US8688891B2 (en) 2014-04-01
KR20110093373A (ko) 2011-08-18
US20110202704A1 (en) 2011-08-18

Similar Documents

Publication Publication Date Title
US10860326B2 (en) Multi-threaded instruction buffer design
US7209405B2 (en) Memory device and method having multiple internal data buses and memory bank interleaving
US7360024B2 (en) Multi-port integrated cache
US7301791B2 (en) Semiconductor device
US20050146944A1 (en) Memory module and method having on-board data search capabilities and processor-based system using such memory modules
CN109582214B (zh) 数据访问方法以及计算机***
US20040228166A1 (en) Buffer chip and method for actuating one or more memory arrangements
US20070055814A1 (en) Memory system and method having uni-directional data buses
KR20220116041A (ko) 이기종 메모리 시스템용 시그널링
KR101645003B1 (ko) 메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치
JP2009505180A (ja) 少なくとも2つの処理ユニットと、及び少なくとも1つのメモリとを有する計算機システム内に形成される及び記憶装置、及びそれによる記憶方法
KR20120116986A (ko) 레벨 2 메모리의 부분 및 레벨 1 메모리에 액세스하기 위한 시스템 및 방법
US9496009B2 (en) Memory with bank-conflict-resolution (BCR) module including cache
JP2016062505A (ja) メモリ制御回路および半導体記憶装置
US8495303B2 (en) Processor and computer system with buffer memory
CN114116533A (zh) 利用共享存储器存储数据的方法
JP2018049672A (ja) メモリシステムおよびプロセッサシステム
US8521951B2 (en) Content addressable memory augmented memory
KR101967857B1 (ko) 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법
CN112631960B (zh) 高速缓冲存储器的扩展方法
JP2005078647A (ja) マルチバンクメモリのスケジューリング方法
US6836828B2 (en) Instruction cache apparatus and method capable of increasing a instruction hit rate and improving instruction access efficiency
JP4769936B2 (ja) メモリコントローラを備えた情報処理システム
JP2004240520A (ja) ノンキャッシュ領域内高速メモリアクセス方法
JPH04353949A (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