KR20140058455A - Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer - Google Patents

Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer Download PDF

Info

Publication number
KR20140058455A
KR20140058455A KR1020140030111A KR20140030111A KR20140058455A KR 20140058455 A KR20140058455 A KR 20140058455A KR 1020140030111 A KR1020140030111 A KR 1020140030111A KR 20140030111 A KR20140030111 A KR 20140030111A KR 20140058455 A KR20140058455 A KR 20140058455A
Authority
KR
South Korea
Prior art keywords
memory access
bank
access request
memory
buffer unit
Prior art date
Application number
KR1020140030111A
Other languages
Korean (ko)
Other versions
KR101414453B1 (en
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/en
Publication of KR20140058455A publication Critical patent/KR20140058455A/en
Application granted granted Critical
Publication of KR101414453B1 publication Critical patent/KR101414453B1/en

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

A memory control apparatus for adaptively determining the order of execution of multiple memory access requests is disclosed. A memory access request buffer unit processes multiple memory access requests in an input order thereof, based on the input order and the bank and row information of memory addresses extracted from the memory access requests, but determines and stores a memory access request order such that memory access requests for the same bank and the same row are consecutively processed. A memory access request controller reads the memory access requests in the order determined by the memory access request buffer unit, distributes the memory access requests to banks, transmits, to a memory, the memory access requests distributed to the banks in order, and executes the memory access requests. A bank controller stores the memory access requests distributed to the banks in a buffer unit for each bank within a preset number, and controls an operational status for each bank. The memory access request controller checks whether the buffer unit for each bank is empty when distributing the memory access requests to the banks, and first transmits, to an empty buffer unit for each bank, even a memory access request which is in a back order in the memory access request buffer unit. According to the present invention, waiting times can be reduced by arranging multiple memory access requests, and power consumption can be reduced by making the best use of bandwidth.

Description

메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체{Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer}BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a memory control device, a control method, and a recording medium storing a program for causing a computer to execute the method.

본 발명은 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체에 관한 것으로, 더욱 상세하게는, 시스템온칩(SOC) 기반의 시스템에서 메모리 접근을 요청하는 다수의 명령을 적응적으로 처리하는 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체에 관한 것이다. BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a memory control device, a control method, and a recording medium storing a program for executing the method in a computer, and more particularly, And a recording medium on which a program for causing the computer to execute the method is recorded.

전세계적인 스마트폰과 태블릿 PC 열풍은 다양한 어플리케이션 프로세서(Application Processor : AP) 개발을 유도하였고 여러 분야의 시스템온칩(System On Chip : SOC)들이 어플리케이션 프로세서와 유사한 플랫폼 구조를 갖게 하였다. 이러한 시스템온칩(System On Chip : SOC)의 특징은 내부에 여러 개의 프로세서 또는 매스터를 가지고 있고 이들이 하나의 메모리를 공유한다는 점이다. 특히 동영상이나 음악 등의 멀티미디어 데이터를 처리하고 인식, 인증 등 많은 데이터를 고속으로 처리하는 시스템은 메모리 접근에 의해 시스템 성능이 제한되는 경우가 많다. 즉 메모리가 충분한 대역폭을 제공하지 못하면 프로세서나 하드웨어 가속기 등의 매스터에서 데이터를 기다리며 성능 저하를 경험하게 된다. 대역폭만의 문제라면 고속의 메모리를 사용하거나 전용 메모리를 추가하여 해결할 수도 있으나 비용 증가와 시스템 재설계 등의 새로운 문제가 발생하는 경우가 많다. 또한 마이크로 프로세서의 일반 명령에 대한 메모리 접근 요구는 잠복기에 민감하고 멀티미디어 가속기나 마이크로프로세서의 멀티미디어 데이터에 대한 메모리 접근 요구는 대역폭 유지에 민감하여 서로 요구사항이 다르다. 이 문제를 해결하기 위해서는 메모리 접근 요구에 대한 시스템 차원의 조절이 필요한데 하나의 프로세서가 모든 매스터의 상태를 전달받아 중재하고 제어 명령을 내리는 것은 매우 비효율적이다. 또 다른 방법은 메모리 제어기에서 메모리 접근 명령을 모아 시스템 성능을 최적화하는 방향으로 조절하는 것이다. 이 경우 각 메모리 접근 명령의 특성을 알 수 있는 추가적인 정보의 전달이 필요하다. The global smartphone and tablet PC craze has led to the development of a variety of application processors (APs), and system-on-chip (SOC) in many areas has a platform structure similar to the application processor. A feature of the system on chip (SOC) is that it has several processors or masters in it and they share one memory. In particular, a system that processes multimedia data such as video and music, and processes many data at high speed such as recognition and authentication, often has limited system performance due to memory access. In other words, if the memory does not provide sufficient bandwidth, it will experience performance degradation by waiting for data in the master, such as a processor or a hardware accelerator. If bandwidth is the only problem, it can be solved by using high-speed memory or by adding dedicated memory, but there are many new problems such as cost increase and system redesign. In addition, memory access requests for general instructions of a microprocessor are sensitive to latency, and memory access requests for multimedia data of multimedia accelerators or microprocessors are sensitive to bandwidth maintenance requirements. To solve this problem, it is necessary to make system-level control of memory access request. It is very inefficient for one processor to intercept and control commands of all masters. Another approach is to gather memory access instructions from the memory controller and adjust them to optimize system performance. In this case, it is necessary to transmit additional information to know the characteristics of each memory access command.

시스템온칩(System On Chip : SOC) 내부의 데이터 전달을 위한 인터페이스 프로토콜은 ARM사의 AHB(ARM High-performance Bus)가 널리 이용되고 있다. AHB 규격이 16개까지의 매스터를 허용하고 있으나 이는 각 매스터에서 요구하는 대역폭의 합이 전체 대역폭보다 훨씬 작을 때 유효하다. 각 매스터의 요구 대역폭의 합이 네트워크가 제공하는 대역폭과 비슷해지면 매스터가 2개라도 문제가 발생한다. 인터커넥트 매트릭스(Interconnect matrix)를 이용하여 대역폭을 크게 증가시킬 수 있으나 공유 메모리에 통신이 집중되는 경우에는 거의 도움이 되지 않는다. AHB의 또 다른 문제는 정지대기(stop-and-wait) 방식의 통신으로 인해 하나의 메모리 접근 통신이 이루어지는 동안에는 다른 매스터가 메모리에 접근이 불가능하여 메모리 제어기는 요청된 메모리 접근을 하나씩 순서대로 처리할 수밖에 없으므로 메모리 접근에 대한 중재 등의 동작은 불가능하다. 슬레이브 인터페이스의 수를 늘려 한 번에 인터페이스 수만큼의 명령어를 처리할 수는 있지만 인터커넥트 매트릭스를 사용해야 하고 해당 채널을 열어둔 채로 해당 채널로 응답을 해야 하는 제한이 있어 성능 개선은 특별한 경우가 아니면 크지 않다. An ARM high-performance bus (AHB) is widely used as an interface protocol for data transfer inside a system on chip (SOC). The AHB specification allows up to 16 masters, but it is valid when the sum of the bandwidth required by each master is much smaller than the total bandwidth. If the sum of the required bandwidth of each master becomes similar to the bandwidth provided by the network, two masters will cause problems. The use of the interconnect matrix can greatly increase bandwidth, but it is of little help if communications are concentrated in shared memory. Another problem with AHB is that while one memory access communication occurs due to stop-and-wait communication, another master can not access the memory, and the memory controller processes the requested memory access one by one It is impossible to arbitrate the memory access. You can increase the number of slave interfaces to handle as many commands as there are interfaces at a time, but you have to use an interconnect matrix and limit the number of times you have to respond to that channel with that channel open. .

ARM사의 AXI는 AHB의 문제점을 보완하여 다중 매스터 시스템에서 아웃스탠딩 어드레스(outstanding address)와 비순차 완료(out-of-order completion) 통신을 지원하고 네트워크에서 레지스터 슬라이싱을 허용하여 고속 동작이 가능하다. 따라서 하나의 메모리 접근 요청에 대해 응답을 하기 전에 다른 메모리 접근 요청이 가능하므로 메모리 제어기에서 접근 요청에 대한 중재가 가능하다. 이를 이용하여 메모리 접근에 대한 대기 사이클을 줄여 유효 대역폭을 증가시키고 우선순위를 조절하여 서비스 품질(Quality of Service : QoS) 요청에 대응이 가능하다. ARM's AXI complements the AHB's challenge to enable high-speed operation by supporting outstanding address and out-of-order completion communications in multi-master systems and allowing register slicing in the network. Therefore, it is possible to arbitrate the access request from the memory controller since another memory access request is possible before responding to one memory access request. Using this, it is possible to cope with the quality of service (QoS) request by decreasing the waiting cycle for memory access and increasing the effective bandwidth and adjusting the priority.

이와 관련된 선행기술을 구체적으로 살펴보면, 한국공개공보 제10-2002-0040150호(발명의 명칭 : 에스디램 컨트롤러)에는 시스템온칩(System On Chip : SOC) 기술을 채용하여 메모리 컨트롤러와 각종 데이터 또는 신호처리장치 등을 SDRAM과 함께 내장하여 관련 칩 간의 데이터 전송 폭과 동작 주파수의 차이를 해결하여 데이터 전송효율을 향상시키는 컨트롤러가 개시되어 있다. 즉, 이는 에스디램에 접근하는 다중 명령어를 처리하는 방법이나 순서는 고려하지 않고 있다. A specific example of the related art is disclosed in Korean Unexamined Patent Application Publication No. 10-2002-0040150, entitled System On Chip (SOC) technology, Device and the like together with the SDRAM to solve the difference between the data transmission width and the operating frequency between the related chips, thereby improving the data transmission efficiency. In other words, it does not take into account the order and method of handling multiple instructions that access SDRAM.

한국공개공보 제10-2001-0019127호(발명의 명칭 : 엠피씨860과 에스디알에이엠을 이용한 버스트 전송 지원 외부 버스 제어기 및 방법)"에는 MPC860과 SDRAM을 사용하는 다양한 프로세서 보드에서 프로세서 및 SDRAM, 그리고 PCI 외부 버스의 최대 성능을 제공하는 외부 버스 제어기의 구조 및 MPC860의 UPM을 제공하는 외부 버스 제어기가 개시되어 있다. 이 역시 에스디램에 접근하는 다중 명령어를 효율적으로 처리하는 본 발명과는 상이한 내용이다.Korean Patent Publication No. 10-2001-0019127 entitled " External bus controller and method supporting burst transmission using MPC860 and SDIAM ", which is incorporated herein by reference, discloses a processor and SDRAM, and PCI There is disclosed an external bus controller that provides the maximum performance of an external bus and an external bus controller that provides the UPM of the MPC 860. This is also different from the present invention which efficiently processes multiple instructions that access SDRAM.

본 발명이 이루고자 하는 기술적 과제는, 다중 명령 기반 메모리 제어장치에서 다수의 메모리 접근 요청을 정렬하여 뱅크의 행을 새로이 여는 동작을 최소화하여 대기 시간을 줄이고 대역폭을 최대한 활용하는 메모리 제어장치 및 제어방법을 제공하는 데 있다. According to an aspect of the present invention, there is provided a memory control apparatus and method for minimizing waiting time and maximizing a bandwidth by minimizing an operation of reordering a plurality of memory access requests in a multi-command based memory control apparatus, .

상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 메모리 제어장치는, 다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치에 있어서, 다수의 메모리 접근 요청의 입력된 순서 및 상기 메모리 접근 요청에서 추출한 메모리 주소의 뱅크와 행 정보를 토대로 다수의 메모리 접근 요청을 입력된 순서대로 처리하되 동일 뱅크의 동일 행에 대한 메모리 접근 요청은 연속적으로 처리되도록 메모리 접근 요청 순서를 결정하여 저장하는 메모리 접근 요청 버퍼부; 상기 메모리 접근 요청 버퍼부에서 결정된 순서대로 메모리 접근 요청을 읽어와 각 뱅크별로 메모리 접근 요청을 분배하고, 각 뱅크별로 분배된 메모리 접근 요청을 순서대로 메모리로 전달하여 실행하는 메모리 접근 요청 제어부; 및 상기 뱅크별로 분배된 메모리 접근 요청을 사전에 설정된 수 이내로 각 뱅크별 버퍼부에 저장하고, 각 뱅크별 동작상태를 제어하는 뱅크 제어부;를 구비하며, 상기 메모리 접근 요청 제어부는 각 뱅크별로 메모리 접근 요청을 분배시 상기 뱅크별 버퍼부가 비어 있는지 확인하여, 상기 메모리 접근 요청 버퍼부에 의해 결정된 상기 메모리 접근 요청 순서 상 뒤 순서인 메모리 접근 요청이라도 비어 있는 뱅크별 버퍼부로 먼저 전달한다.According to an aspect of the present invention, there is provided a memory control apparatus for adaptively determining an execution order of a plurality of memory access requests, the memory control apparatus comprising: Memory access requests are processed in the order of input based on the bank and row information of the memory address extracted from the access request, and memory access request order is determined so that the memory access requests for the same row of the same bank are successively processed An access request buffer unit; A memory access request controller for reading a memory access request in the order determined by the memory access request buffer unit and distributing a memory access request for each bank and transferring the memory access requests distributed to the banks to the memory in order; And a bank controller for storing a memory access request distributed for each of the banks in a buffer unit for each bank within a preset number of times and controlling an operation state of each bank, The memory access request buffer unit determines whether or not the buffer unit for each bank is empty when distributing the request, and transfers memory access requests in order subsequent to the memory access request order determined by the memory access request buffer unit to the buffer unit for each empty bank.

상기의 다른 기술적 과제를 달성하기 위한, 본 발명에 따른 메모리 제어방법은, 다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치에 의해 수행되는 메모리 제어방법에 있어서, (a) 메모리 접근 요청 제어부는 메모리 접근 요청 버퍼부로부터 다수의 메모리 접근 요청을 순서대로 읽어오는 단계; (b) 상기 메모리 접근 요청 제어부는 n번째 메모리 접근 요청에서 추출한 메모리 주소에 대응하는 제1뱅크 정보를 기준으로 제1뱅크 버퍼부가 비어있는지 확인하는 단계; (c) 상기 제1뱅크 버퍼부가 비어 있으면 상기 n번째 메모리 접근 요청을 상기 제1뱅크 버퍼부로 전달하고, 상기 제1뱅크 버퍼부가 비어 있지 않으면 상기 n번째 메모리 접근 요청 이후 순서의 메모리 접근 요청 중 메모리 주소의 뱅크 정보가 제2뱅크인 메모리 접근 요청을 읽어오는 단계; (d)제2뱅크 버퍼부가 비어 있는지 확인하여, 상기 제2뱅크 버퍼부가 비어 있으면 상기 메모리 주소의 뱅크 정보가 제2뱅크인 메모리 접근 요청을 상기 제2뱅크 버퍼부로 전달하는 단계; 및 (e) 상기 메모리 접근 요청이 각 뱅크별 버퍼부로 전달되는 순서를 저장하여 뱅크 제어부의 명령을 차례대로 메모리로 전달하는 단계;를 가지며, 상기 (e) 단계는, (e1) 상기 각 뱅크별 버퍼부에 저장되어 있는 다수의 메모리 접근 요청을 입력된 순서에 따라 첫 번째 메모리 접근 명령을 메모리로 전달하고, 상기 첫 번째 메모리 접근 요청의 다음 순서로 입력된 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 메모리 주소가 동일 뱅크의 동일 행인지 확인하는 단계; 및 (e2) 상기 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 동일 뱅크의 동일 행이면 상기 두 번째 메모리 접근 명령을 연속적으로 상기 메모리로 전달하고, 상기 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 동일 뱅크의 다른 행이면 새로운 행을 열기 위해 발생한 대기 사이클 동안 상기 제2뱅크 버퍼부에 저장되어 있는 다수의 메모리 접근 요청에 대해 입력된 순서에 따라 생성된 명령을 메모리로 전달하는 단계;를 갖는다.According to another aspect of the present invention, there is provided a memory control method performed by a memory control device for adaptively determining an execution order of a plurality of memory access requests, The access request control unit sequentially reading a plurality of memory access requests from the memory access request buffer unit; (b) the memory access request control unit checking whether the first bank buffer unit is empty based on first bank information corresponding to a memory address extracted in an n-th memory access request; (c) if the first bank buffer unit is empty, transfers the n-th memory access request to the first bank buffer unit, and if the first bank buffer unit is not empty, Reading a memory access request in which the bank information of the address is the second bank; (d) checking whether the second bank buffer unit is empty, and if the second bank buffer unit is empty, transferring a memory access request in which the bank information of the memory address is a second bank to the second bank buffer unit; And (e) storing the order in which the memory access request is transferred to the buffer unit for each bank, and transferring the order of the bank control unit to the memory in order, wherein the step (e) A second memory access request stored in the buffer unit is transferred to a memory in accordance with the input order, and a second memory access request inputted in the next order of the first memory access request is transferred to the first memory Confirming that the access request and the memory address are the same row of the same bank; And (e2) if the second memory access request is the same row of the same bank as the first memory access request, successively delivering the second memory access command to the memory, Transferring a command generated in accordance with an input order to a plurality of memory access requests stored in the second bank buffer unit during a waiting cycle for opening a new row when the access request is another row of the same bank; .

본 발명에 따른 메모리 제어장치 및 제어방법에 의하면, 다수의 메모리 접근 요청을 정렬하여 대기 시간을 줄이고 대역폭을 최대한 활용할 수 있다. 즉, 메모리 접근을 요청하는 명령을 저장부에 저장하고 명령을 분석하여 뱅크의 행을 새로이 여는 동작을 최소화하여 메모리 접근에서 새로운 행 열기에 따른 잠복기를 줄이고 대역폭을 증가시키며 전력 소모를 줄일 수 있다. 또한, 메모리 접근 요청의 우선 순위에 따른 처리도 가능하다. According to the memory control device and the control method of the present invention, a plurality of memory access requests can be arranged to reduce waiting time and maximize the bandwidth. That is, it is possible to reduce the latency due to a new operation in memory access, increase bandwidth, and reduce power consumption by minimizing the operation of storing a command requesting a memory access in a storage unit and analyzing the command to newly open a bank row. It is also possible to process according to the priority of the memory access request.

도 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 is a block diagram showing the relationship between a memory control device and a memory according to the present invention;
2 is a block diagram showing a detailed configuration of a memory control device according to the present invention;
3 is a flowchart illustrating a memory control method according to the first embodiment of the present invention;
4 is a flowchart illustrating a memory control method according to a second embodiment of the present invention;
5 is a diagram showing a simulation environment using a memory control device according to the present invention;
6 is a view showing a data pattern for a simulation result write operation for a memory control device according to the present invention;
FIG. 7 is a graph showing simulation results for requests of write patterns 1, 2, and 3,
8 is a view showing a data pattern for a simulation result read operation for a memory control device according to the present invention;
9 is a graph showing simulation results for requests of read patterns 4, 5, and 6,
FIG. 10 is a diagram for comparing the difference of operation cycles according to a write-after-read and a post-write-after-write operation for the same row as simulation results of the memory control device according to the present invention;
11 is a graph comparing operation cycles for requests of data patterns 7 and 8,
12 is a diagram showing data patterns extracted from an FIR filter and an H.264 decoder,
13 is a graph comparing operation operation cycles for data patterns of the FIR filter and the H.264 decoder.

이하에서 첨부의 도면들을 참조하여 본 발명에 따른 메모리 제어장치 및 제어방법의 바람직한 실시예에 대해 상세하게 설명한다.Hereinafter, preferred embodiments of a memory control device and a control method according to the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에 따른 메모리 제어장치(100)와 메모리(110)의 관계를 도시한 블록도이고, 도 2는 본 발명에 따른 메모리 제어장치(100)의 상세한 구성을 도시한 블록도이다. FIG. 1 is a block diagram showing a relationship between a memory control device 100 and a memory 110 according to the present invention, and FIG. 2 is a block diagram showing a detailed configuration of a memory control device 100 according to the present invention.

도 1 및 도 2를 참조하면, 본 발명에 따른 메모리 제어장치(100)는 메모리 접근 요청 버퍼부(210), 메모리 접근 요청 제어부(220), 뱅크 제어부(230) 및 각 뱅크별 버퍼부(231, 232, 233, 234)로 이루어진다. 1 and 2, a memory control apparatus 100 according to the present invention includes a memory access request buffer unit 210, a memory access request control unit 220, a bank control unit 230, and a buffer unit 231 for each bank , 232, 233, 234).

