KR100938903B1 - 불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법 - Google Patents

불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법 Download PDF

Info

Publication number
KR100938903B1
KR100938903B1 KR1020070124917A KR20070124917A KR100938903B1 KR 100938903 B1 KR100938903 B1 KR 100938903B1 KR 1020070124917 A KR1020070124917 A KR 1020070124917A KR 20070124917 A KR20070124917 A KR 20070124917A KR 100938903 B1 KR100938903 B1 KR 100938903B1
Authority
KR
South Korea
Prior art keywords
clusters
access
memory
array elements
cache memory
Prior art date
Application number
KR1020070124917A
Other languages
English (en)
Other versions
KR20090058232A (ko
Inventor
백윤흥
조두산
이종원
Original Assignee
재단법인서울대학교산학협력재단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 재단법인서울대학교산학협력재단 filed Critical 재단법인서울대학교산학협력재단
Priority to KR1020070124917A priority Critical patent/KR100938903B1/ko
Publication of KR20090058232A publication Critical patent/KR20090058232A/ko
Application granted granted Critical
Publication of KR100938903B1 publication Critical patent/KR100938903B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B20/1217Formatting, e.g. arrangement of data block or words on the record carriers on discs
    • G11B2020/1218Formatting, e.g. arrangement of data block or words on the record carriers on discs wherein the formatting concerns a specific area of the disc
    • G11B2020/1221Formatting, e.g. arrangement of data block or words on the record carriers on discs wherein the formatting concerns a specific area of the disc cluster, i.e. a data structure which consists of a fixed number of sectors or ECC blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 소프트웨어에 의해 제어되는 캐시 메모리의 데이터 레이아웃을 편성하는 방법에 관한 것으로서, 특히 불규칙한 데이터 접근 패턴을 갖는 애플리케이션이 실행되는 경우에도 실시간으로 효율적인 데이터 할당을 수행할 수 있는 스크래치 패드 메모리의 데이터 할당 방법에 관한 것이다.
본 발명의 일 실시 예에 따른 스크래치 패드 메모리의 데이터 할당 방법은, 불규칙한 메모리 접근 패턴을 갖는 애플리케이션에 대한 소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터 할당 방법에 있어서, 프로파일링을 통해 상기 애플리케이션을 구성하는 배열 요소들에 대한 접근 자취를 획득하고, 상기 획득된 접근 자취를 통해 접근 패턴을 분석하는 단계, 상기 배열 요소들의 접근 빈도를 바탕으로 재사용 인자를 산출하고, 상기 산출된 재사용 인자가 일정한 값 이상인 후보 배열 요소들을 선택하는 단계, 및 상기 후보 배열 요소들을 수명 유사성을 바탕으로 복수 개의 클러스터들로 분류하고, 상기 분류된 클러스터들을 상기 캐시 메모리에 할당하는 단계를 포함하는 것을 특징으로 한다.
스크래치 패드 메모리, 클러스터, 프로파일링, 메모리 할당

Description

불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한 소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터 할당 방법{Dynamic data allocation method on an application with irregular array access patterns in software controlled cache memory}
본 발명은 소프트웨어에 의해 제어되는 캐시 메모리의 데이터 레이아웃을 편성하는 방법에 관한 것으로서, 특히 불규칙한 데이터 접근 패턴을 갖는 애플리케이션이 실행되는 경우에도 실시간으로 효율적인 데이터 할당을 수행할 수 있는 스크래치 패드 메모리의 데이터 할당 방법에 관한 것이다.
멀티미디어 스트리밍과 같은 수많은 내장형 애플리케이션들은 임계 루프 안에 중첩된 메모리 집약형 접근을 갖는다. 그러한 루프 집약형 애플리케이션에서 시간적 지역성을 이용하는 것은, 메모리 시스템의 성능을 개선하고 에너지 효율을 높이기 위해서 효율적이다. 종래에는 이러한 시간적 지역성을 이용하기 위해서 하드웨어 제어방식의 캐시 메모리를 이용하였고, 이는 대체로 범용 아키텍처에 대해서는 어느 정도 효과적인 방법이었다.
그러나, 종래와 같이 하드웨어에 기반한 구현방식을 이용하면, 데이터의 존 재 유무를 확인하기 위해 필요한 태그회로가 부가적으로 필요하므로 전력 소비와 칩 면적이 증가하고, 장래의 메모리 접근에 대한 정보가 없기 때문에 캐시 메모리 내에서 최적의 데이터 배치를 수행하기 어려운 문제점이 있었다. 또한, 실행되는 모든 프로그램이 충분한 공간적 지역성을 확보할 수 있는 것이 아니기 때문에, 효과적인 데이터 프리패칭을 수행할 수 없는 문제점이 있었다.
상기와 같은 문제점을 해결하기 위해서, 소프트웨어 제어방식의 캐시 메모리가 등장하였다. 이는 일반적으로 스크래치 패드 메모리라고 불리는데, 하드웨어에 기반한 구현방식과 달리, 자신만의 고유 주소영역을 할당받으므로, 메인 메모리에서 캐시 메모리로 데이터 또는 명령어를 동적으로 매핑하기 위해 별도의 하드웨어 로직이 필요하지 않아 전력과 면적 측면에서 효율적이고, 정적 타이밍 분석이 가능하기 때문에 보다 나은 접근 시간 예측가능성을 제공한다.
현재, ARM10E, ADSP TS201S, MMC221,TI, TMS370CX7X 등과 같은 내장형 프로세서에서는 스크래치 패드 메모리가 캐시 메모리 전체 또는 일부를 대체하고 있다. 따라서, 스크래치 패드 메모리를 효율적으로 사용하여 메모리 시스템의 효능을 높이는 것이 중요하다. 이를 위해, 종래에는 규칙적인 데이터 접근 패턴을 갖는 애플리케이션을 가정하고, 메인 메모리에 자주 접근하는 데이터와 명령어를 스크래치 패드 메모리로 효율적으로 할당하는 연구에 중점을 맞춰왔다.
그러나, 내장형 시스템에는 이러한 규칙적인 데이터 접근 패턴을 갖는 애플리케이션뿐만 아니라, 불규칙한 데이터 접근 패턴을 갖는 내장형 애플리케이션(예를 들어, 해시(Hash) 함수를 포함하는 애플리케이션) 또한 다수 존재한다. 결과적 으로, 이는 메모리 접근 패턴을 뽑아내기 위한 정적 분석을 어렵게 만들어, 성능과 전력 개선을 위한 스크래치 패드 메모리의 효율적인 사용을 어렵게 만든다.
일반적으로 캐시 메모리에 데이터를 어떠한 방식으로 효율적으로 배치할 것인지에 대한 문제는 메인 메모리에 대한 접근을 가능한 작게 만드는 문제와 동일하다. 따라서, 좋은 데이터 배치는 대부분의 자주 사용되는 명령어 또는 데이터를 캐시 메모리에 할당하는 것을 가능하게 해야 한다. 그러나, 정적 할당 방법과 달리 동적 할당방법에서 효율적인 데이터 배치가 어려운 단점이 있다.
본 발명이 해결하고자 하는 기술적 과제는, 프로파일링에 기초하여 생성한 메모리 접근 자취를 이용하여 스크래치 패드 메모리에 할당하기에 적합한 데이터를 탐색하고, 탐색한 데이터가 캐시 메모리에 효율적으로 배치될 수 있도록 휴리스틱 방법을 이용하여 데이터를 배치하는 불규칙한 메모리 접근 패턴을 위한 소프트웨어 제어 메모리의 동적 데이터 할당 방법을 제공하는 데 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시 예에 따른 동적 데이터 할당 방법은,
불규칙한 메모리 접근 패턴을 갖는 애플리케이션에 대한 소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터 할당 방법에 있어서, 프로파일링을 통해 상기 애플리케이션을 구성하는 배열 요소들에 대한 접근 자취를 획득하고, 상기 획득된 접근 자취를 통해 접근 패턴을 분석하는 단계, 상기 배열 요소들의 접근 빈도를 바탕으로 재사용 인자를 산출하고, 상기 산출된 재사용 인자가 일정한 값 이상인 후보 배열 요소들을 선택하는 단계, 및 상기 후보 배열 요소들을 수명 유사성을 바탕으로 복수 개의 클러스터들로 분류하고, 상기 분류된 클러스터들을 상기 캐시 메모리에 할당하는 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 후보 배열 요소들을 선택하는 단계는, 각각의 배열 요소에 대한 접근 빈도를 각각의 배열 요소의 용량으로 제산하여 상기 재사용 인자를 산출하고, 상기 산출된 재사용 인자가 2 이상인 값을 상기 후보 배열 요소로 선택하는 단계이다.
바람직하게는, 상기 클러스터들로 분류하는 단계는, 상기 후보 배열 요소들에 대한 마지막 접근 시간 정보를 획득하고, 상기 획득한 시간 정보들 사이의 시간적 근접성을 바탕으로 상기 후보 배열 요소들을 복수 개의 클러스터들로 분류하는 단계이다.
바람직하게는, 상기 클러스터들로 분류하는 단계는, 상기 획득한 시간 정보들 사이의 유클리드 거리를 산출하고, 상기 산출된 유클리드 거리가 일정한 값 이하인 후보 배열 요소들을 그룹화하여 상기 후보 배열 요소들을 복수 개의 클러스터들로 분류하는 단계이다.
바람직하게는, 상기 캐시 메모리에 할당하는 단계는, 상기 분류된 클러스터들을 2차원 좌표계 형태의 배낭 문제로 정형화하여 상기 캐시 메모리에 할당하게 될 최종 클러스터를 결정하는 단계이다.
바람직하게는, 상기 최종 클러스터를 결정하는 단계는, 상기 분류된 클러스터들 중에서 상기 캐시 메모리의 용량을 초과하는 클러스터를 상기 최종 클러스터로 결정하지 않는 단계이다.
바람직하게는, 상기 최종 클러스터를 결정하는 단계는, 상기 분류된 클러스터들 중에서 동일한 시간에 접근되는 적어도 하나의 클러스터의 용량이 상기 캐시 메모리의 용량을 초과하지 않는 경우, 상기 동일한 시간에 접근되는 클러스터들을 상기 최종 클러스터로 결정하는 단계이다.
바람직하게는, 상기 최종 클러스터들을 결정하는 단계는, 상기 분류된 클러스터들 중에서 인접하는 시간에 모두 접근되는 적어도 하나의 클러스터가 각각의 시간에 대해 동일한 용량을 갖는 경우, 상기 클러스터의 일부를 상기 최종 클러스터로 결정하는 단계이다.
바람직하게는, 상기 최종 클러스터들을 결정하는 단계는, 상기 분류된 클러스터들 중에서 인접하는 시간에 모두 접근되는 클러스터가 하나도 존재하지 않는 경우, 상기 시간의 경계선을 기준으로 상기 분류된 클러스터들을 서로 다른 클러스터 그룹으로 분할하는 단계를 포함한다.
본 발명에 따른 소프트웨어 제어 메모리의 동적 데이터 할당 방법은, 암호 분야 또는 통신 분야에서 사용되는 애플리케이션에서 나타나는 모든 종류의 불규칙한 접근 패턴을 갖는 데이터 배열을 스크래치 패드 메모리에 효율적으로 할당할 수 있는 장점이 있다. 이로 인해, 종래의 하드웨어 캐시 메모리 기반의 시스템이 비해 최대 36%의 전력소비 감소와 최대 22%의 실행시간 단축을 가져올 수 있는 효과가 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는, 본 발명의 바람직한 실시 예를 나타내는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명한 다. 본 발명을 설명함에 있어, 관련된 공지의 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도 1은 내장형 프로세서 시스템의 구성을 나타내는 블록 다이어그램이다.
도 1을 참조하면, 내장형 프로세서 시스템(100)은, 프로세서 코어(110), 스크래치 패드 메모리(120), 및 메인 메모리(130)를 포함한다. 이하, 이들 구성요소들에 대해 상세히 설명한다.
프로세서 코어(110)는, 스크래치 패드 메모리(120)에 필요한 명령어 또는 데이터가 저장되어 있는지를 확인하고, 저장되어 있는 것으로 판명되면, 해당 명령어 또는 데이터를 읽어온다. 그러나, 저장되어 있지 않은 것으로 판명되면, 메인 메모리(130)에 저장된 해당 명령어 또는 데이터를 스크래치 패드 메모리(120)에 복사한다. 이는 메인 메모리(130)에서 스크래치 패드 메모리(120)로 명령어 또는 데이터를 복사하기 위한 코드를 원래의 프로그램에 추가하는 것을 의미한다.
스크래치 패드 메모리(120)는, 기존의 캐시 메모리처럼 프로세서 코어(110)의 근처에 배치된다. 애플리케이션 측면에서는 스크래치 패드 메모리(120)에 있는 배열에 접근하는 것이 메인 메모리에 있는 배열에 접근하는 것과 같지만, 속도에 있어서는 스크래치 패드 메모리(120)에 접근하는 것이 훨씬 빠르기 때문이다. 한편, 스크래치 패드 메모리(120)를 어떤 방식으로 사용할지, 즉 어떠한 명령어 또는 데이터를 어떠한 공간에 저장할지는 제어 프로그램에 따라 판단된다.
스크래치 패드 메모리(120) 기반의 내장형 프로세서 시스템(100)에서는, 정 확한 지역성 정보를 이용하여 효율적인 데이터 배치를 수행하는 것이 중요하다. 왜냐하면, 이는 스크래치 패드 메모리(120)와 메인 메모리(130) 사이의 데이터 전송을 줄일 수 있기 때문이다. 한편, 규칙적인 애플리케이션은 데이터 접근이 규칙적이기 때문에 정적 분석을 통해 스크래치 패드 메모리(120)의 활용 정보를 얻을 수 있지만, 불규칙한 애플리케이션은 데이터 접근이 불규칙적이기 때문에 정적 분석을 통해 얻은 정보가 정확하다고 보장할 수 없다.
도 2는 불규칙한 애플리케이션이 포함하는 코드를 나타내는 도면이다.
도 2를 참조하면, 저장 장치, 무선 통신, 및 디지털 텔레비전에서 상업용 애플리케이션으로 널리 사용되는 Reed-Solomon Error Control Code로부터 추출된 로프 코드가 도시되어 있다. 이하, 이들 구성요소들에 대해 상세히 설명한다. 이하, 하기에서 기술하는 배열은 명령어 배열 및/또는 데이터 배열을 나타낸다.
상기 루프 코드에는 4개의 배열들(S,a,inva,tx)이 도시되어 있는데, 이러한 배열들이 메인 메모리로부터 스크래치 패드 메모리로 복사될 가능성이 있는 잠재적 후보들이다. 여기서, 배열들(S,tx)은 선형 함수를 통해 직접 인덱싱되어 메모리에 규칙적으로 접근되고, 배열(inva)은 직접 인덱싱되는 배열(tx)을 통해 간접 인덱싱되어 메모리에 규칙적으로 접근된다. 따라서, 상기 배열들(S, inva, tx)에 대해서는 신뢰성이 있는 정적 분석을 수행할 수 있다.
한편, 다른 하나의 배열(a)은 비선형 함수를 통해 간접 인덱싱되어 메모리에 불규칙적으로 접근된다. 따라서, 종래의 방식에서는 배열(a) 전체를 스크래치 패드 메모리에 복사해야 한다. 그러나, 배열(a)의 크기가 스크래치 패드 메모리 용량보 다 클 수 있으므로 이러한 복사가 항상 가능한 것이 아니다. 따라서, 이와 같이 메모리에 불규칙적으로 접근하는 배열을 어떠한 방식으로 스크래치 패드 메모리에 할당할지가 문제가 된다.
도 3은 불규칙한 접근 패턴을 갖는 애플리케이션의 메모리 접근 자취를 나타내는 도면이다.
도 3을 참조하면, 불규칙한 접근 패턴을 갖는 애플리케이션을 프로파일링 한 결과 생성된 메모리 접근 자취 정보가 나타나 있다. X축은 가장 안쪽의 루프 반복 숫자를 나타내고, Y축은 배열 인덱스 번호를 나타낸다. 특히, 각각의 배열은 서로 다른 복수 개의 접근(재사용)을 가질 수 있다. 이로 인해, 재사용되는 배열들은 시간적, 공간적으로 널리 흩어질 수 있다. 따라서, 기존의 정적 분석을 통해 접근 패턴을 분석하는 것이 사실상 불가능하다.
한편, 스크래치 패드 메모리의 효율적인 사용에 관한 연구가 활발하게 이루어지고 있는데, 이는 두 가지 측면, 즉 정적 방법과 동적 방법으로 나누어진다. 정적 방법은, 어떠한 명령어 또는 데이터가 스크래치 패드 메모리에 할당해야 할지를 컴파일 시간에 결정하고, 결정된 결과가 프로그램이 실행되는 동안에는 변하지 않는 것을 말한다. 그러나, 프로그램이 실행되는 동안에 명령어 또는 데이터가 일부만 사용된다는 점에서 정적 방법은 최적의 방법은 아니다.
동적 방법은, 스크래치 패드 메모리에 초기에 할당된 데이터 또는 명령어를 프로그램이 실행되는 중간에 변경할 수 있는 것을 말한다. 이는 정적 방법에 비해 분명 효율적이다. 예를 들어, 이는 배열 할당 문제를 레지스터 할당을 위한 그래프 컬러링 기법에 맞게 적용시킨 메모리 컬러링 방법을 이용할 수 있다. 그러나, 종래의 동적 방법은 할당된 데이터 배열 조각의 크기가 레지스터 크기보다 큰 경우에는 내부 메모리 단편화를 일으키기 쉬운 단점이 있다.
도 4는 본 발명에 따른 동적 데이터 할당 방법을 나타내는 흐름도이다. 도 5는 본 발명에 따른 배열 요소들의 클러스터링 과정을 나타내는 도면이다. 이하, 도 5를 중심으로 하고, 도 3 및 도 5 참조하여 설명한다.
프로파일링을 통해 명령어 및/또는 데이터 배열 요소들의 접근 자취를 획득하고, 획득된 접근 자취를 통해 접근 패턴을 분석한다(410). 구체적으로, 애플리케이션을 서로 다른 입력에 대해 복수 회 실행시키고, 그 결과 산출된 각 입력에 대한 배열 요소들의 접근 자취를 분석한다. 상기 접근 자취는 배열 소자들에 대한 접근 횟수 및 간격을 포함하며, 도 3에 나타난 형태를 가질 수 있다.
이와 같은 방법으로 획득된 접근 자취는 애플리케이션에서 해당 배열 요소가 얼마나 자주 접근되는지를 나타낸다. 즉, 배열 접근 자취는 해당 배열 요소에 대한 시간적 및 공간적 접근 정보를 포함한다. 한편, 획득한 배열 요소들의 접근 자취를 통해 분석된 접근 패턴은 하기에서 기술하는 바와 같이 재사용 인자를 산정하는데 이용될 수 있다. 접근 패턴은 접근 빈도를 포함한다.
배열 요소들의 접근 패턴을 통해 각각의 배열 요소에 대한 재사용 인자를 산출한다(420). 각각의 배열 요소는 서로 다른 크기(용량)를 가질 수 있으므로 접근 빈도가 높다 하더라도 반드시 메모리로의 할당 이득이 높다고는 볼 수 없다. 따라서, 하기와 같은 수식을 이용하여 할당 이득에 대응되는 재사용 인자를 산출한다. 재사용 인자는 할당 이득의 판정 기준이 된다.
Figure 112007087249393-pat00001
여기서, Tni는 n개의 배열 요소들 중 i번째 배열 요소의 데이터 재사용 인자를 나타내며, 이는 상기 배열 요소의 추정된 크기인 N 워드와 상기 배열 요소의 접근 빈도 F에 의존함을 나타낸다. 각 배열 요소에 대한 재사용 인자가 산출되면, 소정 값 이상의 재사용 인자를 가진 배열 요소들을 후보 배열 요소로 선택한다(430).
배열 요소들의 접근 패턴을 통해 각각의 후보 배열 요소에 대한 수명을 분석한다(440). 구체적으로, 상기 선택된 후보 배열 요소들에 대한 접근 정보를 바탕으로 마지막 접근 시간을 탐색한다. 산출된 마지막 접근 시간을 바탕으로 배열 요소들 사이의 유클리드 거리를 산출한다. 여기서, 상기 유클리드 거리는 시간적 거리를 나타낸다.
산출된 유클리드 거리가 소정 값 이하인 배열 요소들을 하나의 클러스터로 통합한다(450). 이는 상기 선택된 후보 배열 요소들을 비슷한 수명(마지막 접근시간)을 가진 복수 개의 클러스터들로 분류하는 것을 의미한다. 상기 클러스터는 도 5에 나타난 형태가 될 수 있다. 하나의 클러스터는 스크래치 패드 메모리로 할당되는 기본 단위가 된다.
한편, 스크래치 패드 메모리는 일반적으로 크기가 작기 때문에(1K~16K), 상기 복수 개로 분류된 클러스터들 모두를 메모리에 할당할 수 없는 경우가 발생할 수 있다. 즉, 클러스터의 용량이 큰 경우, 메모리 할당에 대한 제약이 발생할 수 있다. 예를 들어, 스크래치 패드 메모리의 용량이 10k인 경우, 11k의 용량을 갖는 클러스터는 할당될 수 없다.
또한, 이러한 제약이 없음에도 상기 분류된 클러스터의 일부는 스크래치 패드 메모리에 할당될 수 없을 수 있다. 왜냐하면 메모리 주소 단편들이 스크래치 패드 메모리 주소 공간에 흩어져 있을 수도 있기 때문이다. 따라서, 이를 해결하기 위해서는 특정 클러스터를 할당 대상에서 제외하고 이들의 할당 순위를 정하는 데이터 레이아웃 재편성을 수행해야 한다.
메모리 단편화를 최소화하기 위해 휴리스틱 방법을 이용하여 데이터 배치 재편성을 수행한다(460). 즉, 메모리 주소 단편화를 최소화하기 위해서는, 선택된 클러스터들이 스크래치 패드 메모리에 적합하게 배치되어야 한다. 이를 위해, 본 발명은 데이터 배치 재편성 문제를 2차원(시간,공간) 배낭 문제로 정형화한다. 이하, 첨부하는 도 6 및 7을 바탕으로 구체적으로 설명한다.
도 6은 본 발명에 따른 데이터 배치 방법을 나타내는 흐름도이다. 도 7a 내지 7d는 본 발명에 따른 데이터 배치 방법을 설명하기 위한 도면이다.
도 7a 내지 7d를 참조하면, 시공간 좌표계에 복수 개의 클러스터들이 도시되어 있다. X축은 클러스터 용량을 나타내며, Y축은 루프 반복 시간을 나타낸다. 스크래치 패드 메모리의 용량은 10K인 것으로 가정한다. 클러스터의 이득은 재사용 인자를 나타낸다. 본 발명은 하기에서 기술하는 4개의 단순화 단계를 통해 데이터 배치 재편성을 수행한다.
첫 번째, 시공간 좌표계에 존재하는 클러스터의 용량이 메모리 용량을 초과하는 경우, 해당 클러스터를 상기 시공간 좌표계에서 제거한다(610). 예를 들면, 도 6a에서, 클러스터(c2)는 시간(T)이 1,2,3일 때 11K의 용량을 가지므로, 10K 용량을 가진 메모리에 할당될 수 없다. 따라서, 제2 클러스터(c2)를 상기 시공간 좌표계에서 제거할 수 있다.
두 번째, 특정 시간(T)에 존재하는 클러스터들의 합계 용량이 메모리 용량을 초과하지 않는 경우, 해당 시간을 상기 시공간 좌표계에서 제거한다(620). 예를 들면, 도 6b에서, 시간(T)이 5,6,7일 때, 클러스터들(c4,c5)의 합계 용량은 10K이므로, 5T를 제거한다. 따라서, 1T,5T,6T,7T,및 10T가 상기 시공간 좌표계에서 제거할 수 있다.
세 번째, 두 개의 인접한 시간(T1,T2)에 걸쳐서 존재하는 클러스터들이 동일한 용량으로 분할되는 경우, 둘 중 하나의 시간을 상기 시공간 좌표계에서 제거한다(630). 예를 들면, 도 6c에서, 시간(T)이 2,3일 때, 클러스터들(c1,c3)은 각각 동일한 용량으로 분할되므로, 3T를 제거한다. 따라서, 3T와 9T 또는 2T와 8T가 상기 시공간 좌표계에서 제거될 수 있다.
네 번째, 두 개의 인접한 시간(T1,T2)에 걸쳐서 존재하는 클러스터들이 없는 경우, 상기 시간의 경계선을 기준으로 양측에 존재하는 클러스터들을 별도로 분할한다. 예를 들면, 도 6d에서, T가 4,8일 때, 두 시간의 경계선을 공유하는 클러스터가 존재하지 않으므로, 전체 클러스터들을 두 개의 클러스터 그룹들로 분할할 수 있다. 따라서, 2T와 4T 그리고 8T는 서로 분할될 수 있다.
상기와 같이 최적의 데이터 배치를 위한 알고리즘이 수행되면, 메인 메모리에서 소프트웨어에 의해 제어되는 캐시 메모리로 명령어 및/또는 데이터를 복사하기 위한 코드를 생성하여 원래의 애플리케이션 프로그램에 삽입하고, 추가 코드가 삽입된 변경된 애플리케이션 프로그램을 기존의 컴파일러를 사용하여 컴파일하여 사용함으로써 프로세서에 메인 메모리로 접근하는 횟수를 감소시킬 수 있다.
이상 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적으로 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다.
그러므로 본 기술 분야에서 통상의 지식을 가지는 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 내장형 프로세서 시스템의 구성을 나타내는 블록 다이어그램이다.
도 2는 불규칙한 애플리케이션이 포함하는 코드를 나타내는 도면이다.
도 3은 불규칙한 접근 패턴을 갖는 애플리케이션의 메모리 접근 자취를 나타내는 도면이다.
도 4는 본 발명에 따른 동적 데이터 할당 방법을 나타내는 흐름도이다.
도 5는 본 발명에 따른 배열 요소들의 클러스터링 과정을 나타내는 도면이다.
도 6은 본 발명에 따른 데이터 배치 방법을 나타내는 흐름도이다.
도 7a 내지 7d는 본 발명에 따른 데이터 배치 방법을 설명하기 위한 도면이다.

Claims (8)

  1. 불규칙한 메모리 접근 패턴을 갖는 애플리케이션에 대한 소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터 할당 방법에 있어서,
    프로파일링을 통해 상기 애플리케이션을 구성하는 배열 요소들에 대한 접근 자취를 획득하고, 상기 획득된 접근 자취를 통해 접근 패턴을 분석하는 단계;
    상기 배열 요소들의 접근 빈도를 바탕으로 재사용 인자를 산출하고, 상기 산출된 재사용 인자가 일정한 값 이상인 후보 배열 요소들을 선택하는 단계; 및
    상기 후보 배열 요소들을 수명 유사성을 바탕으로 복수 개의 클러스터들로 분류하고, 상기 분류된 클러스터들을 상기 캐시 메모리에 할당하는 단계를 포함하는 것을 특징으로 하는 동적 데이터 할당 방법.
  2. 제1항에 있어서, 상기 후보 배열 요소들을 선택하는 단계는,
    각각의 배열 요소에 대한 접근 빈도를 각각의 배열 요소의 용량으로 제산하여 상기 재사용 인자를 산출하고, 상기 산출된 재사용 인자가 2 이상인 값을 상기 후보 배열 요소로 선택하는 단계인 것을 특징으로 하는 동적 데이터 할당 방법.
  3. 제1항 또는 제2항에 있어서, 상기 클러스터들로 분류하는 단계는,
    상기 후보 배열 요소들에 대한 마지막 접근 시간 정보를 획득하고, 상기 획득한 시간 정보들 사이의 시간적 근접성을 바탕으로 상기 후보 배열 요소들을 복수 개의 클러스터들로 분류하는 단계인 것을 특징으로 하는 동적 데이터 할당 방법.
  4. 제3항에 있어서, 상기 클러스터들로 분류하는 단계는,
    상기 획득한 시간 정보들 사이의 유클리드 거리를 산출하고, 상기 산출된 유클리드 거리가 일정한 값 이하인 후보 배열 요소들을 그룹화하여 상기 후보 배열 요소들을 복수 개의 클러스터들로 분류하는 단계인 것을 특징으로 하는 동적 데이터 할당 방법.
  5. 제1항에 있어서, 상기 캐시 메모리에 할당하는 단계는,
    상기 분류된 클러스터들을 2차원 좌표계 형태의 배낭 문제로 정형화하여 상기 캐시 메모리에 할당하게 될 최종 클러스터를 결정하는 단계를 포함하는 것을 특징으로 하는 동적 데이터 할당 방법.
  6. 제5항에 있어서, 상기 최종 클러스터를 결정하는 단계는,
    상기 분류된 클러스터들 중에서 상기 캐시 메모리의 용량을 초과하는 클러스터를 상기 최종 클러스터로 결정하지 않는 단계를 포함하는 것을 특징으로 하는 동적 데이터 할당 방법.
  7. 제5항에 있어서, 상기 최종 클러스터를 결정하는 단계는,
    상기 분류된 클러스터들 중에서 동일한 시간에 접근되는 적어도 하나의 클러 스터의 용량이 상기 캐시 메모리의 용량을 초과하지 않는 경우, 상기 동일한 시간에 접근되는 클러스터들을 상기 최종 클러스터로 결정하는 단계를 포함하는 것을 특징으로 하는 동적 데이터 할당 방법.
  8. 제5항에 있어서, 상기 최종 클러스터들을 결정하는 단계는,
    상기 분류된 클러스터들 중에서 인접하는 시간에 모두 접근되는 적어도 하나의 클러스터가 각각의 시간에 대해 동일한 용량을 갖는 경우, 상기 클러스터의 일부를 상기 최종 클러스터로 결정하는 단계를 포함하는 것을 특징으로 하는 동적 데이터 할당 방법.
KR1020070124917A 2007-12-04 2007-12-04 불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법 KR100938903B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070124917A KR100938903B1 (ko) 2007-12-04 2007-12-04 불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070124917A KR100938903B1 (ko) 2007-12-04 2007-12-04 불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법

Publications (2)

Publication Number Publication Date
KR20090058232A KR20090058232A (ko) 2009-06-09
KR100938903B1 true KR100938903B1 (ko) 2010-01-27

Family

ID=40988745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070124917A KR100938903B1 (ko) 2007-12-04 2007-12-04 불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법

Country Status (1)

Country Link
KR (1) KR100938903B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101270281B1 (ko) 2010-07-30 2013-05-31 가부시끼가이샤 도시바 메모리 관리 장치, 정보 처리 장치 및 메모리 관리 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130081526A (ko) 2012-01-09 2013-07-17 삼성전자주식회사 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
US9697111B2 (en) 2012-08-02 2017-07-04 Samsung Electronics Co., Ltd. Method of managing dynamic memory reallocation and device performing the method
KR20200109973A (ko) 2019-03-15 2020-09-23 에스케이하이닉스 주식회사 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070052338A (ko) * 2004-10-28 2007-05-21 인텔 코오퍼레이션 프로세서 캐시로 데이터를 푸시하는 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070052338A (ko) * 2004-10-28 2007-05-21 인텔 코오퍼레이션 프로세서 캐시로 데이터를 푸시하는 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101270281B1 (ko) 2010-07-30 2013-05-31 가부시끼가이샤 도시바 메모리 관리 장치, 정보 처리 장치 및 메모리 관리 방법

Also Published As

Publication number Publication date
KR20090058232A (ko) 2009-06-09

Similar Documents

Publication Publication Date Title
Yu et al. IMP: Indirect memory prefetcher
Dulloor et al. Data tiering in heterogeneous memory systems
Ozdal et al. Energy efficient architecture for graph analytics accelerators
US7765534B2 (en) Compiler with cache utilization optimizations
Böhm et al. Density-based clustering using graphics processors
Faldu et al. Domain-specialized cache management for graph analytics
US8997071B2 (en) Optimized division of work among processors in a heterogeneous processing system
Mittal A survey of techniques for cache locking
Pousa Ribeiro et al. Improving memory affinity of geophysics applications on NUMA platforms using Minas
KR100938903B1 (ko) 불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법
Moll et al. Input space splitting for OpenCL
Kaczmarski Experimental B+-tree for GPU
Fevgas et al. LB-Grid: An SSD efficient grid file
Cho et al. Adaptive scratch pad memory management for dynamic behavior of multimedia applications
Böhm et al. Data mining using graphics processing units
Castells-Rufas GPU acceleration of Levenshtein distance computation between long strings
Filippopoulos et al. Exploration of energy efficient memory organisations for dynamic multimedia applications using system scenarios
US8914779B2 (en) Data placement for execution of an executable
Ravindran et al. Compiler-managed partitioned data caches for low power
Cho et al. Compiler driven data layout optimization for regular/irregular array access patterns
Bojnordi et al. A programmable memory controller for the DDRx interfacing standards
Ding et al. Trading cache hit rate for memory performance
Zhu et al. Machine learning assisted OSP approach for improved QoS performance on 3D charge-trap based SSDs
Zhang et al. Locality‐protected cache allocation scheme with low overhead on GPUs
Jeon et al. GPGPU register file management by hardware co-operated register reallocation

Legal Events

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

Payment date: 20130121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140106

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150106

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee