[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101414453B1 - 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 - Google Patents

메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 Download PDF

Info

Publication number
KR101414453B1
KR101414453B1 KR1020140030111A KR20140030111A KR101414453B1 KR 101414453 B1 KR101414453 B1 KR 101414453B1 KR 1020140030111 A KR1020140030111 A KR 1020140030111A KR 20140030111 A KR20140030111 A KR 20140030111A KR 101414453 B1 KR101414453 B1 KR 101414453B1
Authority
KR
South Korea
Prior art keywords
memory access
bank
access request
memory
buffer unit
Prior art date
Application number
KR1020140030111A
Other languages
English (en)
Other versions
KR20140058455A (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 KR1020140030111A priority Critical patent/KR101414453B1/ko
Publication of KR20140058455A publication Critical patent/KR20140058455A/ko
Application granted granted Critical
Publication of KR101414453B1 publication Critical patent/KR101414453B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip
    • 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)
  • Dram (AREA)

Abstract

다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치가 개시된다. 메모리 접근 요청 버퍼부는 다수의 메모리 접근 요청의 입력된 순서 및 메모리 접근 요청에서 추출한 메모리 주소의 뱅크와 행 정보를 토대로 다수의 메모리 접근 요청을 입력된 순서대로 처리하되 동일 뱅크 및 동일 행에 대한 메모리 접근 요청은 연속적으로 처리되도록 메모리 접근 요청 순서를 결정하여 저장한다. 메모리 접근 요청 제어부는 메모리 접근 요청 버퍼부에서 결정된 순서대로 메모리 접근 요청을 읽어와 각 뱅크별로 메모리 접근 요청을 분배하고, 각 뱅크별로 분배된 메모리 접근 요청을 순서대로 메모리로 전달하여 실행한다. 뱅크 제어부는 뱅크별로 분배된 메모리 접근 요청을 사전에 설정된 수 이내로 각 뱅크별 버퍼부에 저장하고, 각 뱅크별 동작상태를 제어한다. 메모리 접근 요청 제어부는 각 뱅크별로 메모리 접근 요청을 분배시 상기 뱅크별 버퍼부가 비어 있는지 확인하여, 메모리 접근 요청 버퍼부에서 뒤 순서인 메모리 접근 요청이라도 비어 있는 뱅크별 버퍼부로 먼저 전달한다. 본 발명에 따르면, 다수의 메모리 접근 요청을 정렬하여 대기 시간을 줄이고 대역폭을 최대한 활용하여 전력 소모를 줄일 수 있다.

Description

메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체{Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer}
본 발명은 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체에 관한 것으로, 더욱 상세하게는, 시스템온칩(SOC) 기반의 시스템에서 메모리 접근을 요청하는 다수의 명령을 적응적으로 처리하는 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체에 관한 것이다.
전세계적인 스마트폰과 태블릿 PC 열풍은 다양한 어플리케이션 프로세서(Application Processor : AP) 개발을 유도하였고 여러 분야의 시스템온칩(System On Chip : SOC)들이 어플리케이션 프로세서와 유사한 플랫폼 구조를 갖게 하였다. 이러한 시스템온칩(System On Chip : SOC)의 특징은 내부에 여러 개의 프로세서 또는 매스터를 가지고 있고 이들이 하나의 메모리를 공유한다는 점이다. 특히 동영상이나 음악 등의 멀티미디어 데이터를 처리하고 인식, 인증 등 많은 데이터를 고속으로 처리하는 시스템은 메모리 접근에 의해 시스템 성능이 제한되는 경우가 많다. 즉 메모리가 충분한 대역폭을 제공하지 못하면 프로세서나 하드웨어 가속기 등의 매스터에서 데이터를 기다리며 성능 저하를 경험하게 된다. 대역폭만의 문제라면 고속의 메모리를 사용하거나 전용 메모리를 추가하여 해결할 수도 있으나 비용 증가와 시스템 재설계 등의 새로운 문제가 발생하는 경우가 많다. 또한 마이크로 프로세서의 일반 명령에 대한 메모리 접근 요구는 잠복기에 민감하고 멀티미디어 가속기나 마이크로프로세서의 멀티미디어 데이터에 대한 메모리 접근 요구는 대역폭 유지에 민감하여 서로 요구사항이 다르다. 이 문제를 해결하기 위해서는 메모리 접근 요구에 대한 시스템 차원의 조절이 필요한데 하나의 프로세서가 모든 매스터의 상태를 전달받아 중재하고 제어 명령을 내리는 것은 매우 비효율적이다. 또 다른 방법은 메모리 제어기에서 메모리 접근 명령을 모아 시스템 성능을 최적화하는 방향으로 조절하는 것이다. 이 경우 각 메모리 접근 명령의 특성을 알 수 있는 추가적인 정보의 전달이 필요하다.
시스템온칩(System On Chip : SOC) 내부의 데이터 전달을 위한 인터페이스 프로토콜은 ARM사의 AHB(ARM High-performance Bus)가 널리 이용되고 있다. AHB 규격이 16개까지의 매스터를 허용하고 있으나 이는 각 매스터에서 요구하는 대역폭의 합이 전체 대역폭보다 훨씬 작을 때 유효하다. 각 매스터의 요구 대역폭의 합이 네트워크가 제공하는 대역폭과 비슷해지면 매스터가 2개라도 문제가 발생한다. 인터커넥트 매트릭스(Interconnect matrix)를 이용하여 대역폭을 크게 증가시킬 수 있으나 공유 메모리에 통신이 집중되는 경우에는 거의 도움이 되지 않는다. AHB의 또 다른 문제는 정지대기(stop-and-wait) 방식의 통신으로 인해 하나의 메모리 접근 통신이 이루어지는 동안에는 다른 매스터가 메모리에 접근이 불가능하여 메모리 제어기는 요청된 메모리 접근을 하나씩 순서대로 처리할 수밖에 없으므로 메모리 접근에 대한 중재 등의 동작은 불가능하다. 슬레이브 인터페이스의 수를 늘려 한 번에 인터페이스 수만큼의 명령어를 처리할 수는 있지만 인터커넥트 매트릭스를 사용해야 하고 해당 채널을 열어둔 채로 해당 채널로 응답을 해야 하는 제한이 있어 성능 개선은 특별한 경우가 아니면 크지 않다.
ARM사의 AXI는 AHB의 문제점을 보완하여 다중 매스터 시스템에서 아웃스탠딩 어드레스(outstanding address)와 비순차 완료(out-of-order completion) 통신을 지원하고 네트워크에서 레지스터 슬라이싱을 허용하여 고속 동작이 가능하다. 따라서 하나의 메모리 접근 요청에 대해 응답을 하기 전에 다른 메모리 접근 요청이 가능하므로 메모리 제어기에서 접근 요청에 대한 중재가 가능하다. 이를 이용하여 메모리 접근에 대한 대기 사이클을 줄여 유효 대역폭을 증가시키고 우선순위를 조절하여 서비스 품질(Quality of Service : QoS) 요청에 대응이 가능하다.
이와 관련된 선행기술을 구체적으로 살펴보면, 한국공개공보 제10-2002-0040150호(발명의 명칭 : 에스디램 컨트롤러)에는 시스템온칩(System On Chip : SOC) 기술을 채용하여 메모리 컨트롤러와 각종 데이터 또는 신호처리장치 등을 SDRAM과 함께 내장하여 관련 칩 간의 데이터 전송 폭과 동작 주파수의 차이를 해결하여 데이터 전송효율을 향상시키는 컨트롤러가 개시되어 있다. 즉, 이는 에스디램에 접근하는 다중 명령어를 처리하는 방법이나 순서는 고려하지 않고 있다.
한국공개공보 제10-2001-0019127호(발명의 명칭 : 엠피씨860과 에스디알에이엠을 이용한 버스트 전송 지원 외부 버스 제어기 및 방법)"에는 MPC860과 SDRAM을 사용하는 다양한 프로세서 보드에서 프로세서 및 SDRAM, 그리고 PCI 외부 버스의 최대 성능을 제공하는 외부 버스 제어기의 구조 및 MPC860의 UPM을 제공하는 외부 버스 제어기가 개시되어 있다. 이 역시 에스디램에 접근하는 다중 명령어를 효율적으로 처리하는 본 발명과는 상이한 내용이다.
본 발명이 이루고자 하는 기술적 과제는, 다중 명령 기반 메모리 제어장치에서 다수의 메모리 접근 요청을 정렬하여 뱅크의 행을 새로이 여는 동작을 최소화하여 대기 시간을 줄이고 대역폭을 최대한 활용하는 메모리 제어장치 및 제어방법을 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 메모리 제어장치는, 다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치에 있어서, 다수의 메모리 접근 요청의 입력된 순서 및 상기 메모리 접근 요청에서 추출한 메모리 주소의 뱅크와 행 정보를 토대로 다수의 메모리 접근 요청을 입력된 순서대로 처리하되 동일 뱅크의 동일 행에 대한 메모리 접근 요청은 연속적으로 처리되도록 메모리 접근 요청 순서를 결정하여 저장하는 메모리 접근 요청 버퍼부; 상기 메모리 접근 요청 버퍼부에서 결정된 순서대로 메모리 접근 요청을 읽어와 각 뱅크별로 메모리 접근 요청을 분배하고, 각 뱅크별로 분배된 메모리 접근 요청을 순서대로 메모리로 전달하여 실행하는 메모리 접근 요청 제어부; 및 상기 뱅크별로 분배된 메모리 접근 요청을 사전에 설정된 수 이내로 각 뱅크별 버퍼부에 저장하고, 각 뱅크별 동작상태를 제어하는 뱅크 제어부;를 구비하며, 상기 메모리 접근 요청 제어부는 각 뱅크별로 메모리 접근 요청을 분배시 상기 뱅크별 버퍼부가 비어 있는지 확인하여, 상기 메모리 접근 요청 버퍼부에 의해 결정된 상기 메모리 접근 요청 순서 상 뒤 순서인 메모리 접근 요청이라도 비어 있는 뱅크별 버퍼부로 먼저 전달한다.
상기의 다른 기술적 과제를 달성하기 위한, 본 발명에 따른 메모리 제어방법은, 다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치에 의해 수행되는 메모리 제어방법에 있어서, (a) 메모리 접근 요청 제어부는 메모리 접근 요청 버퍼부로부터 다수의 메모리 접근 요청을 순서대로 읽어오는 단계; (b) 상기 메모리 접근 요청 제어부는 n번째 메모리 접근 요청에서 추출한 메모리 주소에 대응하는 제1뱅크 정보를 기준으로 제1뱅크 버퍼부가 비어있는지 확인하는 단계; (c) 상기 제1뱅크 버퍼부가 비어 있으면 상기 n번째 메모리 접근 요청을 상기 제1뱅크 버퍼부로 전달하고, 상기 제1뱅크 버퍼부가 비어 있지 않으면 상기 n번째 메모리 접근 요청 이후 순서의 메모리 접근 요청 중 메모리 주소의 뱅크 정보가 제2뱅크인 메모리 접근 요청을 읽어오는 단계; (d)제2뱅크 버퍼부가 비어 있는지 확인하여, 상기 제2뱅크 버퍼부가 비어 있으면 상기 메모리 주소의 뱅크 정보가 제2뱅크인 메모리 접근 요청을 상기 제2뱅크 버퍼부로 전달하는 단계; 및 (e) 상기 메모리 접근 요청이 각 뱅크별 버퍼부로 전달되는 순서를 저장하여 뱅크 제어부의 명령을 차례대로 메모리로 전달하는 단계;를 가지며, 상기 (e) 단계는, (e1) 상기 각 뱅크별 버퍼부에 저장되어 있는 다수의 메모리 접근 요청을 입력된 순서에 따라 첫 번째 메모리 접근 명령을 메모리로 전달하고, 상기 첫 번째 메모리 접근 요청의 다음 순서로 입력된 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 메모리 주소가 동일 뱅크의 동일 행인지 확인하는 단계; 및 (e2) 상기 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 동일 뱅크의 동일 행이면 상기 두 번째 메모리 접근 명령을 연속적으로 상기 메모리로 전달하고, 상기 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 동일 뱅크의 다른 행이면 새로운 행을 열기 위해 발생한 대기 사이클 동안 상기 제2뱅크 버퍼부에 저장되어 있는 다수의 메모리 접근 요청에 대해 입력된 순서에 따라 생성된 명령을 메모리로 전달하는 단계;를 갖는다.
본 발명에 따른 메모리 제어장치 및 제어방법에 의하면, 다수의 메모리 접근 요청을 정렬하여 대기 시간을 줄이고 대역폭을 최대한 활용할 수 있다. 즉, 메모리 접근을 요청하는 명령을 저장부에 저장하고 명령을 분석하여 뱅크의 행을 새로이 여는 동작을 최소화하여 메모리 접근에서 새로운 행 열기에 따른 잠복기를 줄이고 대역폭을 증가시키며 전력 소모를 줄일 수 있다. 또한, 메모리 접근 요청의 우선 순위에 따른 처리도 가능하다.
도 1은 본 발명에 따른 메모리 제어장치와 메모리의 관계를 도시한 블록도,
도 2는 본 발명에 따른 메모리 제어장치의 상세한 구성을 도시한 블록도,
도 3은 본 발명의 제1실시예에 따른 메모리 제어방법을 도시한 흐름도,
도 4는 본 발명의 제2실시예에 따른 메모리 제어방법을 도시한 흐름도,
도 5은 본 발명에 따른 메모리 제어장치를 사용한 시뮬레이션 환경을 도시한 도면,
도 6은 본 발명에 따른 메모리 제어장치에 대한 시뮬레이션 결과 쓰기 동작에 대한 데이터 패턴을 도시한 도면,
도 7은 쓰기 패턴 1, 2, 3의 요청에 대한 시뮬레이션 결과를 도시한 그래프,
도 8은 본 발명에 따른 메모리 제어장치에 대한 시뮬레이션 결과 읽기 동작에 대한 데이터 패턴을 도시한 도면,
도 9는 읽기 패턴 4, 5, 6의 요청에 대한 시뮬레이션 결과를 도시한 그래프,
도 10은 본 발명에 따른 메모리 제어장치에 대한 시뮬레이션 결과 같은 행에 대해 쓰기 후 읽기 및 읽기 후 쓰기에 따른 연산 사이클의 차이를 비교한 도면,
도 11은 데이터 패턴 7, 8의 요청에 대한 연산 사이클을 비교한 그래프,
도 12는 각각 FIR 필터와 H.264 복호기에서 추출한 데이터 패턴을 도시한 도면, 그리고,
도 13은 FIR 필터와 H.264 복호기의 데이터 패턴에 대한 동작 연산 사이클을 비교한 그래프이다.
이하에서 첨부의 도면들을 참조하여 본 발명에 따른 메모리 제어장치 및 제어방법의 바람직한 실시예에 대해 상세하게 설명한다.
도 1은 본 발명에 따른 메모리 제어장치(100)와 메모리(110)의 관계를 도시한 블록도이고, 도 2는 본 발명에 따른 메모리 제어장치(100)의 상세한 구성을 도시한 블록도이다.
도 1 및 도 2를 참조하면, 본 발명에 따른 메모리 제어장치(100)는 메모리 접근 요청 버퍼부(210), 메모리 접근 요청 제어부(220), 뱅크 제어부(230) 및 각 뱅크별 버퍼부(231, 232, 233, 234)로 이루어진다.
메모리 접근 요청 버퍼부(210)는 다수의 메모리 접근 요청의 입력된 순서 및 메모리 접근 요청에서 추출한 메모리 주소(뱅크 및 행 정보)를 토대로 메모리 접근 요청 순서를 결정하여 저장한다. 이때, 다수의 메모리 접근 요청을 입력된 순서대로 처리하되 동일 뱅크 및 동일 행에 대한 메모리 접근 요청은 연속적으로 처리되도록 메모리 접근 요청 순서를 결정할 수 있다. 즉, 레지스터 파일 구조에 각 레지스터별로 데이터의 유효성을 결정하는 플래그와 실행 순서를 계산하여 저장하는 기능의 레지스터가 연결된다. 따라서 메모리 접근 요청이 정렬될 때, 데이터가 실제로 움직이지 않고 실행 순서 장치 값이 변하면서 실행 순서가 변경된다.
메모리 접근 요청 제어부(220)는 메모리 접근 요청 버퍼부(210)로부터 순서대로 메모리 접근 요청을 읽어와 각 뱅크별로 메모리 접근 요청을 분배하고, 각 뱅크별로 분배된 메모리 접근 요청을 순서대로 메모리로 전달하여 실행한다.
메모리 접근 요청 제어부(220)는 각 뱅크별로 메모리 접근 요청을 분배할 때, 뱅크별 버퍼부(231, 232, 233, 234)가 비어있는지 확인하여 비어있는 뱅크별 버퍼부(231, 232, 233, 234)로 먼저 메모리 접근 요청이 전달될 수 있도록 한다. 예를 들어, 뱅크별 버퍼부(231, 232, 233, 234) 중 하나인 제1뱅크 버퍼부(231)가 사전에 설정된 수(예를 들어, 저장가능한 메모리 접근 요청의 수 = 5)만큼 5개의 메모리 접근 요청이 채워지면, 제1뱅크를 접근하는 메모리 접근 요청은 더 이상 저장될 수 없으므로 제1뱅크와 다른 뱅크를 접근하는 메모리 접근 요청을 검색한다. 예를 들어, 제1뱅크와 다른 뱅크가 제2뱅크라고 하면, 제2뱅크 버퍼부(232) 역시 사전에 설정된 수만큼 메모리 접근 요청이 채워져 있는지 확인하여, 만약 비어있다면 제2뱅크 버퍼부(232)로 제2뱅크를 접근하고자 하는 메모리 접근 요청을 전달하게 된다. 이때, 메모리 접근 요청 제어부(220)는 메모리 접근 요청 정보를 어느 뱅크로 전달했는지 저장하여 뱅크 제어부(230)에서 메모리 접근 명령을 받아 메모리로 전달할 때 우선순위에 따라 뱅크 제어부(230)를 선택하여 해당 메모리 접근 명령을 실행한다.
또한, 메모리 접근 요청 제어부(220)는 현재 처리대상 메모리 접근 요청의 메모리 주소가 현재 처리대상 메모리 접근 요청 이전에 읽어온 메모리 접근 요청과 동일 뱅크의 다른 행이면 현재 처리대상 메모리 접근 요청 이후 순서에 해당하는 메모리 접근 요청의 메모리 주소를 분석하여 다른 뱅크에 접근하는 메모리 접근 요청을 현재 처리대상 메모리 접근 요청보다 먼저 뱅크 제어부(230)로 전달한다. 현재 접근 중인 뱅크에서 행이 바뀌면 대기 사이클이 발생하므로 해당 접근 요청 중 발생한 대기 사이클에 다음 순서의 뱅크에 대한 접근 요청을 실행하여 대기 사이클을 줄이는 것이다.
즉, 현재 처리대상 메모리 접근 요청이 제1뱅크의 2번행의 주소를 접근하고, 현재 처리대상 메모리 접근 요청 이전에 읽어온 메모리 접근 요청이 제1뱅크의 1번행의 주소를 접근하는 경우라면, 현재 처리대상 메모리 접근 요청 이후 순서에 해당하는 메모리 접근 요청 중 제1뱅크와 다른 뱅크인 제2뱅크에 접근하는 메모리 접근 요청을 검색하여, 제2뱅크에 접근하는 메모리 접근 요청을 현재 처리대상 메모리 접근 요청 과정에서 발생한 대기 사이클 중에 메모리(110)로 전달하여 먼저 처리하도록 한다. 다만, 이 경우 역시 각 뱅크별 버퍼부(231, 232, 233, 234)에 메모리 접근 요청을 저장되어야 한다. 다른 모든 뱅크의 버퍼부가 비어 있다면 제1뱅크의 1번행 접근 요청이 그대로 실행된다. 이는 대기 사이클이 발생할 때마다 다른 뱅크의 대기중인 명령어가 실행되어 대기 사이클을 줄이는 효과가 발생한다. 따라서 별도의 정렬을 위한 연산이 필요하지 않고 뱅크별 요청 배분 과정에서 자연스럽게 정렬이 이루어지므로 하드웨어 구현에 유리하다. 이를 통해 메모리 접근 요청 버퍼부(210)의 메모리 접근 요청 순서 정렬에 따른 연산 부하를 줄일 수 있다. 또한, 메모리 접근 요청 제어부(220)는 메모리(110) 초기화, 리프레쉬(REFRESH) 그리고 절전 모드(Power Down)로 진입하고 나오는 것을 제어한다.
뱅크 제어부(230)는 뱅크별로 분배된 메모리 접근 요청을 사전에 설정된 수 이내로 각 뱅크별 버퍼부(231, 232, 233, 234)에 저장하고, 각 뱅크별 동작 상태를 제어한다. 즉, 각 뱅크별 버퍼부(231, 232, 233, 234)는 접근하고자 하는 메모리의 주소에 따라 하나 이상의 메모리 접근 요청을 각 뱅크별로 저장하며, 메모리 접근 요청 제어부(220)의 제어신호에 따라 메모리(110)로 메모리 접근 명령을 보내 다수 메모리 접근 요청의 실행 순서를 적응적으로 결정하게 된다. 단, 뱅크 제어부(230)에 각 뱅크별 버퍼부가 존재하지 않을 수도 있으며 이 경우 뱅크별 버퍼부에 메모리 접근 요청이 저장되는 과정 없이 뱅크 제어부(230)의 제어신호에 따라 순서대로 메모리 접근 명령을 메모리(110)로 전달할 수 있다.
도 3은 본 발명의 제1실시예에 따른 메모리 제어방법을 도시한 흐름도이다.
도 3을 참조하면, 메모리 접근 요청 제어부(220)는 메모리 접근 요청 버퍼부(210)로부터 다수의 메모리 접근 요청을 순서대로 읽어온다(S310). 메모리 접근 요청 제어부(220)는 읽어온 메모리 접근 요청에서 추출한 메모리 주소에 대응하는 뱅크 정보(제1뱅크)를 기준으로 제1뱅크의 버퍼부(231)가 비어 있는지 확인한다(S320). 확인한 결과 제1뱅크의 버퍼부(231)가 비어 있다면(S320), 제1뱅크의 버퍼부(231)로 입력된 메모리 접근 요청을 전달한다(S330). 반면, 확인 결과 제1뱅크의 버퍼부(231)가 가득 차 있다면(S320), 읽어온 메모리 접근 요청 이후에 입력된 요청 중 메모리 주소의 뱅크 정보가 상기 뱅크와 다른 뱅크(제2뱅크)를 가진 메모리 접근 요청을 검색하여, 다른 뱅크(제2뱅크)의 버퍼부(232)가 비어 있다면 비어 있는 다른 뱅크(제2뱅크)의 버퍼부(232)로 다른 뱅크(제2뱅크)를 가진 메모리 접근 요청을 전달하게 된다(S340). 상술한 바와 같이 메모리 접근 요청이 각 뱅크별 버퍼부(231, 232)에 전달되는 순서를 저장하여 뱅크 제어부(230)의 명령을 차례대로 메모리로 전달하게 되는 것이다.
도 4는 본 발명의 제2실시예에 따른 메모리 제어방법을 도시한 흐름도이다.
도 4를 참조하면, 메모리 접근 요청 제어부(220)는 제1뱅크 버퍼부(231)에 저장되어 있는 다수의 메모리 접근 요청을 입력된 순서에 따라 처음 메모리 접근 명령을 메모리(110)로 전달한다(S410). 메모리 접근 요청 제어부(220)는 제1뱅크 버퍼부(231)에 저장되어 있는 다음 메모리 접근 요청이 처음 메모리 접근 요청과 동일한 행인지 확인한다(S420). 확인 결과 동일한 행이면 다음 메모리 접근 명령을 연속적으로 메모리(110)로 전달하게 된다(S440). 그러나 확인 결과 동일한 행이 아닌 경우, 행을 바꾸기 위한 프리차지(PRECHARGE)와 액티브(ACTIVE) 명령이 발생하고 이러한 명령은 대기 사이클을 유발한다. 행을 바꾸면서 발생하는 대기 사이클 동안 제2뱅크 버퍼부(232)에 저장되어 있는 다수의 메모리 접근 요청에 대해 입력된 순서에 따라 생성된 명령을 메모리(110)로 전달한다(S430).
본 발명에 따른 메모리 제어장치(100)는 에스디램(SDRAM) 계열의 메모리에 적용하였을 때 효과가 클 것으로 기대되며, 이는 온칩네트워크에 따라 성능이 달라지므로 네트워크 인터페이스 없이 시뮬레이션을 통해 비교 분석하였다. 도 5는 메모리 제어장치(100)를 사용한 시뮬레이션 환경을 보여준다. 메모리 접근 요청 생성부(500)에서는 시뮬레이션에 사용될 요청 동작을 만들어 메모리 제어장치(100)로 요청하고, 메모리 제어장치(100)는 요청을 확인하고 시뮬레이션 모델(510)을 구동시킨다. 사용된 시뮬레이션 모델(510)은 Micron사의 MT48LC4M32B2를 사용했고, CAS Latency(CL)는 3 사이클, 버스트 길이 4, tRCD=2, tRP=3인 경우를 적용했다.
도 6은 메모리 제어장치에 대한 시뮬레이션 결과, 쓰기 동작에 대한 데이터 패턴을 보여준다. 각 패턴에서 1, 2, 3, 4의 오름차순으로 데이터를 쓰고 있다. 예를 들어, 패턴 1은 뱅크0-뱅크1-뱅크0-뱅크1의 순으로 쓰기 동작을 실행한다. 1번의 쓰기 동작은 4 버스트 쓰기를 의미한다. 패턴 2와 3은 각각 3개와 4개의 뱅크에 대해 차례대로 4 버스트의 쓰기 동작을 2번 반복하는 것이다. 동작 1, 2, 3에서의 차이점은 뱅크를 각각 2개, 3개 그리고 4개를 사용한다는 점이다. 도 7은 쓰기 패턴 1, 2, 3의 요청에 대한 시뮬레이션 결과를 도시한 그래프이다. 패턴이 동일한 경우 연산 사이클이 동일함을 볼 수 있는데 이는 쓰기 동작에서는 쓰기 데이터를 저장하는 버퍼(FIFO)에 데이터가 들어가는 것을 완료 동작으로 보기 때문이다. 따라서 쓰기 데이터를 저장하는 버퍼(FIFO)에 빈 공간이 있으면 쓰기 동작이 계속 가능하므로 동작 사이클이 동일하다.
도 8은 메모리 제어장치에 대한 시뮬레이션 결과, 읽기 동작에 대한 데이터 패턴을 보여준다. 쓰기에서 읽기로 바뀐 것 외에는 쓰기 동작과 동일한 패턴이다. 쓰기 요청의 경우에는 쓰기 데이터를 저장하는 버퍼(FIFO)에 데이터가 들어가면 통신이 완료된 것으로 보았지만, 읽기 요청의 경우는 읽기 요청이 입력되고 읽은 데이터가 메모리 제어장치(100)를 통해 출력으로 나오는 시점까지를 계산하게 되므로 쓰기 동작과는 연산 사이클이 다를 것임을 예상할 수 있다.
도 9는 읽기 패턴 4, 5, 6의 요청에 대한 시뮬레이션 결과를 도시한 그래프이다. 읽기의 경우에는 다중 명령어 처리와 단일 명령어의 처리가 연산 사이클에서 확연한 차이가 나는 것을 볼 수 있다. 연산 사이클의 차이는 요청의 수가 많을수록 더 크게 되는데 이는 본 발명과 같은 다중 명령 기반 제어장치의 경우 읽기 요청이 미리 대기하고 있다가 이전 요청의 마지막 명령이 나가면 바로 이어서 다음 명령어를 내 보낼 수 있는 반면에, 단일 명령 기반 제어장치의 경우에는 읽기 데이터가 메모리 제어장치 인터페이스로 모두 빠져나간 직후 다음 요청을 하기 때문에 메모리 제어장치는 마지막 명령을 내보낸 이후 다음 요청이 반영되기 전까지 아무런 작업도 하고 있지 않기 때문이다. 그리고 이러한 대기 사이클은 요청 개수가 늘어나면서 점점 누적이 되어 차이가 더 크게 벌어진다. 본 발명에서 패턴 5와 패턴 6의 차이는 8 사이클로서, 이는 패턴 5와 6에서 요구하는 데이터의 수 차이인 8개와 일치한다. 여기에서 뱅크가 3개 이상 순환하는 구조를 가질 때는 액티브(ACTIVE)와 프리차지(PRECHARGE)에 의한 대기 사이클이 "0"이 된다는 것을 알 수 있다. 뱅크가 2개 사용될 경우 하나의 뱅크에 대한 접근 시간이 다른 뱅크가 액티브(ACTIVE) 또는 프리차지(PRECHARGE) 동작을 하는 시간보다 크거나 같다면 이 경우 또한 대기 사이클은 "0"이 된다. 패턴 6에서는 본 발명이 단일 명령 기반 제어장치 대비 30%의 연산 사이클만 사용하여 동작을 완료했음을 알 수 있다.
도 10은 같은 행에 대해 쓰기 후 읽기 및 읽기 후 쓰기에 따른 연산 사이클의 차이를 비교한 도면이다. 도 11은 데이터 패턴 7, 8에 대한 연산 사이클을 비교한 그래프이다. 도 11을 참조하면, 쓰기 후 읽기 요청을 한 패턴 7의 경우에는 쓰기 데이터가 쓰기 버퍼(FIFO)에 저장되면 메모리 접근 요청 생성부(500)에서 읽기 요청이 가능하여 메모리 제어장치가 메모리에 쓰기 동작을 처리하는 동안 읽기 요청이 메모리 제어장치에 입력 가능하여 본 발명과 단일 명령 기반 제어장치에서 차이를 보이지 않는 것을 알 수 있다. 그러나 읽기 후 쓰기 요청을 한 패턴 8의 경우에는 본 발명은 쓰기 후 읽기와 동일한 사이클로 연산이 완료되는 것에 반해, 단일 명령 기반 제어장치는 읽기 동작이 완료될 때까지 쓰기 요청을 하지 못해 대기 사이클에 의한 성능 저하를 볼 수 있다. 패턴 8에서는 본 발명이 단일 명령 기반 제어장치 대비 약 58%의 연산 사이클만으로 요청을 완료했다.
도 12는 각각 FIR 필터와 H.264 복호기에서 추출한 데이터 패턴을 도시한 도면이다. 이는 실제 시스템에서 성능 차이를 분석하기 위해 FIR 필터와 H.264 복호기의 데이터 패턴에 대한 성능의 차이를 분석한 것이다. 도 13의 결과에서 보듯이, FIR 필터와 H.264 복호기의 데이터 패턴에 대해 각각 본 발명이 단일 명령 기반 제어장치 대비 52%와 40%정도의 동작 사이클만 사용하여 요청을 완료하는 것을 볼 수 있다. 이는 본 발명에 따른 메모리 제어장치가 실제 응용 시스템에서 시스템 성능 개선에 크게 기여할 수 있음을 보여주고 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 유무선 통신망으로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.
100 : 메모리 제어장치 110 : 메모리
210 : 메모리 접근 요청 버퍼부 220 : 메모리 접근 요청 제어부
230 : 뱅크 제어부 231 : 제1뱅크 버퍼부
232 : 제2뱅크 버퍼부 233 : 제3뱅크 버퍼부
234 : 제4뱅크 버퍼부

Claims (8)

  1. 다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치에 있어서,
    다수의 메모리 접근 요청의 입력된 순서 및 상기 메모리 접근 요청에서 추출한 메모리 주소의 뱅크와 행 정보를 토대로 다수의 메모리 접근 요청을 입력된 순서대로 처리하되 동일 뱅크의 동일 행에 대한 메모리 접근 요청은 연속적으로 처리되도록 메모리 접근 요청 순서를 결정하여 저장하는 메모리 접근 요청 버퍼부;
    상기 메모리 접근 요청 버퍼부에서 결정된 순서대로 메모리 접근 요청을 읽어와 각 뱅크별로 메모리 접근 요청을 분배하고, 각 뱅크별로 분배된 메모리 접근 요청을 순서대로 메모리로 전달하여 실행하는 메모리 접근 요청 제어부; 및
    상기 뱅크별로 분배된 메모리 접근 요청을 사전에 설정된 수 이내로 각 뱅크별 버퍼부에 저장하고, 각 뱅크별 동작상태를 제어하는 뱅크 제어부;를 포함하며,
    상기 메모리 접근 요청 제어부는 각 뱅크별로 메모리 접근 요청을 분배시 상기 뱅크별 버퍼부가 비어 있는지 확인하여, 상기 메모리 접근 요청 버퍼부에 의해 결정된 상기 메모리 접근 요청 순서 상 뒤 순서인 메모리 접근 요청이라도 비어 있는 뱅크별 버퍼부로 먼저 전달하는 것을 특징으로 하는 메모리 제어장치.
  2. 제 1항에 있어서,
    상기 메모리 접근 요청 제어부는 상기 뱅크별 버퍼부 중 하나인 제1뱅크 버퍼부가 사전에 설정된 수만큼 메모리 접근 요청이 채워지면, 다른 제2뱅크를 접근하는 메모리 접근 요청을 검색하여 비어있는 제2뱅크 버퍼부로 상기 제2뱅크를 접근하는 메모리 접근 요청을 전달하는 것을 특징으로 하는 메모리 제어장치.
  3. 제 1항에 있어서,
    상기 메모리 접근 요청 제어부는 현재 처리대상 메모리 접근 요청의 메모리 주소가 상기 현재 처리대상 메모리 접근 요청 이전에 읽어온 메모리 접근 요청과 동일 뱅크, 다른 행이면 새로운 행을 열기 위해 발생한 대기 사이클 동안 상기 현재 처리대상 메모리 접근 요청 이후 순서에 해당하는 상기 뱅크와 다른 뱅크에 접근하는 메모리 접근 요청을 상기 현재 처리대상 메모리 접근 요청보다 먼저 메모리로 전달하는 것을 특징으로 하는 메모리 제어장치.
  4. 제 1항에 있어서,
    상기 메모리 접근 요청 제어부는 각 뱅크별로 분배된 메모리 접근 요청을 상기 뱅크별 버퍼부로 전달하고, 상기 뱅크 제어부의 제어신호에 따라 상기 메모리로 메모리 접근 명령을 전달하는 것을 특징으로 하는 메모리 제어장치.
  5. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 메모리는 에스디램(SDRAM)인 것을 특징으로 하는 메모리 제어장치.
  6. 다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치에 의해 수행되는 메모리 제어방법에 있어서,
    (a) 메모리 접근 요청 제어부는 메모리 접근 요청 버퍼부로부터 다수의 메모리 접근 요청을 순서대로 읽어오는 단계;
    (b) 상기 메모리 접근 요청 제어부는 n번째 메모리 접근 요청에서 추출한 메모리 주소에 대응하는 제1뱅크 정보를 기준으로 제1뱅크 버퍼부가 비어있는지 확인하는 단계;
    (c) 상기 제1뱅크 버퍼부가 비어 있으면 상기 n번째 메모리 접근 요청을 상기 제1뱅크 버퍼부로 전달하고, 상기 제1뱅크 버퍼부가 비어 있지 않으면 상기 n번째 메모리 접근 요청 이후 순서의 메모리 접근 요청 중 메모리 주소의 뱅크 정보가 제2뱅크인 메모리 접근 요청을 읽어오는 단계;
    (d)제2뱅크 버퍼부가 비어 있는지 확인하여, 상기 제2뱅크 버퍼부가 비어 있으면 상기 메모리 주소의 뱅크 정보가 제2뱅크인 메모리 접근 요청을 상기 제2뱅크 버퍼부로 전달하는 단계; 및
    (e) 상기 메모리 접근 요청이 각 뱅크별 버퍼부로 전달되는 순서를 저장하여 뱅크 제어부의 명령을 차례대로 메모리로 전달하는 단계;를 포함하며,
    상기 (e) 단계는,
    (e1) 상기 각 뱅크별 버퍼부에 저장되어 있는 다수의 메모리 접근 요청을 입력된 순서에 따라 첫 번째 메모리 접근 명령을 메모리로 전달하고, 상기 첫 번째 메모리 접근 요청의 다음 순서로 입력된 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 메모리 주소가 동일 뱅크의 동일 행인지 확인하는 단계; 및
    (e2) 상기 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 동일 뱅크의 동일 행이면 상기 두 번째 메모리 접근 명령을 연속적으로 상기 메모리로 전달하고, 상기 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 동일 뱅크의 다른 행이면 새로운 행을 열기 위해 발생한 대기 사이클 동안 상기 제2뱅크 버퍼부에 저장되어 있는 다수의 메모리 접근 요청에 대해 입력된 순서에 따라 생성된 명령을 메모리로 전달하는 단계;를 포함하는 것을 특징으로 하는 메모리 제어방법.
  7. 제 6항에 있어서,
    상기 메모리는 에스디램(SDRAM)인 것을 특징으로 하는 메모리 제어방법.
  8. 제 6항 또는 제 7항에 기재된 메모리 제어방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020140030111A 2014-03-14 2014-03-14 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 KR101414453B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140030111A KR101414453B1 (ko) 2014-03-14 2014-03-14 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140030111A KR101414453B1 (ko) 2014-03-14 2014-03-14 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020110132579A Division KR20130065957A (ko) 2011-12-12 2011-12-12 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체

Publications (2)

Publication Number Publication Date
KR20140058455A KR20140058455A (ko) 2014-05-14
KR101414453B1 true KR101414453B1 (ko) 2014-07-03

Family

ID=50888767

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140030111A KR101414453B1 (ko) 2014-03-14 2014-03-14 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체

Country Status (1)

Country Link
KR (1) KR101414453B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921780B2 (en) 2015-11-23 2018-03-20 SK Hynix Inc. Memory system and operating method thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172552A (ja) 1998-12-10 2000-06-23 Nec Kofu Ltd メモリアクセス装置及びそのアクセス方法
KR20090020928A (ko) * 2007-08-24 2009-02-27 삼성전자주식회사 복수개의 뱅크들을 동시에 프로그램할 수 있는 반도체메모리 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172552A (ja) 1998-12-10 2000-06-23 Nec Kofu Ltd メモリアクセス装置及びそのアクセス方法
KR20090020928A (ko) * 2007-08-24 2009-02-27 삼성전자주식회사 복수개의 뱅크들을 동시에 프로그램할 수 있는 반도체메모리 장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921780B2 (en) 2015-11-23 2018-03-20 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
KR20140058455A (ko) 2014-05-14

Similar Documents

Publication Publication Date Title
KR20130065957A (ko) 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
JP4926963B2 (ja) 多重メモリアクセスレイテンシ時間をサポートするコンピュータメモリシステムにおける性能を改善するためのシステムおよび方法
KR101312281B1 (ko) 프로세서 및 메모리 제어 방법
US7287101B2 (en) Direct memory access using memory descriptor list
US7321950B2 (en) Method and apparatus for managing write-to-read turnarounds in an early read after write memory system
CN111742305A (zh) 调度具有不统一等待时间的存储器请求
US8412870B2 (en) Optimized arbiter using multi-level arbitration
CN1961300A (zh) 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法
JP2009508247A (ja) バス調停に関する方法及びシステム
JP2015500541A (ja) メモリ応答の順序付けのためのメモリ装置、コンピュータシステムおよび方法
JP2014508361A (ja) メモリ・インターフェース
CN111684430A (zh) 支持同一信道上对不统一等待时间的存储器类型的响应
WO2016078307A1 (zh) 可配置片上互联系统及其实现方法、装置和存储介质
KR101292309B1 (ko) 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
US20030056075A1 (en) Shared memory array
US8667199B2 (en) Data processing apparatus and method for performing multi-cycle arbitration
JP5911548B1 (ja) 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム
US7913013B2 (en) Semiconductor integrated circuit
KR101414453B1 (ko) 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
KR102334473B1 (ko) 적응형 딥러닝 가속 장치 및 방법
CN104572519A (zh) 一种用于多处理器的多端口访存控制器及其控制方法
KR20220114449A (ko) 메모리 컨트롤러 및 메모리 제어 방법
KR20230059536A (ko) 프로세스 스케줄링 방법 및 장치
EP1704487B1 (en) Dmac issue mechanism via streaming id method
KR20070020391A (ko) 스트리밍 id 방법에 의한 dmac 발행 메커니즘

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170410

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180409

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 6

R401 Registration of restoration