메모리 접근 요청 버퍼부(210)는 다수의 메모리 접근 요청의 입력된 순서 및 메모리 접근 요청에서 추출한 메모리 주소(뱅크 및 행 정보)를 토대로 메모리 접근 요청 순서를 결정하여 저장한다. 이때, 다수의 메모리 접근 요청을 입력된 순서대로 처리하되 동일 뱅크 및 동일 행에 대한 메모리 접근 요청은 연속적으로 처리되도록 메모리 접근 요청 순서를 결정할 수 있다. 즉, 레지스터 파일 구조에 각 레지스터별로 데이터의 유효성을 결정하는 플래그와 실행 순서를 계산하여 저장하는 기능의 레지스터가 연결된다. 따라서 메모리 접근 요청이 정렬될 때, 데이터가 실제로 움직이지 않고 실행 순서 장치 값이 변하면서 실행 순서가 변경된다. The memory access request buffer unit 210 determines and stores a memory access request order based on input order of a plurality of memory access requests and memory addresses (bank and row information) extracted from the memory access requests. At this time, a memory access request sequence can be determined so that a plurality of memory access requests are processed in the input order, and memory access requests for the same bank and the same row are consecutively processed. That is, a register for registering a flag for determining the validity of data for each register and a function for calculating and storing the execution order is connected to the register file structure. Thus, when a memory access request is sorted, the data does not actually move and the execution order device value changes and the execution order changes.

