KR100944532B1 - 스크래치 패드 메모리 시스템 및 그 동적 메모리 관리방법 - Google Patents
스크래치 패드 메모리 시스템 및 그 동적 메모리 관리방법 Download PDFInfo
- Publication number
- KR100944532B1 KR100944532B1 KR1020090024563A KR20090024563A KR100944532B1 KR 100944532 B1 KR100944532 B1 KR 100944532B1 KR 1020090024563 A KR1020090024563 A KR 1020090024563A KR 20090024563 A KR20090024563 A KR 20090024563A KR 100944532 B1 KR100944532 B1 KR 100944532B1
- Authority
- KR
- South Korea
- Prior art keywords
- information
- memory
- main memory
- data
- access
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
- G06F2212/6012—Reconfiguration of cache memory of operating mode, e.g. cache mode or local memory mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
소프트웨어 및 하드웨어를 결합하여 메모리 할당을 수행하는 스크래치 패드 메모리 시스템 및 그 메모리 관리방법이 개시된다. 상기 스크래치 패드 메모리 시스템의 일실시예에 따르면, 복수의 입력세트를 이용하여 소정의 프로그램을 수행하고, 각 입력세트에 대응하여 억세스되는 메인 메모리의 어드레스 영역 및/또는 억세스 횟수에 관련된 정보를 프로파일링하여 저장하는 컴파일러와, 상기 프로그램 수행시 실제 억세스되는 메인 메모리의 어드레스 영역 및/또는 어드레스 영역의 억세스되는 횟수에 관련된 정보를 저장하는 데이터 억세스 기록 테이블 및 상기 컴파일러로부터의 프로파일링 정보와 상기 데이터 억세스 기록 테이블의 실제 메인 메모리의 억세스 정보를 비교한 결과를 이용하여, 상기 메인 메모리로부터 스크래치 패드 메모리로의 데이터 저장을 제어하는 운영체제부를 구비하는 것을 특징으로 한다.
Description
본 발명은 스크래치 패드 메모리 시스템에 관한 것으로서, 자세하게는 소프트웨어 및 하드웨어를 결합하여 메모리 할당을 수행하는 스크래치 패드 메모리 시스템에 관한 것이다.
본 발명은 교육과학 기술부 및 서울대학교의 국가 지정 연구실 사업의 일환으로 수행한 연구로부터 도출된 것이다. [과제관리번호: R0A-2008-000-20110-0, 과제명: 이종 MPSoC를 위한 통합 코드 생성 기능 컴파일러 플랫폼 개발]
메모리를 사용하는 시스템에서, 메모리 동작 특성을 향상시키는 것은 시스템의 성능을 향상시키는 데 매우 중요한 요소이다. 일예로서, 멀티 프로세서 온 칩(MPSoC)에서는, 프로세서-메모리 속도가 프로세서별로 차이가 증가함에 따른 시스템 성능의 저하가 발생할 수 있다. 이와 같은 프로세서-메모리 속도 차이를 감소하기 위하여 하드웨어 제어방식의 캐쉬가 메모리 계층(memory hierarchy)을 구성하기 위해 널리 사용된다. 그러나, 하드웨어 제어방식의 캐쉬만을 사용하는 시스템에서는 전력 소모가 증가하거나 칩 면적이 증가하게 되는 단점이 존재하게 된다.
상기 하드웨어 제어방식의 캐쉬의 대안으로서 소프트웨어 제어방식의 캐쉬가 사용되고 있으며, 상기 소프트웨어 제어방식의 캐쉬는 스크래치 패드 메모리(Scratch Pad Memory, SPM)라 지칭되는 랜덤 억세스 메모리(random access memory)이다.
상기 스크래치 패드 메모리는 메인 메모리로부터 캐쉬 메모리로 데이터 또는 명령어를 동적으로 매핑하기 위한 별도의 하드웨어 로직을 필요로 하지 않으므로 하드웨어 제어방식에 비하여 전력 및 칩 면적 측면에서 효율적이다. 상기와 같은 특징 때문에 스크래치 패드 메모리는 다양한 임베디드 시스템에 널리 사용되고 있다. 일예로서 ARM10E, ADSP TS201S, MMC221 및 TI TMS370CX7X 등과 같은 임베디드 프로세서를 포함하는 시스템에서는 상기 스크래치 패드 메모리가 캐쉬 메모리의 전체 또는 일부를 대체하고 있다.
스크래치 패드 메모리 관리는 마이크로 프로세서가 내장된 임베디드 시스템(Embedded System)의 성능과 관련하여 중요한 요소 중의 하나이며, 일반적으로 마이크로 프로세서 내에서 다양한 응용 프로그램들(Applications)이 수행되도록 하기 위하여, 각각의 프로그램에 대해 시스템 내의 메모리 공간을 할당하고 해지하는 동작을 수행한다. 메모리를 할당하는 동작은 일반적으로 정적 메모리 할당(Static Memory Allocation)과 동적 메모리 할당(Dynamic Memory Allocation)으로 분류된다.
정적 메모리 할당은 메모리의 크기를 미리 고정시켜서 할당하는 것으로서, 이와 같은 경우에는 최대 사용되는 메모리 양보다 더 크게 메모리를 할당해야 하므 로 시스템 내에서 메모리 사용에 낭비가 발생하게 된다. 이에 따라, 한정되는 크기를 갖는 메모리를 사용하는 임베디드 시스템 내에서는 응용 프로그램들(Applications)에 대한 동적 메모리 할당이 필요하게 된다. 동적 메모리 할당을 수행하기 위한 다양한 알고리즘들이 다양하게 제안되고 있으며, 특히 동적 메모리 할당을 효율적으로 수행하기 위해서 상당히 중요한 요소로 고려될 수 있는 것은, 한정된 캐쉬 메모리 공간 내에 실제 수행될 가능성이 높은 데이터를 저장함으로써 캐쉬 히트율(hit rate)을 향상시키는 데 있다.
일반적으로, 소정의 프로그램을 수행함에 있어서, 다양한 입력이 입력됨에 따라 실제 억세스되는 메인 메모리(일예로서 시스템 메모리)의 어드레스 영역은 서로 다른 형태를 갖는다. 일예로서, 프로그램 수행 시 제1 입력(first input)이 입력되는 경우에는 메인 메모리의 제1 영역의 어드레스에 저장된 데이터의 억세스 비율이 높은 반면에, 상기 프로그램 수행 시 제2 입력(second input)이 입력되는 경우에는 메인 메모리의 제2 영역의 어드레스에 저장된 데이터의 억세스 비율이 높은 형태로 동작이 이루어질 수 있다.
일반적으로 스크래치 패드 메모리의 동적 할당을 관리하는 경우, 소정의 프로그램 수행 시 다양한 입력을 제공하여 각 입력에 대하여 메인 메모리가 억세스되는 동작을 프로파일링(profiling)하고, 상기 프로파일링 결과를 이용하여 스크래치 패드 메모리에 대한 동적 할당을 수행하게 된다. 일예로서, 소정의 프로그램에 대하여 각각의 입력에 대한 메모리의 억세스 패턴을 통계화하고, 상기 통계화된 메모리의 억세스 패턴을 시스템 내에 저장한다. 이후 상기 소정의 프로그램이 수행되 면, 상기 통계화하여 저장된 억세스 패턴을 참조하여 스크래치 패드 메모리의 동적 할당을 수행한다.
그러나, 일반적인 스크래치 패드 메모리의 동적 할당의 경우, 상기 프로그램 수행시 복수의 입력에 대응하여 각각 높은 억세스 비율을 갖는 메인 메모리의 데이터를 모두 스크래치 패드 메모리에 저장하거나, 또는 스크래치 패드 메모리의 용량을 고려하여 상기 복수의 입력들 중 어느 하나의 입력에 대응하여 높은 억세스 비율을 갖는 메인 메모리의 데이터만을 스크래치 패드 메모리에 저장하는 방식을 이용하였다. 상기와 같은 동적 할당의 경우, 복수의 입력에 대응하는 모든 데이터를 스크래치 패드 메모리에 저장하면 메인 메모리로부터 데이터를 읽어내는데 소요되는 시간이 증가하고 또한 스크래치 패드 메모리의 많은 공간을 차지하게 되는 문제점이 발생한다. 또한 어느 하나의 입력에 대응하는 데이터만을 스크래치 패드 메모리에 저장하더라도, 상기 프로그램이 다른 입력에 의하여 수행되는 경우에는 캐쉬 미스(miss) 발생 확률이 높아지므로, 상기 스크래치 패드 메모리의 효율성을 떨어뜨리는 결과를 초래하게 된다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템은, 복수의 입력세트를 이용하여 소정의 프로그램을 수행하고, 각 입력세트에 대응하여 억세스되는 메인 메모리의 어드레스 영역 및/또는 억세스 횟수에 관련된 정보를 프로파일링하여 저장하는 컴파일러와, 상기 프로그램 수행시 실제 억세스되는 메인 메모리의 어드레스 영역 및/또는 어드레스 영역의 억세스되는 횟수에 관련된 정보를 저장하는 데이터 억세스 기록 테이블 및 상기 컴파일러로부터의 프로파일링 정보와 상기 데이터 억세스 기록 테이블의 실제 메인 메모리의 억세스 정보를 비교한 결과를 이용하여, 상기 메인 메모리로부터 스크래치 패드 메모리로의 데이터 저장을 제어하는 운영체제부를 구비하는 것을 특징으로 한다.
바람직하게는, 상기 데이터 억세스 기록 테이블은, 상기 프로파일링 결과에 기반하여, 상기 프로그램 수행시 억세스 가능한 복수의 어드레스 영역에 대한 주소 정보를 저장하는 주소 저장부와, 상기 복수의 어드레스 영역 각각에 대응하여 배치되며, 상기 프로그램 수행시 대응하는 어드레스 영역이 억세스되는 경우 카운팅 동작을 수행하는 카운터부 및 상기 프로그램 수행시 상기 메인 메모리를 억세스하기 위한 어드레스와 상기 저장된 복수의 어드레스 영역에 대한 주소 정보를 비교하기 위한 비교기를 구비하는 것을 특징으로 한다.
또한 바람직하게는, 상기 운영체제부는, 상기 컴파일러로부터의 프로파일링 정보와 상기 데이터 억세스 기록 테이블의 실제 메인 메모리의 억세스 정보를 비교 하는 비교부와, 상기 비교부의 비교 결과에 응답하여 기 설정되는 복수의 데이터 배열 정보 중 어느 하나의 데이터 배열을 선택하는 데이터 배열 선택부 및 상기 선택된 데이터 배열에 따라 상기 메인 메모리로부터 상기 스크래치 패드 메모리로의 데이터 저장을 제어하는 데이터 배열 제어부를 구비하는 것을 특징으로 한다.
또한 바람직하게는, 상기 데이터 억세스 기록 테이블은 하드웨어적인 메모리로 구현되는 것을 특징으로 한다.
또한 바람직하게는, 상기 컴파일러는, 제1 내지 제n 입력세트를 이용하여 상기 프로그램을 수행하고, 각각의 입력세트에 대응하여 억세스되는 메인 메모리의 어드레스 영역 정보와 그 억세스 회수 정보를 저장하고, 상기 데이터 억세스 기록 테이블에 업데이트되는 메인 메모리의 억세스 정보를 이용하여, 현재 수행되는 프로그램으로 제공되는 입력세트가 상기 제1 내지 제n 입력세트 중 어느 하나의 입력세트인 것으로 예측하는 것을 특징으로 한다.
한편, 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템의 메모리 관리방법은, 소정의 프로그램에 대하여 복수의 입력세트를 이용한 메인 메모리의 억세스 자취를 프로파일링하는 단계와, 상기 프로그램 수행시 상기 메인 메모리의 억세스 히스토리 정보를 업데이트하는 단계와, 상기 메모리 억세스 히스토리와 상기 프로파일링 결과를 비교하는 단계와, 상기 비교결과에 응답하여 기 설정되는 복수의 데이터 배열 정보들 중 어느 하나의 데이터 배열 정보를 선택하는 단계 및 상기 선택된 데이터 배열 정보에 따라 상기 메인 메모리로부터 스크래치 패드 메모리로 데이터를 저장하는 단계를 구비하는 것을 특징으로 한다.
상기한 바와 같은 본 발명에 따르면, 다양한 입력세트에 기인하여 동적(dynamic) 또는 불규칙(irregular)적인 메모리 접근 패턴을 갖는 응용 프로그램을 수행하는 경우에도 메인 메모리의 접근 횟수를 최소화할 수 있는 효과가 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템을 나타내는 블록도이다. 복수 개의 프로세서가 하나의 칩에 구현되는 멀티 프로세서 온 칩(MPSoC) 시스템에서는, 상기 복수 개의 프로세서가 하나의 시스템 메모리를 공유할 수 있으며, 또한 각각의 프로세서는 자기 자신의 로컬 메모리(일예로서 스크래치 패드 메모리)를 구비할 수 있다. 이에 따라 각각의 프로세서의 메모리 할당 및 해제를 관리하는 스크래치 패드 메모리 관리부(이하, SPM 관리부)는 대응하는 프로세서의 할당된 작업(assigned task)과 관련하여 최적의 메모리 관리를 수행한다.
도 1은 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템의 구성을 나타내는 블록도이다. 도시된 바와 같이 상기 스크래치 패드 메모리 시스템(100) 은, 소정의 응용 프로그램을 수행하기 위한 어플리케이션부(110), 상기 프로그램 수행시의 메모리 억세스 자취정보를 구하기 위하여 프로파일링 동작을 수행하고 그 프로파일링 결과를 저장하는 컴파일러(120), 시스템 전반을 제어하며 또한 메인 메모리의 데이터를 스크래치 패드 메모리에 저장하는 동작을 제어하는 운영체제부(OS부, 130) 및 상기 프로그램 수행시 메모리 억세스 히스토리를 업데이트하여 저장하는 데이터 억세스 기록 테이블(Data Access Record Table(DART), 140)을 구비할 수 있다.
먼저, 본 발명을 실시함에 있어서, 프로그램 수행을 통하여 메인 메모리 내의 데이터를 억세스하는 특성을 조사하기 위하여, 다양한 입력세트(input set)을 이용하여 상기 프로그램을 수행시키고 이에 따른 메인 메모리 내의 데이터가 억세스되는 횟수 및 억세스되는 주소영역에 대한 분포를 조사하는 프로파일링 동작이 수행된다. 일예로서 도 2는 소정의 응용 프로그램의 입력패턴에 따른 메모리 억세스 분포를 나타내는 그래프이다. 응용 프로그램을 수행함에 있어서 각각의 입력세트에 대하여 메인 메모리의 억세스 분포가 달라진다. 일예로서, 도 2에 도시된 바와 같이, 제1 입력세트(test.YUV)의 입력시에는 메인 메모리의 어드레스 영역 71250000 내지 71350000과 어드레스 영역 71450000 내지 71500000 의 데이터의 억세스가 강하게 발생한다. 반면에, 제2 입력세트(rec.YUV)의 입력시에는 메인 메모리의 어드레스 영역 70950000 내지 71000000과 어드레스 영역 71250000 내지 71350000 의 데이터의 억세스가 강하게 발생한다.
상기와 같은 프로파일링 결과가 도출된 경우, 종래에는 수신되는 입력세트를 예측할 수 없으므로 모든 입력세트에 대응하는 어드레스 영역의 데이터를 스크래치 패드 메모리에 할당하거나 또는 임의의 하나의 입력세트에 대응하는 어드레스 영역의 데이터를 스크래치 패드 메모리에 할당한 반면에, 본 발명의 실시예의 경우 다양한 입력세트에 대응하여 최적의 메모리 할당 동작이 수행되도록 한다. 이를 위하여 본 발명의 일실시예에 따르면 하드웨어 및 소프트웨어가 결합된 방식을 이용하여 메모리 할당 동작이 수행되도록 하며, 특히 해당 프로그램의 런타임(runtime) 시 메모리 억세스 특성이 실시간으로 업데이트되는 하드웨어를 사용하여 상기 메모리 할당 동작이 수행되도록 한다.
도 1에 도시된 바와 같이, 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템(100)은 컴파일러(120)를 구비하며, 상기 컴파일러(120)는 상술한 바와 같은 소정의 응용 프로그램에 대한 프로파일링 동작을 수행하고 그 프로파일링 결과를 저장한다. 이를 위하여, 컴파일러(120)는 다양한 입력 세트를 발생하여 출력하는 입력수단(121)과, 상기 입력수단(121)으로부터 다양한 입력 세트를 수신하고 이를 이용하여 프로파일링을 수행하는 프로파일링부(122)와, 프로파일링부(122)의 프로파일링 결과를 저장하기 위한 메모리부(123)를 구비할 수 있다.
스크래치 패드 메모리 시스템(100)의 어플리케이션부(110)에서 프로그램이 수행되면, 컴파일러(120)는 어플리케이션부(110)로부터 소스 코드를 수신하고 이를 적절한 목적 코드로 변환하는 컴파일링 동작을 수행하고 이를 운영체제부(130)로 제공한다. 또한 기존의 프로파일링 결과와 데이터 억세스 기록 테이블(140)에 업데이트되는 메인 메모리 억세스 정보를 이용하여 스크래치 패드 메모리의 할당 동작 을 수행하기 위하여, 메모리부(123)에 저장된 프로파일링 결과를 운영체제부(130)로 또한 제공한다.
운영체제부(130)는 스크래치 패드 메모리 시스템(100)의 전체적인 동작을 제어하는 구성을 포함할 수 있으며, 특히 스크래치 패드 메모리의 동적 할당 및 할당해제를 제어하기 위한 SPM 관리부를 구비할 수 있다. 도 1에 도시된 바와 같이 운영체제부(130)는 비교부(131), 데이터 배열 선택부(132) 및 데이터 배열 제어부(133)를 포함할 수 있으며, 상기와 같은 논리 블록들은 상기 SPM 관리부를 구성한다.
스크래치 패드 메모리에 저장되는 데이터를 배치함에 있어서, 운영체제부(130)는 컴파일러(120) 내에 구비되는 프로파일링 결과와 데이터 억세스 기록 테이블(140)에 저장된 정보를 이용한다. 도 3은 데이터 억세스 기록 테이블(140)에 저장된 정보의 일예를 나타내는 도면이다.
도 3에 도시된 바와 같이 데이터 억세스 기록 테이블(140)은 하드웨어적으로 구현될 수 있으며, 일예로서, 데이터 억세스 기록 테이블(140)은 하나 이상의 어드레스 영역의 주소 저장부(141)와, 메인 메모리의 각각의 어드레스 영역을 억세스하는 횟수를 나타내는 카운터부(142)를 포함한다. 프로그램의 실제 런타임(runtime)시 메인 메모리를 억세스하는 히스토리가 데이터 억세스 기록 테이블(140)에 기록된다.
데이터 억세스 기록 테이블(140)의 주소 저장부(141)에는 소정의 응용 프로그램의 다양한 입력세트에 대응하여 메인 메모리에서 주로 억세스되었던 데이터의 어드레스 영역(address region)에 대한 정보가 저장된다. 상기 어드레스 영역에 저장되는 영역의 수는 앞서 프로파일링 동작을 통해 도출된 결과에 의해 정의될 수 있다. 일예로서, 도 2에 도시된 바와 같이, 소정의 응용 프로그램 수행시 메인 메모리의 세 개의 어드레스 영역의 데이터가 주로 억세스되는 경우, 상기 데이터 억세스 기록 테이블(140)의 주소 저장부(141)는 상기 세 개의 어드레스 영역의 주소를 저장할 수 있다.
또한 데이터 억세스 기록 테이블(140)의 카운터부(142)는 어드레스 영역 각각에 대응하여 배치되는 카운터를 구비할 수 있다. 이에 따라 실제 프로그램 수행시 메인 메모리의 억세스되는 어드레스(Pysical Address)를 수신하고, 상기 어드레스가 포함되는 영역의 카운터를 동작시킨다. 상기 수신되는 어드레스와 데이터 억세스 기록 테이블의 주소 저장부(141)에 저장되는 어드레스 영역들을 비교하기 위한 비교기(143)가 상기 데이터 억세스 기록 테이블(140)에 더 구비될 수 있다. 상기 데이터 억세스 기록 테이블(140)에 저장된 정보는 운영 체제(Operating System)에서 사용되며, 운영 체제(Operating System)는 데이터 억세스 기록 테이블에 저장된 정보를 이용하여, 메인 메모리에 저장된 데이터들 중 특정 어드레스 영역의 데이터를 스크래치 패드 메모리에 저장한다.
운영체제부(130)는 컴파일러(120) 내에 구비되는 프로파일링 결과와 데이터 억세스 기록 테이블(140)에 저장된 정보를 비교하고, 그 비교결과에 따라 현재 어플리케이션부(110)로 제공되는 입력세트를 예측하며, 그 예측 결과에 따라 스크래치 패드 메모리에 저장되는 데이터의 배치를 결정한다. 그리고 데이터의 배치를 결 정한 결과에 따라 메인 메모리에 저장된 데이터가 스크래치 패드 메모리에 저장되도록 제어한다.
이를 위하여 운영체제부(130)에 구비되는 비교부(131)는, 데이터 억세스 기록 테이블(140)에 저장된 정보를 컴파일러(120)로부터 제공되는 프로파일링 결과와 비교한다. 일예로서, 현재 프로그램의 수행에 따라 억세스되고 있는 메인 메모리의 어드레스 영역 및 억세스 회수 정보를 데이터 억세스 기록 테이블(140)로부터 수신하고, 이를 상기 프로파일링 결과와 비교한다. 상기 비교 결과에 따라 현재 어플리케이션부(110)로 제공되는 입력세트를 예측할 수 있다. 즉, 각 입력세트에 대한 메인 메모리의 억세스 자취 정보를 프로파일링한 결과와, 현재 프로그램 수행에 따른 메인 메모리의 현재 억세스 상태를 비교하면, 상기 현재 프로그램이 어떠한 입력세트에 의해 수행되는지 예측이 가능하다. 또한, 예측된 입력세트에 대응하여 메인 메모리의 어떠한 어드레스 영역의 데이터가 자주 접근되는지 상기 프로파일링 결과를 통해 알 수 있으므로, 운영체제부(130)는 상기 자주 접근되는 어드레스 영역의 데이터가 스크래치 패드 메모리에 저장되도록 제어한다.
운영체제부(130)에 구비되는 데이터 배열 선택부(132)는, 상기 비교 결과에 응답하여 어느 하나의 데이터 배열을 선택한다. 데이터 배열 선택부(132)는 복수의 입력 세트 각각에 대한 데이터 배열 정보를 갖고 있으며, 상기 비교부(131)의 비교 결과에 응답하여 어느 하나의 데이터 배열 정보를 선택한다. 상기 데이터 배열 정보는 소정의 입력세트에 대응하여 메인 메모리로부터 스크래치 패드 메모리로 데이터를 순차적으로 배열하기 위한 정보를 갖는다. 데이터 배열 선택부(132)에 의해 선택된 어느 하나의 데이터 배열 정보는 데이터 배열 제어부(133)로 제공되며, 상기 데이터 배열 제어부(133)는 수신된 데이터 배열 정보에 따라 메인 메모리로부터 스크래치 패드 메모리로 데이터가 저장되도록 제어한다.
도 4는 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템의 운영체제부의 동작을 나타내는 블록도이다. 도 4에는 운영체제부(130)에 구비되는 비교부(131), 데이터 배열 선택부(132) 및 데이터 배열 제어부(133)가 각각 도시되며, 도한 상기 운영체제부(130)의 보다 정확한 설명을 위하여 소스코드(A,B) 및 데이터 억세스 기록 테이블의 정보(C), 프로파일링 결과 정보(D)가 더 도시된다.
비교부(131)는, 현재 프로그램 수행되는 어플리케이션으로 제공되는 입력세트를 예측하기 위하여, 현재 프로그램 수행시 억세스되는 메인 메모리의 어드레스 영역 및 억세스 횟수 등의 정보와, 다양한 입력세트에 대응하여 메인 메모리의 억세스 자취 정보를 서로 비교하고 그 결과를 발생한다. 도시되는 테이블 C는 데이터 억세스 기록 테이블의 정보를 나타내며, 테이블 D는 컴파일러에서 기 수행된 프로파일링 결과를 나타낸다. 또한, 소스코드 A는 상기 데이터 억세스 기록 테이블의 정보를 저장하는 일예를 나타내며, 또한 소스코드 B는 비교부(131)의 정보 비교동작을 수행하는 일예를 나타낸다.
비교부(131)의 비교 결과에 응답하여 데이터 배열 선택부(132)에 저장된 복수의 데이터 배열 정보들 중 어느 하나가 선택된다. 일예로서, 프로그램 수행시 입력될 수 있는 다양한 입력세트 각각에 대응하여 데이터 배열 정보들 중 어느 하나가 선택된다. 비교부(131)의 비교 결과에 따라 현재 제공되는 입력세트가 예측되 면, 이에 응답하여 데이터 배열 선택부(132)에 구비되는 어느 하나의 데이터 배열(Scenario)이 선택된다. 데이터 배열 제어부(133)는 선택된 데이터 배열에 따라 메인 메모리로부터 스크래치 패드 메모리로 데이터가 저장되도록 제어한다.
도 5는 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템의 메모리 관리방법을 나타내는 플로우차트이다.
도 5에 도시된 바와 같이, 소정의 응용 프로그램 각각에 대하여 프로파일링을 수행하여 그 결과를 저장한다(S11). 즉, 상기 프로그램에 대하여 다양한 입력세트를 제공하고, 각각의 입력세트에 대하여 메인 메모리에서 주로 억세스되는 어드레스 영역 및 억세스되는 횟수에 관한 정보를 저장한다.
이후 상기 프로그램이 수행되면(S12), 억세스되는 메인 메모리의 어드레스 영역 및 각 어드레스 영역에 억세스되는 횟수 등을 카운팅함에 의하여 메모리 억세스 히스토리를 업데이트한다(S13). 상기와 같은 정보를 저장하고 업데이트하는 동작은 하드웨어적으로 수행되며, 바람직하게는 소정의 메모리를 이용하여 상기 업데이트 정보를 저장할 수 있다.
이후, 메인 메모리로부터 스크래치 패드 메모리로 저장되는 데이터 배열을 결정하기 위하여, 상기 프로파일링 결과와 메모리 억세스 히스토리를 비교하는 동작이 수행된다(S14). 상기 비교 결과에 의하여 상기 프로그램으로 제공되는 입력세트가 예측될 수 있으며, 상기 입력세트가 예측되면 앞서 수행된 프로파일링 결과를 참조하여 이후에 억세스되는 메모리의 어드레스 영역이 예측될 수 있다. 각각의 입력세트에 대응하는 복수의 데이터 배열 정보가 시스템을 운영하는 운영체제에 구비 될 수 있으며, 상기 비교 결과에 따라 어느 하나의 데이터 배열 정보가 선택된다(S15). 어느 하나의 데이터 배열 정보가 선택되면, 상기 운영체제는 선택된 데이터 배열 정보를 참조하여 이에 따라 메인 메모리에 저장된 소정의 어드레스 영역의 데이터를 스크래치 패드 메모리에 저장한다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
도 1은 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템을 나타내는 블록도이다.
도 2는 소정의 응용 프로그램의 입력패턴에 따른 메모리 억세스 분포를 나타내는 그래프이다.
도 3은 데이터 억세스 기록 테이블에 저장된 정보의 일예를 나타내는 도면이다.
도 4는 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템의 운영체제부의 동작을 나타내는 블록도이다.
도 5는 본 발명의 일실시예에 따른 스크래치 패드 메모리 시스템의 메모리 관리방법을 나타내는 플로우차트이다.
* 도면의 주요부분에 대한 부호의 설명 *
100: 스크래치 패드 메모리 시스템
110: 어플리케이션부
120: 컴파일러
121: 입력수단
122: 프로파일링부
123: 메모리부
130: 운영체제부
131: 비교부
132: 데이터 배열 선택부
133: 데이터 배열 제어부
140: 데이터 억세스 기록 테이블
Claims (8)
- 복수의 입력세트를 이용하여 소정의 프로그램을 수행하고, 각 입력세트에 대응하여 억세스되는 메인 메모리의 어드레스 영역 및 억세스 횟수에 관련된 정보들중 적어도 하나를 프로파일링하여 저장하는 컴파일러;상기 프로그램 수행시 실제 억세스되는 메인 메모리의 어드레스 영역 및 어드레스 영역의 억세스되는 횟수에 관련된 정보들중 적어도 하나를 저장하는 데이터 억세스 기록 테이블; 및상기 컴파일러로부터의 프로파일링 정보와 상기 데이터 억세스 기록 테이블의 실제 메인 메모리의 억세스 정보를 비교한 결과를 이용하여, 상기 메인 메모리로부터 스크래치 패드 메모리로의 데이터 저장을 제어하는 운영체제부;를 구비하는 것을 특징으로 하는 스크래치 패드 메모리 시스템.
- 제1항에 있어서, 상기 데이터 억세스 기록 테이블은,상기 프로파일링 결과에 기반하여, 상기 프로그램 수행시 억세스 가능한 복수의 어드레스 영역에 대한 주소 정보를 저장하는 주소 저장부;상기 복수의 어드레스 영역 각각에 대응하여 배치되며, 상기 프로그램 수행시 대응하는 어드레스 영역이 억세스되는 경우 카운팅 동작을 수행하는 카운터부; 및상기 프로그램 수행시 상기 메인 메모리를 억세스하기 위한 어드레스와 상 기 저장된 복수의 어드레스 영역에 대한 주소 정보를 비교하기 위한 비교기를 구비하는 것을 특징으로 하는 스크래치 패드 메모리 시스템.
- 제1항에 있어서, 상기 운영체제부는,상기 컴파일러로부터의 프로파일링 정보와 상기 데이터 억세스 기록 테이블의 실제 메인 메모리의 억세스 정보를 비교하는 비교부;상기 비교부의 비교 결과에 응답하여 기 설정되는 복수의 데이터 배열 정보 중 어느 하나의 데이터 배열을 선택하는 데이터 배열 선택부; 및상기 선택된 데이터 배열에 따라 상기 메인 메모리로부터 상기 스크래치 패드 메모리로의 데이터 저장을 제어하는 데이터 배열 제어부를 구비하는 것을 특징으로 하는 스크래치 패드 메모리 시스템.
- 제1항에 있어서,상기 데이터 억세스 기록 테이블은 하드웨어적인 메모리로 구현되는 것을 특징으로 하는 스크래치 패드 메모리 시스템.
- 제1항에 있어서,상기 컴파일러는, 제1 내지 제n 입력세트를 이용하여 상기 프로그램을 수행하고, 각각의 입력세트에 대응하여 억세스되는 메인 메모리의 어드레스 영역 정보와 그 억세스 회수 정보를 저장하고,상기 데이터 억세스 기록 테이블에 업데이트되는 메인 메모리의 억세스 정보를 이용하여, 현재 수행되는 프로그램으로 제공되는 입력세트가 상기 제1 내지 제n 입력세트 중 어느 하나의 입력세트인 것으로 예측하는 것을 특징으로 하는 스크래치 패드 메모리 시스템.
- 소정의 프로그램에 대하여 복수의 입력세트를 이용한 메인 메모리의 억세스 자취를 프로파일링하는 단계;상기 프로그램 수행시 상기 메인 메모리의 억세스 히스토리 정보를 업데이트하는 단계;상기 메모리 억세스 히스토리와 상기 프로파일링 결과를 비교하는 단계;상기 비교결과에 응답하여 기 설정되는 복수의 데이터 배열 정보들 중 어느 하나의 데이터 배열 정보를 선택하는 단계; 및상기 선택된 데이터 배열 정보에 따라 상기 메인 메모리로부터 스크래치 패드 메모리로 데이터를 저장하는 단계를 구비하는 것을 특징으로 하는 스크래치 패드 메모리 시스템의 메모리 관리방법.
- 제6항에 있어서,상기 메인 메모리의 억세스 히스토리 정보를 업데이트하는 단계는,상기 프로그램 수행시 억세스되는 메인 메모리의 어드레스 영역을 판단하는 단계; 및상기 억세스되는 메인 메모리의 어드레스 영역에 대하여 카운팅 동작을 수행하고 그 카운트 결과를 저장하는 단계를 구비하는 것을 특징으로 하는 스크래치 패드 메모리 시스템의 메모리 관리방법.
- 제7항에 있어서,상기 비교 단계는, 상기 억세스 히스토리 정보에 저장되는 어드레스 영역 정보 및 카운트 결과 정보를 상기 프로파일링 결과와 비교하고,상기 데이터 배열 정보 선택 단계는, 상기 복수의 입력세트에 대응하는 복수의 데이터 배열 정보들 중 상기 비교결과에 응답하여 어느 하나의 데이터 배열 정보를 선택하는 것을 특징으로 하는 스크래치 패드 메모리 시스템의 메모리 관리방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090024563A KR100944532B1 (ko) | 2009-03-23 | 2009-03-23 | 스크래치 패드 메모리 시스템 및 그 동적 메모리 관리방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090024563A KR100944532B1 (ko) | 2009-03-23 | 2009-03-23 | 스크래치 패드 메모리 시스템 및 그 동적 메모리 관리방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100944532B1 true KR100944532B1 (ko) | 2010-03-03 |
Family
ID=42182757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090024563A KR100944532B1 (ko) | 2009-03-23 | 2009-03-23 | 스크래치 패드 메모리 시스템 및 그 동적 메모리 관리방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100944532B1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799253B1 (en) | 2002-05-30 | 2004-09-28 | Oracle Corporation | Stochastic scratchpad storage management technique |
KR20070078335A (ko) * | 2006-01-26 | 2007-07-31 | 엘지전자 주식회사 | 프로세서에서의 온칩메모리 제어장치 |
US7367024B2 (en) * | 2004-09-21 | 2008-04-29 | University Of Maryland | Compiler-driven dynamic memory allocation methodology for scratch-pad based embedded systems |
KR20080068468A (ko) * | 2007-01-19 | 2008-07-23 | 삼성전자주식회사 | 멀티 프로세서 시스템 온 칩에서의 메모리 관리 방법 |
-
2009
- 2009-03-23 KR KR1020090024563A patent/KR100944532B1/ko not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799253B1 (en) | 2002-05-30 | 2004-09-28 | Oracle Corporation | Stochastic scratchpad storage management technique |
US7367024B2 (en) * | 2004-09-21 | 2008-04-29 | University Of Maryland | Compiler-driven dynamic memory allocation methodology for scratch-pad based embedded systems |
KR20070078335A (ko) * | 2006-01-26 | 2007-07-31 | 엘지전자 주식회사 | 프로세서에서의 온칩메모리 제어장치 |
KR20080068468A (ko) * | 2007-01-19 | 2008-07-23 | 삼성전자주식회사 | 멀티 프로세서 시스템 온 칩에서의 메모리 관리 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Weiner et al. | TMO: Transparent memory offloading in datacenters | |
US10999214B2 (en) | Secure memory with restricted access by processors | |
US7502890B2 (en) | Method and apparatus for dynamic priority-based cache replacement | |
JP5413001B2 (ja) | キャッシュメモリ | |
KR100996753B1 (ko) | 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템 | |
US20070294693A1 (en) | Scheduling thread execution among a plurality of processors based on evaluation of memory access data | |
US20050204349A1 (en) | Dynamic management of compiled code | |
JP6149595B2 (ja) | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 | |
US6421761B1 (en) | Partitioned cache and management method for selectively caching data by type | |
TW201631478A (zh) | 根據記憶體存取類型的效益並配合積極層級的預取 | |
US8019946B2 (en) | Method and system for securing instruction caches using cache line locking | |
JP2008033932A (ja) | Numaコンピュータシステムにおけるローカリティドメインおよびスレッドアフィニティに基づいてコードを再コンパイルするためのシステムおよび方法 | |
JP2012033001A (ja) | 情報処理装置および情報処理方法 | |
US10754547B2 (en) | Apparatus for managing disaggregated memory and method thereof | |
US20110208916A1 (en) | Shared cache controller, shared cache control method and integrated circuit | |
JP2022537007A (ja) | データ記憶 | |
CN102063386A (zh) | 一种单载体多目标的缓存系统的缓存管理方法 | |
Min et al. | Vmmb: Virtual machine memory balancing for unmodified operating systems | |
Xie et al. | CRAT: Enabling coordinated register allocation and thread-level parallelism optimization for GPUs | |
US20100042765A1 (en) | Dynamically Migrating Channels | |
US8447951B2 (en) | Method and apparatus for managing TLB | |
KR20170122090A (ko) | 저장 장치의 메모리 컨트롤러가 수행하는 가비지 컬렉션 방법 및 메모리 컨트롤러 | |
KR100944532B1 (ko) | 스크래치 패드 메모리 시스템 및 그 동적 메모리 관리방법 | |
Akturk et al. | Adaptive thread scheduling in chip multiprocessors | |
KR101383793B1 (ko) | 시스템 온 칩에서 메모리 할당 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated 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: 20130318 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140212 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150212 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |