KR101574394B1 - 메모리 구조를 분석하는 방법 및 장치 - Google Patents

메모리 구조를 분석하는 방법 및 장치 Download PDF

Info

Publication number
KR101574394B1
KR101574394B1 KR1020130142153A KR20130142153A KR101574394B1 KR 101574394 B1 KR101574394 B1 KR 101574394B1 KR 1020130142153 A KR1020130142153 A KR 1020130142153A KR 20130142153 A KR20130142153 A KR 20130142153A KR 101574394 B1 KR101574394 B1 KR 101574394B1
Authority
KR
South Korea
Prior art keywords
memory
memory address
address
execution time
accessing
Prior art date
Application number
KR1020130142153A
Other languages
English (en)
Other versions
KR20140109237A (ko
Inventor
최종무
박희권
강동우
이호섭
Original Assignee
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 단국대학교 산학협력단 filed Critical 단국대학교 산학협력단
Publication of KR20140109237A publication Critical patent/KR20140109237A/ko
Application granted granted Critical
Publication of KR101574394B1 publication Critical patent/KR101574394B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

멀티 뱅크 메모리의 구조를 분석하는 방법 및 장치에 관한 기술이 개시된다. 메모리 구조를 분석하는 방법은, 멀티 뱅크로 구성된 메모리의 구조를 분석하는 방법에 있어서, 적어도 하나의 메모리 주소에 따라 캐시 라인 단위로 메모리에 접근하는 단계와, 캐시 라인 단위로 메모리에 접근하여 적어도 하나의 메모리 주소에 상응하는 데이터에 대한 연산 수행 시간을 산출하는 단계와, 산출된 연산 수행 시간에 기반하여 메모리의 구조를 판단하는 단계를 포함한다. 따라서, 캐시 라인을 단위로 하여 멀티 뱅크 메모리에 순차적으로 접근하여 연산 수행 시간의 패턴을 분석함으로써 메모리의 구조를 용이하게 분석할 수 있으며, 이를 통하여 로우 버퍼 충동을 최소화함으로써 전체적인 시스템 성능을 향상시킬 수 있다.

Description

메모리 구조를 분석하는 방법 및 장치{METHOD AND APPARATUS FOR ANALYZING MEMORY ARCHITECTURE}
본 발명은 메모리 구조에 관한 것으로, 더욱 상세하게는 멀티 뱅크 메모리의 구조를 분석하는 방법 및 장치에 관한 것이다.
최근의 컴퓨터 시스템은 멀티 코어와 대용량 메모리를 기반으로 발전하고 있다.
예컨대, Intel, AMD, ARM, NVIDIA 등과 같은 CPU 제조사에서는 멀티 코어 환경의 다양한 프로세서들을 출시하고 있다. Intel은 10개의 코어를 탑재한 Xeon E7 프로세서를, AMD는 12개의 코어를 제공하는 Opteron 6000 시리즈 프로세서를, ARM과 NVIDIA에서는 각각 4개의 코어를 제공하는 ARM Cortex-A15 MPcore와 512개 이상의 코어를 제공할 수 있는 Tesla를 출시하였다.
또한, 프로세서의 발전과 함께 메모리 또한 대용량화, 접근 속도 고속화, 저가격화가 진행되고 있다. 이러한 발전 방향에 맞춰 멀티 코어와 대용량 메모리의 특성을 고려한 시스템 소프트웨어 수준의 중요성이 커지게 되었다.
대용량 메모리를 사용하는 멀티 코어 시스템에서는 멀티 뱅크 구조로 인해 다수의 코어들이 동시에 메모리에 접근하면서 로우 버퍼 충돌 현상을 발생시키며, 이로 인해 병렬성을 저하시키고, 스레드 간의 간섭 현상을 일으켜 시스템의 성능을 떨어뜨리는 요인이 되고 있다.
이러한 문제를 OS 수준에서 해결하기 위해서는 실제 물리 메모리의 뱅크 구조와 OS에서 관리하는 페이지 프레임간의 관계를 정확히 분석할 필요가 있으나, 이에 대한 연구는 미흡한 실정이다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 로우 버퍼 충돌에 따른 연산 수행 시간에 기반하여 멀티 뱅크 메모리의 구조를 분석하는 방법을 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 로우 버퍼 충돌에 따른 연산 수행 시간에 기반하여 멀티 뱅크 메모리의 구조를 분석하는 장치를 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 실시예에 따른 메모리 구조를 분석하는 방법은, 멀티 뱅크로 구성된 메모리의 구조를 분석하는 방법에 있어서, 적어도 하나의 메모리 주소에 따라 캐시 라인 단위로 메모리에 접근하는 단계와, 캐시 라인 단위로 메모리에 접근하여 적어도 하나의 메모리 주소에 상응하는 데이터에 대한 연산 수행 시간을 산출하는 단계와, 산출된 연산 수행 시간에 기반하여 메모리의 구조를 판단하는 단계를 포함한다.
여기에서, 상기 메모리에 접근하는 단계는, 제1 메모리 주소 및 제2 메모리 주소에 기반하여 메모리에 미리 설정된 반복 횟수만큼 접근하되, 제1 메모리 주소에 미리 설정된 주소 크기만큼 증가시켜 제2 메모리 주소를 결정할 수 있다.
여기에서, 상기 메모리에 접근하는 단계는, 제2 메모리 주소와 제1 메모리 주소를 차례로 접근하고, 다시 제1 메모리 주소와 제2 메모리 주소를 차례로 접근할 수 있다.
여기에서, 상기 미리 설정된 주소 크기는 64B일 수 있다.
여기에서, 상기 연산 수행 시간은, 제1 메모리 주소와 제2 메모리 주소에 상응하는 로우(row)에 포함된 데이터를 로우 단위로 로우 버퍼를 통하여 읽어오는 시간을 기초로 할 수 있다.
여기에서, 상기 메모리의 구조를 판단하는 단계는, 연산 수행 시간이 변화하는 패턴에 기반하여 로우 버퍼 충돌을 판단할 수 있다.
여기에서, 상기 메모리의 구조를 판단하는 단계는, 연산 수행 시간이 증가하는 지점에 상응하는 제1 메모리 주소와 제2 메모리 주소에서 로우 버퍼 충돌이 발생한 것으로 판단할 수 있다.
여기에서, 상기 메모리의 구조를 판단하는 단계는, 로우 버퍼 충돌이 발생한 제1 메모리 주소와 제2 메모리 주소가 서로 다른 메모리 로우에 매핑되는 것으로 판단할 수 있다.
상기 다른 목적을 달성하기 위한 본 발명의 실시예에 따른 메모리 구조를 분석하는 장치는, 적어도 하나의 물리 메모리 주소에 따라 캐시 라인 단위로 메모리에 접근을 요청하는 접근 요청부와, 캐시 라인 단위로 메모리에 접근하여 적어도 하나의 물리 메모리 주소에 상응하는 데이터에 대한 연산 수행 시간을 산출하는 버퍼 충돌 확인부와, 산출된 연산 수행 시간에 기반하여 메모리의 구조를 판단하는 메모리 구조 판단부를 포함한다.
상기와 같은 본 발명에 따른 메모리 구조를 분석하는 방법 및 장치는 캐시 라인을 단위로 하여 멀티 뱅크 메모리에 순차적으로 접근하여 연산 수행 시간의 패턴을 분석함으로써 메모리의 구조를 용이하게 분석할 수 있다.
또한, 메모리 구조에 대한 분석을 통하여 로우 버퍼 충동을 최소화함으로써 전체적인 시스템 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시예에 따른 분석 대상 메모리의 구조를 설명하기 위한 개념도이다.
도 2는 본 발명의 실시예에 따른 메모리의 동작을 설명하기 위한 개념도이다.
도 3은 본 발명의 실시예에 따른 메모리 구조를 분석하는 방법을 수행하기 위한 알고리즘을 설명하기 위한 예시도이다.
도 4는 본 발명의 실시예에 따른 메모리 구조를 분석하는 방법을 설명하기 위한 흐름도이다.
도 5는 본 발명의 실시예에 따른 메모리 구조를 분석하는 장치를 설명하기 위한 블록도이다.
도 6은 본 발명의 실시예에 따른 메모리 구조 분석을 통한 시뮬레이션 결과를 나타내는 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명에서 사용되는 용어 '뱅크 메모리(bank memory)'는 동일 주소 공간 내에서 교체 가능한 복수의 물리 메모리를 매핑한 구조를 가진 메모리를 의미하며, '뱅크(bank)'는 최대 64KB의 메모리로 구성될 수 있고, 8개의 뱅크로써 마이크로프로세서의 기억 공간은 50만 바이트까지 확장될 수 있다. 또한, 채널(channel)은 랭크(rank)로 구성되며, 각각의 랭크는 뱅크로 구성된다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 실시예에 따른 분석 대상 메모리의 구조를 설명하기 위한 개념도이다.
도 1을 참조하면, 메모리는 메모리 컨트롤러(110)에 주소/명령 버스와 데이터 버스를 공유하는 단위인 채널에 다수 개의 물리 메모리가 연결된다. 물리 메모리는 다수의 칩(120)으로 구성되어 있으며, 각각의 메모리 칩(120)은 다수의 뱅크(bank)(121)로 구성된다. 즉, 도 1에 따르면, 물리 메모리는 기판에 직접 꼽는 하나의 DIMM(Dual In-line Memory Module)으로 구성된다.
또한 각 칩(120)의 뱅크들(121)은 데이터 버스 사이즈를 최대한 사용하기 위해서 칩들의 그룹으로 묶인 랭크로 구성된다.
하나의 뱅크(121)는 여러 개의 로우(row)(123)로 구성되며, 이는 프로세서가 메모리에 접근하는 단위이다. 프로세서가 메모리에 접근하게 될 경우, 메모리 주소를 기반으로 컨트롤러에 의해 해당 뱅크(121)가 결정되고 뱅크의 로우(123)를 찾는다. 결정된 로우의 모든 데이터들을 로우 버퍼(row buffer)(125)로 전송하게 된다.
메모리는 주소를 전달하는 주소 레지스터와 주소 카운터가 존재하고, 주어진 연산을 수행할 제어를 담당하는 제어로직, 뱅크의 로우(row)와 컬럼(column)을 제어하는 뱅크 제어기가 존재하고, 주어진 주소를 바탕으로 읽을 로우/컬럼을 결정하는 로우/컬럼 랫치(Latch)와 디코더(Decoder)가 존재한다.
이러한 구조에서 프로세서가 메모리에 있는 데이터를 읽을 때, 메모리에 접근하는 순서는 다음과 같다.
프로세서가 메모리 주소를 이용하여 주 메모리에 데이터를 요청한다(S1).
프로세서가 넘겨준 메모리 주소를 바탕으로 메모리는 메모리 컨트롤러(110)에 의해 요청이 수행될 뱅크를 결정하고, 해당 뱅크에 메모리 주소를 전달한다(S2).
뱅크에서는 전달 받은 주소를 바탕으로 주소의 해당 로우를 활성화 시킨다(S3).
활성화 되어 있는 비트 라인의 데이터를 로우 버퍼(125)로 전송한다(S4).
로우 버퍼(125)가 데이터를 수신 후 메모리 주소의 비트라인 정보를 확인한다(S5).
뱅크 컨트롤러가 컬럼 주소를 확인하여 해당 컬럼을 활성화 시킨다(S6).
뱅크는 활성화 된 로우와 컬럼 주소에 해당하는 셀에 있는 데이터를 로우 버퍼를 통해 출력 핀으로 보내고, 프로세스는 데이터 버스의 데이터 출력 핀을 확인한 후 데이터를 읽는다(S7).
뱅크는 데이터 출력을 종료한다(S8).
프로세서가 메모리에 있는 데이터를 반복하여 요청할 때 위 과정을 수행하는 과정에서 이전에 데이터를 읽었던 로우에 대하여 다시 읽기/쓰기 연산이 일어날 경우 뱅크에서 전달 받은 주소를 바탕으로 주소의 해당 로우을 활성화하고 로우 버퍼로 전송하는 등 S3내지 S5의 과정이 필요없다. 이를 로우 버퍼 히트라하여 S3 내지 S5의 과정의 시간만큼 수행 시간을 절약할 수 있다.
하지만 이전에 데이터를 읽은 로우가 아닌 다른 로우에 연산이 수행될 경우 S1 내지 S8의 모든 과정이 수행되어야 하며 이에 따라 로우를 활성화 시키고, 기존 로우 버퍼(125)에 존재하는 데이터를 셀에 저장하는 프리 차징(Pre charging) 비용이 추가적으로 발생하게 된다. 이를 로우 버퍼 미스 또는 로우 버퍼 충돌이라 한다. 로우 버퍼 히트의 경우 5 내지 22ns(nano second), 로우 버퍼 미스의 경우 45 내지 50ns(nano second)의 수행 시간을 가지게 된다. 따라서 로우 버퍼 미스를 최소화하여 전체적인 시스템의 성능을 향상 시킬 수 있다.
따라서 멀티코어 환경에서 다수의 태스크(task)가 동시에 동작하여 메모리에 접근하게 되는 환경에서 태스크들이 같은 뱅크의 다른 로우에 접근하여 성능이 저하되는 메모리 병목현상을 줄여 프로세서의 대기 시간과 메모리의 접근 시간을 줄이는 것이 시스템의 전체적인 성능을 향상시킬 수 있다.
도 2는 본 발명의 실시예에 따른 메모리의 동작을 설명하기 위한 개념도이다.
메모리는 전원이 들어오면 대기(idle) 상태(S210)로 천이되며, 로우 주소가 결정되면 로우 활성화(row activate) 상태(S230)로 천이되고, 로우 버퍼 히트(Row Buffer Hit)일 경우 읽기(Read)(S240)와 쓰기(Write)(S250) 동작을 수행할 수 있다.
로우 버퍼 미스(Row Buffer Miss)의 경우 프리 차징(Pre charging)(S260)을 수행하고 로우 활성화 상태(S230)로 천이한 후 읽기(S240) 및 쓰기(S250) 동작을 수행한다.
모든 동작이 수행 완료된 후 프리차징 상태(S260)를 거쳐서 다시 대기 상태(S210)로 천이하며, 다시 로우 활성화 상태(S230)로 천이하기 전까지 자동 휴식(auto refresh) 상태(S220)와 대기 상태(S210)를 번갈아 유지한다.
도 3은 본 발명의 실시예에 따른 메모리 구조를 분석하는 방법을 수행하기 위한 알고리즘을 설명하기 위한 예시도이다.
라인 1은 메모리 구조를 분석하기 위한 메모리의 시작 주소(start_addr)와 크기(size)를 나타낸다.
라인 2는 메모리 구조를 분석하기 위한 물리 메모리를 캐시라인 크기 단위로 접근할 수 있는 메모리 주소 변수를 선언하는 것을 나타낸다. 또한 메모리 주소 변수 cl_1은 메모리의 시작 주소(start_addr)로 초기화하고, 메모리 구조를 분석하기 위하여 메모리의 시작 주소(start_addr)를 유지한다.
라인 3은 메모리 구조를 분석하기 위한 물리 메모리를 캐시라인 크기 단위로 접근할 수 있는 다른 메모리 주소 변수를 선언하는 것을 나타낸다. 또한 메모리 주소 변수 cl_2는 메모리의 시작 주소(start_addr)에서 캐시라인 크기 단위로 증가한 두 번째 캐시라인에 해당하는 메모리 주소로 초기화한다.
라인 4는 메모리 구조를 분석하기 위한 영역인 메모리 시작 주소(start_addr)에서 메모리 크기(size)에 해당하는 영역을 캐시에서 제거하는 초기화 작업을 수행하여 메모리 구조 분석을 보장한다.
라인 5 내지 라인 14는 메모리 구조를 분석하기 위한 연산 수행 시간을 산출할 수 있는 동작을 수행한다.
라인 5, 라인 13 및 라인 14는 분석하기 위한 메모리 구조를 캐시라인 단위로 물리 메모리에 접근하도록 동작시키는 것으로 라인 13에서 메모리 주소 변수 cl_2가 캐시라인 단위로 증가하는 것을 나타내고 있으며, 라인 5에서 메모리 구조를 분석하기 위한 메모리의 영역을 벗어나지 않도록 메모리 주소 변수 cl_2의 값이 메모리 시작 주소의 값을 가진 cl_1이 분석하기 위한 메모리 크기(size)의 합보다 작은 조건을 만족하는 가를 판단한다.
라인 6은 연산 수행 시간을 산출하기 위하여 타이머를 시작하는 것을 나타낸다.
라인 7, 라인 8 및 라인 11은 버스 경쟁이나 명령어들간의 지연과 같은 노이즈의 발생이 메모리 구조의 분석에 영향이 없도록 물리 메모리에 일정 횟수만큼 반복하여 접근하도록 하며, 도 3에서는 하나의 예로 500회를 반복하도록 한다.
라인 9는 분석하기 위한 메모리의 시작 주소와 다른 메모리 주소를 가진 cl_2 메모리 주소 변수에 상응하는 물리 메모리의 데이터 값에 임의의 값을 증가시켜서 메모리 시작 주소 변수에 상응하는 물리 메모리에 할당하는 것을 나타낸다. 따라서, 메모리 주소 변수 cl_2를 이용하여 상응하는 물리 메모리에 접근하여 데이터 값을 획득하고, 메모리 주소 변수 cl_1을 이용하여 상응하는 물리 메모리에 접근하여 새로운 값을 저장한다.
라인 10은 메모리 주소 변수 cl_1에 상응하는 물리 메모리의 데이터의 값에 임의의 값을 증가시켜서 메모리 주소 변수 cl_2에 상응하는 물리 메모리에 할당하는 것을 나타낸다. 따라서, 메모리 주소 변수 cl_1에 상응하는 물리 메모리에 접근이 발생하고, 다시 메모리 주소 변수 cl_2에 상응하는 물리 메모리에 접근이 발생한다.
라인 9 및 라인 10을 수행함으로써 중앙처리장치(CPU) 내에서 메모리 주소 변수 cl_1 및 메모리 주소 변수 cl_2에 상응하는 메모리의 데이터를 접근하기 위하여 로우 버퍼를 확인하는 것을 보장할 수 있다.
라인 11은 물리 메모리에 미리 설정한 횟수만큼 반복적으로 접근하는 조건을 확인하며, 조건을 만족하였을 경우, 라인 12로 진행하여 연산 수행 시간을 측정하는 타이머를 정지한다.
라인 13은 메모리의 구조를 분석하기 위하여 캐시라인의 크기만큼 메모리 주소 변수 cl_2를 증가시키고 라인 6으로 진행할 수 있다.
요약하면, 도 3의 알고리즘은 구조를 분석하고자 하는 메모리의 시작 주소를 관리하는 메모리 주소 변수 cl_1과 캐시라인 단위로 증가하는 메모리 주소 변수 cl_2에 상응하는 물리 메모리에 번갈아 접근하여 연산을 수행하도록 함으로써 메모리가 로우 단위로 로우 버퍼에 데이터를 전송하는 특징에 따라 연산 수행 시간이 변화하는 것을 기초로 하여 메모리의 구조를 분석할 수 있다.
도 4는 본 발명의 실시예에 따른 메모리 구조를 분석하는 방법을 설명하기 위한 흐름도이다.
적어도 하나의 메모리 주소에 따라 캐시 라인 단위로 메모리에 접근한다(S410).
구조를 분석하고자 하는 메모리에 따른 접근하기 위하여 메모리 시작 주소와 메모리 종료 주소 또는 메모리 크기 정보가 필요하며, 캐시 라인 단위로 메모리에 접근하기 위하여 캐시 라인 단위의 적어도 하나의 메모리 주소 변수를 설정할 수 있고, 캐시 라인 단위로 메모리 주소 변수를 증가시켜 메모리 주소 변수에 상응하는 물리 메모리에 접근함으로써 메모리 구조 분석을 수행할 수 있다.
메모리 주소 변수는 분석하고자 하는 메모리 시작 주소를 관리하는 제1 메모리 주소 변수와 캐시 라인 단위로 증가시키며 메모리 구조를 분석하기 위한 제2 메모리 주소 변수를 설정할 수 있다. 즉, 제1 메모리 주소 및 제2 메모리 주소에 기반하여 메모리에 미리 설정된 반복 횟수만큼 접근하되, 제1 메모리 주소에 미리 설정된 주소 크기만큼 증가시켜 제2 메모리 주소를 결정할 수 있다. 여기서, 제1 메모리 주소 변수는 도 3에서 상술한 메모리 주소 변수 cl_1을 의미하고, 제2 메모리 주소 변수는 도 3에서 상술한 메모리 주소 변수 cl_2를 의미할 수 있다. 또한, 미리 설정된 주소 크기는 64B일 수 있다.
캐시 라인 단위로 메모리에 접근하여 적어도 하나의 메모리 주소에 상응하는 데이터에 대한 연산 수행 시간을 산출한다(S430).
메모리 구조를 분석하기 위하여 로우 버퍼 충돌이 발생 가능한 연산을 수행하고 이에 따른 연산 수행 시간을 산출한다.
로우 버퍼 충돌이 발생할 수 있도록 제1 메모리 주소 변수와 제2 메모리 주소 변수에 상응하는 물리 메모리에 번갈아서 접근하는 연산을 수행한다. 따라서, 연산 수행 시간은 제1 메모리 주소와 상기 제2 메모리 주소에 상응하는 로우(row)에 포함된 데이터를 로우 단위로 로우 버퍼를 통하여 읽어오는 시간을 기초로 할 수 있다.
또한, 중앙처리장치(CPU)에서 제1 메모리 주소 변수와 제2 메모리 주소 변수에 상응하는 물리 메모리의 데이터를 로우 버퍼(125)에서 확인하는 것을 보장하기 위하여 제1 메모리 주소 변수와 제2메모리 주소 변수에 상응하는 물리 메모리에 다른 순서로 번갈아서 접근하는 연산을 추가할 수 있다.
산출된 연산 수행 시간에 기반하여 메모리의 구조를 분석한다(S450).
즉, 산출된 연산 수행 시간을 다른 메모리 주소에 대하여 산출된 연산 수행 시간과 비교하여 해당 메모리 주소에 대한 로우 버퍼 충돌 여부를 판단하여 메모리의 구조를 분석할 수 있다.
상세하게는, 연산 수행 시간이 변화하는 패턴에 기반하여 로우 버퍼 충돌을 판단할 수 있다. 예컨대, 제1 메모리 주소와 제2 메모리 주소에서 로우 버퍼 충돌이 발생한 것으로 판단할 수 있으며, 로우 버퍼 충돌이 발생한 제1 메모리 주소와 제2 메모리 주소가 서로 다른 메모리 로우에 매핑되는 것으로 판단할 수 있다.
도 5는 본 발명의 실시예에 따른 메모리 구조를 분석하는 장치를 설명하기 위한 블록도이다.
도 5를 참조하면, 본 발명의 실시예에 따른 메모리 구조를 분석하는 장치(500)는, 접근 요청부(510), 버퍼 충돌 확인부(520) 및 메모리 구조 판단부(530)를 포함한다.
접근 요청부(510)는 적어도 하나의 물리 메모리 주소에 따라 캐시 라인 단위로 메모리에 접근을 요청할 수 있다.
상세하게는, 접근 요청부(510)는 제1 메모리 주소 및 제2 메모리 주소에 기반하여 메모리에 미리 설정된 반복 횟수만큼 접근시키되, 제1 메모리 주소에 미리 설정된 주소 크기만큼 증가시켜 제2 메모리 주소를 결정할 수 있다. 여기서, 미리 설정된 주소 크기는 64B일 수 있다.
또한, 접근 요청부(510)는 제2 메모리 주소와 제1 메모리 주소를 차례로 접근시키고, 다시 제1 메모리 주소와 제2 메모리 주소를 차례로 접근시킬 수 있다.
버퍼 충돌 확인부(520)는 캐시 라인 단위로 메모리에 접근하여 적어도 하나의 물리 메모리 주소에 상응하는 데이터에 대한 연산 수행 시간을 산출할 수 있다. 여기서, 연산 수행 시간은 제1 메모리 주소와 제2 메모리 주소에 상응하는 로우(row)에 포함된 데이터를 로우 단위로 로우 버퍼를 통하여 읽어오는 시간을 기초로 할 수 있다.
메모리 구조 판단부(530)는 산출된 연산 수행 시간에 기반하여 메모리의 구조를 판단할 수 있다. 상세하게는, 메모리 구조 판단부(530)는 연산 수행 시간이 변화하는 패턴에 기반하여 로우 버퍼 충돌을 판단할 수 있다. 또한, 메모리 구조 판단부(530)는 연산 수행 시간이 증가하는 지점에 상응하는 제1 메모리 주소와 제2 메모리 주소에서 로우 버퍼 충돌이 발생한 것으로 판단할 수 있으며, 로우 버퍼 충돌이 발생한 제1 메모리 주소와 제2 메모리 주소가 서로 다른 메모리 로우에 매핑되는 것으로 판단할 수 있다.
상술한 본 발명의 실시예에 따른 메모리 구조를 분석하는 장치(500)의 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 설명하였으나, 각 구성부 중 적어도 두 개가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수개의 구성부로 나뉘어져 기능을 수행할 수 있고 이러한 각 구성부의 통합 및 분리된 실시예의 경우도 본 발명의 본질에서 벋어나지 않는 한 본 발명의 권리범위에 포함된다.
도 6은 본 발명의 실시예에 따른 메모리 구조 분석을 통한 시뮬레이션 결과를 나타내는 도면이다.
도 6은 Intel XEON x5570 프로세서를 사용하며 1개의 노드를 가진 16GB DDR3 메모리를 가진 IBM X3650 M2 시스템에서 메모리 분석 도구를 수행한 결과를 나타낸 도면이다.
본 발명에서 검증한 시스템은 총 3개의 채널로 구성되며, 각 채널은 4개의 랭크로 이루어져 있으며, 1개의 랭크는 8개의 뱅크로 구성되어 있다. 각 뱅크는 32K개의 로우를 가지고 있으며, 각 로우의 사이즈는 4KB로 구성된다.
X축은 반복횟수를 나타내며, Y축은 연산 수행 시간 결과를 나타낸다. X축으로 메모리의 주소를 알 수 있는데 이는 메모리 주소 변수 cl_2의 초기값 + 64×반복 횟수(cl_2의 메모리 주소 증가 횟수)와 대응 된다. 예를 들어, 메모리 주소 변수 cl_2의 초기 값이 100번지라고 하면, 100번 반복했을 경우(100회 cl_2의 메모리 주소를 반복하여 증가시켜 연산을 수행했을 경우) 6500번지가 된다. 도 6의 (d)를 참조하면 총 2백만번을 반복하여 메모리 주소 변수 cl_2의 주소를 증가시키며 연산을 수행한 것으로 총 128MB의 메모리에 대하여 수행한 결과임을 나타낸다. 그리고, Y축이 대부분을 차지하는 약 1950us의 수행시간 보다 더 큰 수행시간을 나타내는 2150us 이상의 수행시간일 경우 로우 버퍼 충돌이 발생한 주소라는 것을 알 수 있다.
먼저 도 6의 (a)를 살펴보면 연속된 3개의 주소 중, 1개의 수행 시간이 항상 높은 것을 알 수 있다. 이는 로우 버퍼 충돌이 발생한 것으로 판단할 수 있으며, 분석에 사용된 시스템이 3채널로 구성되어 있으며 수행 시간의 결과를 기초로 하여 분석에 사용된 시스템의 채널 인터리빙이 캐시라인 단위로 수행되는 것을 알 수 있다.
다음으로 도 6의 (b)에서 전체 128KB의 메모리 영역에 대하여 연산 수행 시간의 측정결과를 살펴보면 64번의 도 6의 (a)와 같은 결과를 확인할 수 있으며, 따라서 로우의 크기가 4KB로 판단할 수 있다.
다음으로 도 6의 (c)에서 도 6의 (b)의 경우가 96KB 단위로 반복된 것을 확인할 수 있고, 따라서 8개의 뱅크로 이루어진 것으로 판단할 수 있으며, 뱅크 인터리빙이 3개의 로우 단위로 구성되는 것을 알 수 있다. 또한 총 3MB의 메모리 범위 내에서 도 6의 (b)의 경우가 32번 발생하고, 도 6의 (d)에서 도 6의 (c)가 12MB 단위로 반복되어 발생하는 것을 기초로 하여 랭크 인터리빙이 3MB 단위로 수행됨을 판단할 수 있다.
상술한 본 발명의 실시예에 따른 메모리 구조를 분석하는 방법 및 장치는 캐시 라인을 단위로 하여 멀티 뱅크 메모리에 순차적으로 접근하여 연산 수행 시간의 패턴을 분석함으로써 메모리의 구조를 용이하게 분석할 수 있다.
또한, 메모리 구조에 대한 분석을 통하여 로우 버퍼 충동을 최소화함으로써 전체적인 시스템 성능을 향상시킬 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
110 : 메모리 컨트롤러 120 : 칩
121 : 뱅크 123 : 로우
125 : 로우 버퍼
500: 메모리 구조 분석 장치 510: 접근 요청부
520: 버퍼 충돌 확인부 530: 메모리 구조 판단부

Claims (16)

  1. 멀티 뱅크로 구성된 메모리의 구조를 분석하는 방법에 있어서,
    적어도 하나의 메모리 주소에 따라 캐시 라인 단위로 상기 메모리에 접근하는 단계;
    상기 캐시 라인 단위로 상기 메모리에 접근하여 상기 적어도 하나의 메모리 주소에 상응하는 데이터에 대한 연산 수행 시간을 산출하는 단계;
    상기 산출된 연산 수행 시간에 기반하여 상기 메모리의 구조를 판단하는 단계를 포함하되,
    상기 메모리의 구조를 판단하는 단계는,
    상기 산출된 연산 수행 시간이 변화하는 패턴을 분석하여 상기 연산 수행 시간이 증가하는 지점에 상응하는 제1 메모리 주소와 제2 메모리 주소에서 로우 버퍼 충돌이 발생한 것으로 판단하고, 상기 로우 버퍼 충돌이 발생한 상기 제1 메모리 주소와 상기 제2 메모리 주소가 서로 다른 메모리 로우에 매핑되는 것으로 판단하는 것을 특징으로 하는 메모리 구조를 분석하는 방법.
  2. 청구항 1에 있어서,
    상기 메모리에 접근하는 단계는
    상기 제1 메모리 주소 및 상기 제2 메모리 주소에 기반하여 상기 메모리에 미리 설정된 반복 횟수만큼 접근하되,
    상기 제1 메모리 주소에 미리 설정된 주소 크기만큼 증가시켜 상기 제2 메모리 주소를 결정하는 것을 특징으로 하는 메모리 구조를 분석하는 방법.
  3. 청구항 2에 있어서,
    상기 메모리에 접근하는 단계는
    상기 제2 메모리 주소와 상기 제1 메모리 주소를 차례로 접근하고, 다시 상기 제1 메모리 주소와 상기 제2 메모리 주소를 차례로 접근하는 것을 특징으로 하는 메모리 구조를 분석하는 방법.
  4. 청구항 2에 있어서,
    상기 미리 설정된 주소 크기는 64B인 것을 특징으로 하는 메모리 구조를 분석하는 방법.
  5. 청구항 1에 있어서,
    상기 연산 수행 시간은
    상기 제1 메모리 주소와 상기 제2 메모리 주소에 상응하는 로우(row)에 포함된 데이터를 로우 단위로 로우 버퍼를 통하여 읽어오는 시간을 기초로 하는 것을 특징으로 하는 메모리 구조를 분석하는 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 멀티 뱅크로 구성된 메모리의 구조를 분석하는 장치에 있어서,
    적어도 하나의 물리 메모리 주소에 따라 캐시 라인 단위로 상기 메모리에 접근을 요청하는 접근 요청부;
    상기 캐시 라인 단위로 상기 메모리에 접근하여 상기 적어도 하나의 물리 메모리 주소에 상응하는 데이터에 대한 연산 수행 시간을 산출하는 버퍼 충돌 확인부;
    상기 산출된 연산 수행 시간에 기반하여 상기 메모리의 구조를 판단하는 메모리 구조 판단부를 포함하되,
    상기 메모리 구조 판단부는,
    상기 산출된 연산 수행 시간이 변화하는 패턴을 분석하여 상기 연산 수행 시간이 증가하는 지점에 상응하는 제1 메모리 주소와 제2 메모리 주소에서 로우 버퍼 충돌이 발생한 것으로 판단하고, 상기 로우 버퍼 충돌이 발생한 상기 제1 메모리 주소와 상기 제2 메모리 주소가 서로 다른 메모리 로우에 매핑되는 것으로 판단하는 것을 특징으로 하는 메모리 구조를 분석하는 장치.
  10. 청구항 9에 있어서,
    상기 접근 요청부는,
    상기 제1 메모리 주소 및 상기 제2 메모리 주소에 기반하여 상기 메모리에 미리 설정된 반복 횟수만큼 접근시키되,
    상기 제1 메모리 주소에 미리 설정된 주소 크기만큼 증가시켜 상기 제2 메모리 주소를 결정하는 것을 특징으로 하는 메모리 구조를 분석하는 장치.
  11. 청구항 9에 있어서,
    상기 접근 요청부는,
    상기 제2 메모리 주소와 상기 제1 메모리 주소를 차례로 접근시키고, 다시 상기 제1 메모리 주소와 상기 제2 메모리 주소를 차례로 접근시키는 것을 특징으로 하는 메모리 구조를 분석하는 장치.
  12. 청구항 10에 있어서,
    상기 미리 설정된 주소 크기는 64B인 것을 특징으로 하는 메모리 구조를 분석하는 장치.
  13. 청구항 9에 있어서,
    상기 연산 수행 시간은,
    상기 제1 메모리 주소와 상기 제2 메모리 주소에 상응하는 로우(row)에 포함된 데이터를 로우 단위로 로우 버퍼를 통하여 읽어오는 시간을 기초로 하는 것을 특징으로 하는 메모리 구조를 분석하는 장치.
  14. 삭제
  15. 삭제
  16. 삭제
KR1020130142153A 2013-03-04 2013-11-21 메모리 구조를 분석하는 방법 및 장치 KR101574394B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130022605 2013-03-04
KR20130022605 2013-03-04

Publications (2)

Publication Number Publication Date
KR20140109237A KR20140109237A (ko) 2014-09-15
KR101574394B1 true KR101574394B1 (ko) 2015-12-04

Family

ID=51755975

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130142153A KR101574394B1 (ko) 2013-03-04 2013-11-21 메모리 구조를 분석하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101574394B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102359404B1 (ko) * 2014-11-19 2022-02-15 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
멀티-코어 멀티-뱅크에서의 메모리 참조 패턴에 따른 성능 분석, 이상엽, 단국대학교 대학원 석사학위논문(2012.06.)

Also Published As

Publication number Publication date
KR20140109237A (ko) 2014-09-15

Similar Documents

Publication Publication Date Title
JP6761873B2 (ja) セルフリフレッシュステートマシンmopアレイ
US7536530B2 (en) Method and apparatus for determining a dynamic random access memory page management implementation
US8977811B2 (en) Scalable schedulers for memory controllers
US11379381B2 (en) Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
US11392488B2 (en) Optimizing storage of application data in memory
CN109952567B (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
KR102448999B1 (ko) 캐시 및 다중 독립 어레이를 갖는 메모리용 인터페이스
EP4004744A1 (en) Memory-aware pre-fetching and cache bypassing systems and methods
JP4395511B2 (ja) マルチcpuシステムのメモリアクセス性能を改善する方法及び装置
Zhang et al. DrMP: Mixed precision-aware DRAM for high performance approximate and precise computing
US6801982B2 (en) Read prediction algorithm to provide low latency reads with SDRAM cache
KR101574394B1 (ko) 메모리 구조를 분석하는 방법 및 장치
US9496009B2 (en) Memory with bank-conflict-resolution (BCR) module including cache
CN113826083A (zh) 处理器侧事务上下文存储器接口系统和方法
US10366007B2 (en) Apparatuses and methods for determining efficient memory partitioning
US8639879B2 (en) Sorting movable memory hierarchies in a computer system
CN115269199A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US9658976B2 (en) Data writing system and method for DMA
US20130262727A1 (en) Race free interrupt
CN114218136A (zh) 一种面向脉动阵列的面积友好存储地址映射方法
Lin et al. DRAM-level prefetching for fully-buffered DIMM: Design, performance and power saving
Zhang Improving Data Movement Efficiency in the Memory Systems for Irregular Applications
Bhadauria et al. Optimizing thread throughput for multithreaded workloads on memory constrained CMPs
US20230028952A1 (en) Memory device performing in-memory operation and method thereof
US20170075571A1 (en) Memory device and control method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20181108

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 5