메모리 접근 요청 제어부(220)는 메모리 접근 요청 버퍼부(210)로부터 순서대로 메모리 접근 요청을 읽어와 각 뱅크별로 메모리 접근 요청을 분배하고, 각 뱅크별로 분배된 메모리 접근 요청을 순서대로 메모리로 전달하여 실행한다. The memory access request control unit 220 reads memory access requests in order from the memory access request buffer unit 210, distributes memory access requests for the respective banks, and sequentially distributes memory access requests distributed to the respective banks to the memory .

메모리 접근 요청 제어부(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)를 선택하여 해당 메모리 접근 명령을 실행한다. The memory access request control unit 220 determines whether the buffer units 231, 232, 233, and 234 for each bank are empty when allocating a memory access request for each bank, and stores the empty buffer units 231, 232, 233, 234 so that a memory access request can be transmitted first. For example, the first bank buffer unit 231, which is one of the bank-specific buffer units 231, 232, 233, and 234, stores 5 (for example, The memory access request for accessing the first bank can not be stored any more, and thus the memory access request for accessing the bank other than the first bank is searched. For example, if the first bank and the other bank are the second bank, the second bank buffer unit 232 also checks whether the memory access requests are filled in the predetermined number. If the second bank buffer unit 232 is empty, ) To access the second bank. At this time, the memory access request controller 220 stores in which bank the memory access request information is delivered, receives the memory access command from the bank controller 230, and selects the bank controller 230 according to the priority order when transferring the memory access request to the memory, Executes a memory access instruction.

