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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System on Chip
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
본 발명은 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체에 관한 것으로, 더욱 상세하게는, 시스템온칩(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
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
도 1 및 도 2를 참조하면, 본 발명에 따른 메모리 제어장치(100)는 메모리 접근 요청 버퍼부(210), 메모리 접근 요청 제어부(220), 뱅크 제어부(230) 및 각 뱅크별 버퍼부(231, 232, 233, 234)로 이루어진다. 1 and 2, a
메모리 접근 요청 버퍼부(210)는 다수의 메모리 접근 요청의 입력된 순서 및 메모리 접근 요청에서 추출한 메모리 주소(뱅크 및 행 정보)를 토대로 메모리 접근 요청 순서를 결정하여 저장한다. 이때, 다수의 메모리 접근 요청을 입력된 순서대로 처리하되 동일 뱅크 및 동일 행에 대한 메모리 접근 요청은 연속적으로 처리되도록 메모리 접근 요청 순서를 결정할 수 있다. 즉, 레지스터 파일 구조에 각 레지스터별로 데이터의 유효성을 결정하는 플래그와 실행 순서를 계산하여 저장하는 기능의 레지스터가 연결된다. 따라서 메모리 접근 요청이 정렬될 때, 데이터가 실제로 움직이지 않고 실행 순서 장치 값이 변하면서 실행 순서가 변경된다. The memory access
메모리 접근 요청 제어부(220)는 메모리 접근 요청 버퍼부(210)로부터 순서대로 메모리 접근 요청을 읽어와 각 뱅크별로 메모리 접근 요청을 분배하고, 각 뱅크별로 분배된 메모리 접근 요청을 순서대로 메모리로 전달하여 실행한다. The memory access
메모리 접근 요청 제어부(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
또한, 메모리 접근 요청 제어부(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
즉, 현재 처리대상 메모리 접근 요청이 제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
뱅크 제어부(230)는 뱅크별로 분배된 메모리 접근 요청을 사전에 설정된 수 이내로 각 뱅크별 버퍼부(231, 232, 233, 234)에 저장하고, 각 뱅크별 동작 상태를 제어한다. 즉, 각 뱅크별 버퍼부(231, 232, 233, 234)는 접근하고자 하는 메모리의 주소에 따라 하나 이상의 메모리 접근 요청을 각 뱅크별로 저장하며, 메모리 접근 요청 제어부(220)의 제어신호에 따라 메모리(110)로 메모리 접근 명령을 보내 다수 메모리 접근 요청의 실행 순서를 적응적으로 결정하게 된다. 단, 뱅크 제어부(230)에 각 뱅크별 버퍼부가 존재하지 않을 수도 있으며 이 경우 뱅크별 버퍼부에 메모리 접근 요청이 저장되는 과정 없이 뱅크 제어부(230)의 제어신호에 따라 순서대로 메모리 접근 명령을 메모리(110)로 전달할 수 있다. The
도 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
도 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
본 발명에 따른 메모리 제어장치(100)는 에스디램(SDRAM) 계열의 메모리에 적용하였을 때 효과가 클 것으로 기대되며, 이는 온칩네트워크에 따라 성능이 달라지므로 네트워크 인터페이스 없이 시뮬레이션을 통해 비교 분석하였다. 도 5는 메모리 제어장치(100)를 사용한 시뮬레이션 환경을 보여준다. 메모리 접근 요청 생성부(500)에서는 시뮬레이션에 사용될 요청 동작을 만들어 메모리 제어장치(100)로 요청하고, 메모리 제어장치(100)는 요청을 확인하고 시뮬레이션 모델(510)을 구동시킨다. 사용된 시뮬레이션 모델(510)은 Micron사의 MT48LC4M32B2를 사용했고, CAS Latency(CL)는 3 사이클, 버스트 길이 4, tRCD=2, tRP=3인 경우를 적용했다. The
도 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
도 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
도 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
도 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뱅크 버퍼부가 사전에 설정된 수만큼 메모리 접근 요청이 채워지면, 다른 제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.
상기 메모리 접근 요청 제어부는 현재 처리대상 메모리 접근 요청의 메모리 주소가 상기 현재 처리대상 메모리 접근 요청 이전에 읽어온 메모리 접근 요청과 동일 뱅크, 다른 행이면 새로운 행을 열기 위해 발생한 대기 사이클 동안 상기 현재 처리대상 메모리 접근 요청 이후 순서에 해당하는 상기 뱅크와 다른 뱅크에 접근하는 메모리 접근 요청을 상기 현재 처리대상 메모리 접근 요청보다 먼저 메모리로 전달하는 것을 특징으로 하는 메모리 제어장치. 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.
상기 메모리 접근 요청 제어부는 각 뱅크별로 분배된 메모리 접근 요청을 상기 뱅크별 버퍼부로 전달하고, 상기 뱅크 제어부의 제어신호에 따라 상기 메모리로 메모리 접근 명령을 전달하는 것을 특징으로 하는 메모리 제어장치. 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.
상기 메모리는 에스디램(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:
상기 메모리는 에스디램(SDRAM)인 것을 특징으로 하는 메모리 제어방법. The method according to claim 6,
Wherein the memory is an SDRAM.
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)
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)
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 |
-
2014
- 2014-03-14 KR KR1020140030111A patent/KR101414453B1/en active IP Right Grant
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 |