또한, 메모리 접근 요청 제어부(220)는 현재 처리대상 메모리 접근 요청의 메모리 주소가 현재 처리대상 메모리 접근 요청 이전에 읽어온 메모리 접근 요청과 동일 뱅크의 다른 행이면 현재 처리대상 메모리 접근 요청 이후 순서에 해당하는 메모리 접근 요청의 메모리 주소를 분석하여 다른 뱅크에 접근하는 메모리 접근 요청을 현재 처리대상 메모리 접근 요청보다 먼저 뱅크 제어부(230)로 전달한다. 현재 접근 중인 뱅크에서 행이 바뀌면 대기 사이클이 발생하므로 해당 접근 요청 중 발생한 대기 사이클에 다음 순서의 뱅크에 대한 접근 요청을 실행하여 대기 사이클을 줄이는 것이다. If the memory address of the current memory access request is another row of the same bank as the memory access request read before the current memory access request, the memory access request control unit 220 And transmits a memory access request for accessing another bank to the bank controller 230 before the current memory access request. If a row is changed in the currently accessed bank, a wait cycle occurs. Therefore, an access request for the next bank is executed in the wait cycle during the access request to reduce the wait cycle.

즉, 현재 처리대상 메모리 접근 요청이 제1뱅크의 2번행의 주소를 접근하고, 현재 처리대상 메모리 접근 요청 이전에 읽어온 메모리 접근 요청이 제1뱅크의 1번행의 주소를 접근하는 경우라면, 현재 처리대상 메모리 접근 요청 이후 순서에 해당하는 메모리 접근 요청 중 제1뱅크와 다른 뱅크인 제2뱅크에 접근하는 메모리 접근 요청을 검색하여, 제2뱅크에 접근하는 메모리 접근 요청을 현재 처리대상 메모리 접근 요청 과정에서 발생한 대기 사이클 중에 메모리(110)로 전달하여 먼저 처리하도록 한다. 다만, 이 경우 역시 각 뱅크별 버퍼부(231, 232, 233, 234)에 메모리 접근 요청을 저장되어야 한다. 다른 모든 뱅크의 버퍼부가 비어 있다면 제1뱅크의 1번행 접근 요청이 그대로 실행된다. 이는 대기 사이클이 발생할 때마다 다른 뱅크의 대기중인 명령어가 실행되어 대기 사이클을 줄이는 효과가 발생한다. 따라서 별도의 정렬을 위한 연산이 필요하지 않고 뱅크별 요청 배분 과정에서 자연스럽게 정렬이 이루어지므로 하드웨어 구현에 유리하다. 이를 통해 메모리 접근 요청 버퍼부(210)의 메모리 접근 요청 순서 정렬에 따른 연산 부하를 줄일 수 있다. 또한, 메모리 접근 요청 제어부(220)는 메모리(110) 초기화, 리프레쉬(REFRESH) 그리고 절전 모드(Power Down)로 진입하고 나오는 것을 제어한다. That is, if the memory access request currently being processed accesses the address of the second line of the first bank and the memory access request read before the current access request for the memory accesses the address of the first line of the first bank, A memory access request for accessing a second bank, which is a bank different from the first bank, among the memory access requests corresponding to the order after the memory access request to be processed is retrieved, and a memory access request for accessing the second bank is called a current memory access request To the memory 110 during a waiting cycle occurring in the process. In this case, however, memory access requests must be stored in the buffer units 231, 232, 233, and 234 of the respective banks. If the buffers of all the other banks are empty, the first bank access request of the first bank is executed as it is. This has the effect of reducing the waiting cycle by executing the waiting instruction of the other bank every time the waiting cycle occurs. Therefore, it is advantageous for hardware implementation since it is unnecessary to perform a separate sorting operation and the sorting is naturally performed in the request allocation process for each bank. Accordingly, it is possible to reduce the operation load according to the memory access request ordering order of the memory access request buffer unit 210. In addition, the memory access request control unit 220 controls initialization, refresh (REFRESH), and power-down of the memory 110.

뱅크 제어부(230)는 뱅크별로 분배된 메모리 접근 요청을 사전에 설정된 수 이내로 각 뱅크별 버퍼부(231, 232, 233, 234)에 저장하고, 각 뱅크별 동작 상태를 제어한다. 즉, 각 뱅크별 버퍼부(231, 232, 233, 234)는 접근하고자 하는 메모리의 주소에 따라 하나 이상의 메모리 접근 요청을 각 뱅크별로 저장하며, 메모리 접근 요청 제어부(220)의 제어신호에 따라 메모리(110)로 메모리 접근 명령을 보내 다수 메모리 접근 요청의 실행 순서를 적응적으로 결정하게 된다. 단, 뱅크 제어부(230)에 각 뱅크별 버퍼부가 존재하지 않을 수도 있으며 이 경우 뱅크별 버퍼부에 메모리 접근 요청이 저장되는 과정 없이 뱅크 제어부(230)의 제어신호에 따라 순서대로 메모리 접근 명령을 메모리(110)로 전달할 수 있다. The bank controller 230 stores the memory access requests distributed by the banks in the buffer units 231, 232, 233, and 234 for each bank within a predetermined number of times, and controls the operation state for each bank. That is, the buffer units 231, 232, 233, and 234 for each bank store one or more memory access requests for each bank according to the address of the memory to be accessed. In response to the control signal of the memory access request control unit 220, A memory access command is sent to the memory 110 to adaptively determine the execution order of the multiple memory access requests. In this case, the memory access command may be sequentially stored in the memory 230 in accordance with the control signal of the bank controller 230 without the memory access request being stored in the buffer unit for each bank, (110).

도 3은 본 발명의 제1실시예에 따른 메모리 제어방법을 도시한 흐름도이다. 3 is a flowchart illustrating a memory control method according to the first embodiment of the present invention.

도 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)의 명령을 차례대로 메모리로 전달하게 되는 것이다. Referring to FIG. 3, the memory access request control unit 220 sequentially reads a plurality of memory access requests from the memory access request buffer unit 210 (S310). The memory access request control unit 220 determines whether the buffer unit 231 of the first bank is empty based on the bank information (first bank) corresponding to the memory address extracted in the read memory access request (S320). If the buffer unit 231 of the first bank is empty (S320), the memory access request input to the buffer unit 231 of the first bank is transmitted (S330). On the other hand, if it is determined that the buffer unit 231 of the first bank is full (S320), the bank information of the memory address in the request inputted after the read-out memory access request has the bank (the second bank) The memory access request is retrieved and if the buffer unit 232 of the other bank (second bank) is empty, a memory access with the other bank (the second bank) to the buffer unit 232 of the other empty bank (the second bank) And transmits the request (S340). The order in which the memory access requests are transmitted to the buffer units 231 and 232 for each bank is stored and the commands of the bank controller 230 are sequentially transmitted to the memory as described above.

도 4는 본 발명의 제2실시예에 따른 메모리 제어방법을 도시한 흐름도이다. 4 is a flowchart illustrating a memory control method according to a second embodiment of the present invention.

도 4를 참조하면, 메모리 접근 요청 제어부(220)는 제1뱅크 버퍼부(231)에 저장되어 있는 다수의 메모리 접근 요청을 입력된 순서에 따라 처음 메모리 접근 명령을 메모리(110)로 전달한다(S410). 메모리 접근 요청 제어부(220)는 제1뱅크 버퍼부(231)에 저장되어 있는 다음 메모리 접근 요청이 처음 메모리 접근 요청과 동일한 행인지 확인한다(S420). 확인 결과 동일한 행이면 다음 메모리 접근 명령을 연속적으로 메모리(110)로 전달하게 된다(S440). 그러나 확인 결과 동일한 행이 아닌 경우, 행을 바꾸기 위한 프리차지(PRECHARGE)와 액티브(ACTIVE) 명령이 발생하고 이러한 명령은 대기 사이클을 유발한다. 행을 바꾸면서 발생하는 대기 사이클 동안 제2뱅크 버퍼부(232)에 저장되어 있는 다수의 메모리 접근 요청에 대해 입력된 순서에 따라 생성된 명령을 메모리(110)로 전달한다(S430). 4, the memory access request control unit 220 transfers a plurality of memory access requests stored in the first bank buffer unit 231 to the memory 110 in accordance with the input order S410). The memory access request control unit 220 determines whether the next memory access request stored in the first bank buffer unit 231 is the same as the first memory access request (S420). If the same row is confirmed, the next memory access command is continuously transmitted to the memory 110 (S440). However, if it is not the same row as the check result, a PRECHARGE and an ACTIVE command to change the row occur and this command causes a waiting cycle. In operation S430, the memory access request stored in the second bank buffer unit 232 is transferred to the memory 110 in accordance with the input order.

본 발명에 따른 메모리 제어장치(100)는 에스디램(SDRAM) 계열의 메모리에 적용하였을 때 효과가 클 것으로 기대되며, 이는 온칩네트워크에 따라 성능이 달라지므로 네트워크 인터페이스 없이 시뮬레이션을 통해 비교 분석하였다. 도 5는 메모리 제어장치(100)를 사용한 시뮬레이션 환경을 보여준다. 메모리 접근 요청 생성부(500)에서는 시뮬레이션에 사용될 요청 동작을 만들어 메모리 제어장치(100)로 요청하고, 메모리 제어장치(100)는 요청을 확인하고 시뮬레이션 모델(510)을 구동시킨다. 사용된 시뮬레이션 모델(510)은 Micron사의 MT48LC4M32B2를 사용했고, CAS Latency(CL)는 3 사이클, 버스트 길이 4, tRCD=2, tRP=3인 경우를 적용했다. The memory controller 100 according to the present invention is expected to have a great effect when applied to an SDRAM memory, and the performance is different according to the on-chip network. Fig. 5 shows a simulation environment using the memory control device 100. Fig. The memory access request generation unit 500 generates a request operation to be used for the simulation and requests the memory control apparatus 100 to confirm the request and drives the simulation model 510. The simulation model 510 used was Micron's MT48LC4M32B2 and CAS Latency (CL) was applied for 3 cycles, burst length 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)에 빈 공간이 있으면 쓰기 동작이 계속 가능하므로 동작 사이클이 동일하다. Figure 6 shows a data pattern for a write operation as a result of a simulation for a memory control device. We are writing data in ascending order of 1, 2, 3, 4 in each pattern. For example, pattern 1 performs a write operation in the order of bank 0-bank 1-bank 0-bank 1. 1 write operation means 4 burst write. Patterns 2 and 3 repeat the write operation of four bursts two times in sequence for three and four banks, respectively. The difference in operations 1, 2, and 3 is that they use 2, 3, and 4 banks, respectively. FIG. 7 is a graph showing simulation results for requests of write patterns 1, 2, and 3. FIG. If the patterns are the same, it can be seen that the operation cycle is the same. This is because, in the write operation, the completion of the data in the buffer (FIFO) storing the write data is seen. Therefore, if there is a vacant space in the buffer (FIFO) for storing the write data, the write operation can be continued and the operation cycle is the same.

도 8은 메모리 제어장치에 대한 시뮬레이션 결과, 읽기 동작에 대한 데이터 패턴을 보여준다. 쓰기에서 읽기로 바뀐 것 외에는 쓰기 동작과 동일한 패턴이다. 쓰기 요청의 경우에는 쓰기 데이터를 저장하는 버퍼(FIFO)에 데이터가 들어가면 통신이 완료된 것으로 보았지만, 읽기 요청의 경우는 읽기 요청이 입력되고 읽은 데이터가 메모리 제어장치(100)를 통해 출력으로 나오는 시점까지를 계산하게 되므로 쓰기 동작과는 연산 사이클이 다를 것임을 예상할 수 있다. 8 shows a data pattern for a read operation as a result of a simulation for a memory control device. It is the same pattern as the writing operation except that it is changed from writing to reading. In the case of a write request, it is assumed that communication is completed when data is entered into a buffer (FIFO) storing write data. In the case of a read request, a read request is input and until the read data is output through the memory control device 100 It can be expected that the operation cycle will be different from the write operation.

도 9는 읽기 패턴 4, 5, 6의 요청에 대한 시뮬레이션 결과를 도시한 그래프이다. 읽기의 경우에는 다중 명령어 처리와 단일 명령어의 처리가 연산 사이클에서 확연한 차이가 나는 것을 볼 수 있다. 연산 사이클의 차이는 요청의 수가 많을수록 더 크게 되는데 이는 본 발명과 같은 다중 명령 기반 제어장치의 경우 읽기 요청이 미리 대기하고 있다가 이전 요청의 마지막 명령이 나가면 바로 이어서 다음 명령어를 내 보낼 수 있는 반면에, 단일 명령 기반 제어장치의 경우에는 읽기 데이터가 메모리 제어장치 인터페이스로 모두 빠져나간 직후 다음 요청을 하기 때문에 메모리 제어장치는 마지막 명령을 내보낸 이후 다음 요청이 반영되기 전까지 아무런 작업도 하고 있지 않기 때문이다. 그리고 이러한 대기 사이클은 요청 개수가 늘어나면서 점점 누적이 되어 차이가 더 크게 벌어진다. 본 발명에서 패턴 5와 패턴 6의 차이는 8 사이클로서, 이는 패턴 5와 6에서 요구하는 데이터의 수 차이인 8개와 일치한다. 여기에서 뱅크가 3개 이상 순환하는 구조를 가질 때는 액티브(ACTIVE)와 프리차지(PRECHARGE)에 의한 대기 사이클이 "0"이 된다는 것을 알 수 있다. 뱅크가 2개 사용될 경우 하나의 뱅크에 대한 접근 시간이 다른 뱅크가 액티브(ACTIVE) 또는 프리차지(PRECHARGE) 동작을 하는 시간보다 크거나 같다면 이 경우 또한 대기 사이클은 "0"이 된다. 패턴 6에서는 본 발명이 단일 명령 기반 제어장치 대비 30%의 연산 사이클만 사용하여 동작을 완료했음을 알 수 있다. FIG. 9 is a graph showing simulation results for requests of read patterns 4, 5, and 6. FIG. In the case of reading, it can be seen that the processing of multiple instructions and the processing of single instructions differ significantly in the operation cycle. The difference of the arithmetic cycle becomes larger as the number of requests increases. In the case of the multi-instruction-based control apparatus according to the present invention, if the read request is waiting in advance and the last instruction of the previous request is issued, , Since in the case of a single instruction-based control device, the next request is made immediately after the read data has been all exited to the memory control device interface, the memory control device is not doing any work until after the next request is reflected after the last command is issued . These waiting cycles are cumulative as the number of requests increases and the difference becomes larger. In the present invention, the difference between the pattern 5 and the pattern 6 is 8 cycles, which corresponds to the number of data differences 8 required in the patterns 5 and 6. Here, when the bank has three or more circulating structures, it can be seen that the active cycle (ACTIVE) and the waiting cycle by PRECHARGE become "0". If two banks are used, the access time for one bank is equal to or greater than the time for the other bank to be active (ACTIVE) or precharging (PRECHARGE). In pattern 6, it can be seen that the present invention has been completed using only a 30% computation cycle compared to a single instruction based control device.

도 10은 같은 행에 대해 쓰기 후 읽기 및 읽기 후 쓰기에 따른 연산 사이클의 차이를 비교한 도면이다. 도 11은 데이터 패턴 7, 8에 대한 연산 사이클을 비교한 그래프이다. 도 11을 참조하면, 쓰기 후 읽기 요청을 한 패턴 7의 경우에는 쓰기 데이터가 쓰기 버퍼(FIFO)에 저장되면 메모리 접근 요청 생성부(500)에서 읽기 요청이 가능하여 메모리 제어장치가 메모리에 쓰기 동작을 처리하는 동안 읽기 요청이 메모리 제어장치에 입력 가능하여 본 발명과 단일 명령 기반 제어장치에서 차이를 보이지 않는 것을 알 수 있다. 그러나 읽기 후 쓰기 요청을 한 패턴 8의 경우에는 본 발명은 쓰기 후 읽기와 동일한 사이클로 연산이 완료되는 것에 반해, 단일 명령 기반 제어장치는 읽기 동작이 완료될 때까지 쓰기 요청을 하지 못해 대기 사이클에 의한 성능 저하를 볼 수 있다. 패턴 8에서는 본 발명이 단일 명령 기반 제어장치 대비 약 58%의 연산 사이클만으로 요청을 완료했다. FIG. 10 is a diagram comparing the difference in operation cycle between the write-after-read and the post-write-after-write operations for the same row. FIG. 11 is a graph comparing operation cycles for data patterns 7 and 8. FIG. Referring to FIG. 11, in the case of the pattern 7 having the write-after-read request, if the write data is stored in the write buffer (FIFO), the memory access request generator 500 can read the write data, It can be seen that the read request can be input to the memory control device so that no difference is seen between the present invention and the single instruction based control device. However, in the case of the pattern 8 in which a write-after-read request is made, the present invention is completed in the same cycle as the write-after-read operation, whereas the single-instruction-based control device can not write- Performance degradation can be seen. In pattern 8, the present invention completed the request with only about 58% computation cycles compared to a single instruction based control device.

도 12는 각각 FIR 필터와 H.264 복호기에서 추출한 데이터 패턴을 도시한 도면이다. 이는 실제 시스템에서 성능 차이를 분석하기 위해 FIR 필터와 H.264 복호기의 데이터 패턴에 대한 성능의 차이를 분석한 것이다. 도 13의 결과에서 보듯이, FIR 필터와 H.264 복호기의 데이터 패턴에 대해 각각 본 발명이 단일 명령 기반 제어장치 대비 52%와 40%정도의 동작 사이클만 사용하여 요청을 완료하는 것을 볼 수 있다. 이는 본 발명에 따른 메모리 제어장치가 실제 응용 시스템에서 시스템 성능 개선에 크게 기여할 수 있음을 보여주고 있다. 12 is a diagram showing data patterns extracted from the FIR filter and the H.264 decoder, respectively. In order to analyze the performance difference in the real system, the performance difference between the data pattern of the FIR filter and the H.264 decoder is analyzed. As can be seen from the results of FIG. 13, it can be seen that the present invention completes the request for data patterns of the FIR filter and the H.264 decoder using only 52% and 40% . This shows that the memory control apparatus according to the present invention can greatly contribute to improvement of system performance in an actual application system.

본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 유무선 통신망으로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. The present invention can also be embodied as computer-readable codes on a computer-readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored. Examples of the computer-readable recording medium include a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like, and a carrier wave (transmission via the Internet). In addition, the computer-readable recording medium may be distributed to a computer system connected to a wired / wireless communication network, and a computer-readable code may be stored and executed in a distributed manner.

이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is clearly understood that the same is by way of illustration and example only and is not to be taken by way of limitation in the embodiment in which said invention is directed. It will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the scope of the appended claims.

100 : 메모리 제어장치 110 : 메모리
210 : 메모리 접근 요청 버퍼부 220 : 메모리 접근 요청 제어부
230 : 뱅크 제어부 231 : 제1뱅크 버퍼부
232 : 제2뱅크 버퍼부 233 : 제3뱅크 버퍼부
234 : 제4뱅크 버퍼부
100: memory control device 110: memory
210: memory access request buffer unit 220: memory access request control unit
230: bank control unit 231: first bank buffer unit
232: second bank buffer unit 233: third bank buffer unit
234: Fourth bank buffer unit

Claims (8)

다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치에 있어서,
다수의 메모리 접근 요청의 입력된 순서 및 상기 메모리 접근 요청에서 추출한 메모리 주소의 뱅크와 행 정보를 토대로 다수의 메모리 접근 요청을 입력된 순서대로 처리하되 동일 뱅크의 동일 행에 대한 메모리 접근 요청은 연속적으로 처리되도록 메모리 접근 요청 순서를 결정하여 저장하는 메모리 접근 요청 버퍼부;
상기 메모리 접근 요청 버퍼부에서 결정된 순서대로 메모리 접근 요청을 읽어와 각 뱅크별로 메모리 접근 요청을 분배하고, 각 뱅크별로 분배된 메모리 접근 요청을 순서대로 메모리로 전달하여 실행하는 메모리 접근 요청 제어부; 및
상기 뱅크별로 분배된 메모리 접근 요청을 사전에 설정된 수 이내로 각 뱅크별 버퍼부에 저장하고, 각 뱅크별 동작상태를 제어하는 뱅크 제어부;를 포함하며,
상기 메모리 접근 요청 제어부는 각 뱅크별로 메모리 접근 요청을 분배시 상기 뱅크별 버퍼부가 비어 있는지 확인하여, 상기 메모리 접근 요청 버퍼부에 의해 결정된 상기 메모리 접근 요청 순서 상 뒤 순서인 메모리 접근 요청이라도 비어 있는 뱅크별 버퍼부로 먼저 전달하는 것을 특징으로 하는 메모리 제어장치.
A memory control device for adaptively determining an execution order of a plurality of memory access requests,
A plurality of memory access requests are processed in the inputted order based on the input order of the plurality of memory access requests and the bank and row information of the memory addresses extracted from the memory access request, and memory access requests for the same row of the same bank are sequentially A memory access request buffer unit for determining and storing a memory access request sequence to be processed;
A memory access request controller for reading a memory access request in the order determined by the memory access request buffer unit and distributing a memory access request for each bank and transferring the memory access requests distributed to the banks to the memory in order; And
And a bank controller for storing the memory access requests allocated to the banks in the buffer units for the respective banks within a predetermined number of times and controlling the operation states for the respective banks,
The memory access request control unit checks whether the buffer unit for each bank is empty when allocating a memory access request for each bank, and if a memory access request in order after the memory access request order determined by the memory access request buffer unit is an empty bank And transfers the data to the separate buffer unit.
제 1항에 있어서,
상기 메모리 접근 요청 제어부는 상기 뱅크별 버퍼부 중 하나인 제1뱅크 버퍼부가 사전에 설정된 수만큼 메모리 접근 요청이 채워지면, 다른 제2뱅크를 접근하는 메모리 접근 요청을 검색하여 비어있는 제2뱅크 버퍼부로 상기 제2뱅크를 접근하는 메모리 접근 요청을 전달하는 것을 특징으로 하는 메모리 제어장치.
The method according to claim 1,
When the memory access request is filled in the memory access request control unit for a predetermined number of times, the first bank buffer unit, which is one of the buffer units for each bank, searches for a memory access request for accessing another second bank, And a memory access request for accessing the second bank.
제 1항에 있어서,
상기 메모리 접근 요청 제어부는 현재 처리대상 메모리 접근 요청의 메모리 주소가 상기 현재 처리대상 메모리 접근 요청 이전에 읽어온 메모리 접근 요청과 동일 뱅크, 다른 행이면 새로운 행을 열기 위해 발생한 대기 사이클 동안 상기 현재 처리대상 메모리 접근 요청 이후 순서에 해당하는 상기 뱅크와 다른 뱅크에 접근하는 메모리 접근 요청을 상기 현재 처리대상 메모리 접근 요청보다 먼저 메모리로 전달하는 것을 특징으로 하는 메모리 제어장치.
The method according to claim 1,
Wherein the memory access request control unit determines that the memory access request for the current processing target memory access request is the same bank as the memory access request read before the current processing target memory access request, Wherein the memory access request for accessing the bank other than the bank corresponding to the sequence after the memory access request is transferred to the memory before the current access target memory access request.
제 1항에 있어서,
상기 메모리 접근 요청 제어부는 각 뱅크별로 분배된 메모리 접근 요청을 상기 뱅크별 버퍼부로 전달하고, 상기 뱅크 제어부의 제어신호에 따라 상기 메모리로 메모리 접근 명령을 전달하는 것을 특징으로 하는 메모리 제어장치.
The method according to claim 1,
Wherein the memory access request control unit transfers a memory access request distributed for each bank to the buffer unit for each bank and transfers a memory access command to the memory according to a control signal of the bank control unit.
제 1항 내지 제 4항 중 어느 한 항에 있어서,
상기 메모리는 에스디램(SDRAM)인 것을 특징으로 하는 메모리 제어장치.
5. The method according to any one of claims 1 to 4,
Wherein the memory is an SDRAM.
다수의 메모리 접근 요청의 실행 순서를 적응적으로 결정하는 메모리 제어장치에 의해 수행되는 메모리 제어방법에 있어서,
(a) 메모리 접근 요청 제어부는 메모리 접근 요청 버퍼부로부터 다수의 메모리 접근 요청을 순서대로 읽어오는 단계;
(b) 상기 메모리 접근 요청 제어부는 n번째 메모리 접근 요청에서 추출한 메모리 주소에 대응하는 제1뱅크 정보를 기준으로 제1뱅크 버퍼부가 비어있는지 확인하는 단계;
(c) 상기 제1뱅크 버퍼부가 비어 있으면 상기 n번째 메모리 접근 요청을 상기 제1뱅크 버퍼부로 전달하고, 상기 제1뱅크 버퍼부가 비어 있지 않으면 상기 n번째 메모리 접근 요청 이후 순서의 메모리 접근 요청 중 메모리 주소의 뱅크 정보가 제2뱅크인 메모리 접근 요청을 읽어오는 단계;
(d)제2뱅크 버퍼부가 비어 있는지 확인하여, 상기 제2뱅크 버퍼부가 비어 있으면 상기 메모리 주소의 뱅크 정보가 제2뱅크인 메모리 접근 요청을 상기 제2뱅크 버퍼부로 전달하는 단계; 및
(e) 상기 메모리 접근 요청이 각 뱅크별 버퍼부로 전달되는 순서를 저장하여 뱅크 제어부의 명령을 차례대로 메모리로 전달하는 단계;를 포함하며,
상기 (e) 단계는,
(e1) 상기 각 뱅크별 버퍼부에 저장되어 있는 다수의 메모리 접근 요청을 입력된 순서에 따라 첫 번째 메모리 접근 명령을 메모리로 전달하고, 상기 첫 번째 메모리 접근 요청의 다음 순서로 입력된 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 메모리 주소가 동일 뱅크의 동일 행인지 확인하는 단계; 및
(e2) 상기 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 동일 뱅크의 동일 행이면 상기 두 번째 메모리 접근 명령을 연속적으로 상기 메모리로 전달하고, 상기 두 번째 메모리 접근 요청이 상기 첫 번째 메모리 접근 요청과 동일 뱅크의 다른 행이면 새로운 행을 열기 위해 발생한 대기 사이클 동안 상기 제2뱅크 버퍼부에 저장되어 있는 다수의 메모리 접근 요청에 대해 입력된 순서에 따라 생성된 명령을 메모리로 전달하는 단계;를 포함하는 것을 특징으로 하는 메모리 제어방법.
A memory control method performed by a memory control device adaptively determining an execution order of a plurality of memory access requests,
(a) the memory access request control unit sequentially reading a plurality of memory access requests from the memory access request buffer unit;
(b) the memory access request control unit checking whether the first bank buffer unit is empty based on first bank information corresponding to a memory address extracted in an n-th memory access request;
(c) if the first bank buffer unit is empty, transfers the n-th memory access request to the first bank buffer unit, and if the first bank buffer unit is not empty, Reading a memory access request in which the bank information of the address is the second bank;
(d) checking whether the second bank buffer unit is empty, and if the second bank buffer unit is empty, transferring a memory access request in which the bank information of the memory address is a second bank to the second bank buffer unit; And
(e) storing the order in which the memory access requests are transferred to the buffer units for the respective banks, and transferring the instructions of the bank control units to the memory in order,
The step (e)
(e1) a plurality of memory access requests stored in the buffer units of the respective banks are transferred to a memory in accordance with an input order, and a second memory access request, which is input in the next order of the first memory access request, Determining whether the access request is the same row of the same bank as the first memory access request and the memory address; And
(e2) if the second memory access request is the same row of the same bank as the first memory access request, the second memory access command is continuously transferred to the memory, and the second memory access request is transferred to the first memory access Transferring a command generated according to an input order to a plurality of memory access requests stored in the second bank buffer unit during a waiting cycle for opening a new row if the request is another row of the same bank; The memory control method comprising:
제 6항에 있어서,
상기 메모리는 에스디램(SDRAM)인 것을 특징으로 하는 메모리 제어방법.
The method according to claim 6,
Wherein the memory is an SDRAM.
제 6항 또는 제 7항에 기재된 메모리 제어방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.A computer-readable recording medium storing a program for causing a computer to execute the memory control method according to claim 6 or 7.
KR1020140030111A 2014-03-14 2014-03-14 Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer KR101414453B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140030111A KR101414453B1 (en) 2014-03-14 2014-03-14 Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140030111A KR101414453B1 (en) 2014-03-14 2014-03-14 Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020110132579A Division KR20130065957A (en) 2011-12-12 2011-12-12 Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer

Publications (2)

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

Family

ID=50888767

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140030111A KR101414453B1 (en) 2014-03-14 2014-03-14 Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer

Country Status (1)

Country Link
KR (1) KR101414453B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170060203A (en) 2015-11-23 2017-06-01 에스케이하이닉스 주식회사 Memory system and operating method of memory system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3698902B2 (en) 1998-12-10 2005-09-21 エヌイーシーコンピュータテクノ株式会社 Memory access device and access method thereof
KR101382562B1 (en) * 2007-08-24 2014-04-10 삼성전자주식회사 Semiconductor memory device capable of programming for banks simultaneously and method thereof

Also Published As

Publication number Publication date
KR101414453B1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
KR20130065957A (en) Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer
JP4926963B2 (en) System and method for improving performance in a computer memory system that supports multiple memory access latency times
KR101312281B1 (en) Processor and memory control method
US7287101B2 (en) Direct memory access using memory descriptor list
CN111742305A (en) Scheduling memory requests with non-uniform latency
US20090138624A1 (en) Storage system and method
US8412870B2 (en) Optimized arbiter using multi-level arbitration
JP5666722B2 (en) Memory interface
JP2009508247A (en) Method and system for bus arbitration
EP3335124B1 (en) Register files for i/o packet compression
CN111684430A (en) Supporting response to memory types of non-uniform latency on the same channel
KR101292309B1 (en) Semiconductor chip and control method of memory, and recording medium storing program for executing method of the same in computer
US20030056075A1 (en) Shared memory array
US8667199B2 (en) Data processing apparatus and method for performing multi-cycle arbitration
JP5911548B1 (en) Apparatus, method, and computer program for scheduling access request to shared memory
US7913013B2 (en) Semiconductor integrated circuit
KR101414453B1 (en) Control apparatus of memory and control method thereof, and recording medium storing program for executing method of the same in computer
CN104572519A (en) Multiport access and storage controller for multiprocessor and control method thereof
KR102334473B1 (en) Adaptive Deep Learning Accelerator and Method thereof
KR20230059536A (en) Method and apparatus for process scheduling
KR20220114449A (en) Memory controller and method for controlling memory
EP1704487B1 (en) Dmac issue mechanism via streaming id method
JP2003015968A (en) Bus simulator
JP2001067298A (en) Use of writing request queue for preventing failure of low speed port in transfer controller having hub and port architecture
US20030065860A1 (en) Internal control bus in a multiple processor/multiple bus system

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