KR101830136B1 - 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법 - Google Patents

경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법 Download PDF

Info

Publication number
KR101830136B1
KR101830136B1 KR1020160048127A KR20160048127A KR101830136B1 KR 101830136 B1 KR101830136 B1 KR 101830136B1 KR 1020160048127 A KR1020160048127 A KR 1020160048127A KR 20160048127 A KR20160048127 A KR 20160048127A KR 101830136 B1 KR101830136 B1 KR 101830136B1
Authority
KR
South Korea
Prior art keywords
alias
address
data
sat
hat
Prior art date
Application number
KR1020160048127A
Other languages
English (en)
Other versions
KR20170119889A (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 KR1020160048127A priority Critical patent/KR101830136B1/ko
Priority to US15/393,526 priority patent/US10223261B2/en
Publication of KR20170119889A publication Critical patent/KR20170119889A/ko
Application granted granted Critical
Publication of KR101830136B1 publication Critical patent/KR101830136B1/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
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Landscapes

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

Abstract

경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법을 제시한다. 본 발명에 따른 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법은 에일리어스 메모리 연산 과정을 수행하여 데이터를 로드 및 저장하는 단계, 및 에일리어스 메모리 연산 과정을 수행하여 데이터를 저장하는 단계를 포함하며, 에일리어스 메모리 연산 과정을 수행하여 데이터를 로드하는 단계는 CPU 프로세서에서 어드레스 변환을 위한 별도의 연산 없이 HAT를 거쳐서 에일리어스 어드레스를 요청하는 단계, 에일리어스 어드레스 요청시 HAT를 통해서 입력된 어드레스를 에일리어스 어드레스로 변환하는 단계, 에일리어스 어드레스 요청에 따른 에일리어스 어드레스 변환이 실패할 경우 HAT를 통한 에일리어스 메모리 연산을 중단하고 미스 핸들러(Miss handler)를 호출하는 단계, 및 에일리어스 어드레스 변환 성공시 에일리어스 어드레스를 이용하여 SAT에 접근하여 데이터를 로드하거나 저장하는 단계를 포함하는바, 에일리어스 메모리 연산 수행 시 CPU에서 수십 내지 수백 사이클에 걸쳐 일어나는 어드레스 변환 연산을 하드웨어 에일리어스 테이블의 추가를 통해 한 사이클이나 두 사이클 정도로 단축시킴으로써 최소한의 아키텍처 수정만으로도 에일리어스 메모리 연산 과정을 하드웨어적으로 지원하여 CPU 성능을 더욱 향상시킬 수 있는 효과를 이룰 수 있다.

Description

경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법{ALIASED MEMORY OPERATIONS METHOD USING LIGHTWEIGHT ARCHITECTURE}
본 발명은 CPU 캐시 아키텍처에 관한 것으로, 상세하게는 에일리어스 메모리 연산(Aliased Memory Operation) 수행 시 CPU에서 수십 내지 수백 사이클에 걸쳐 일어나는 어드레스 변환 연산을 하드웨어 에일리어스 테이블(Hardware Alias Table, HAT)의 추가를 통해 한 사이클이나 두 사이클 정도로 단축시킴으로써 최소한의 아키텍처 수정만으로도 에일리어스 메모리 연산 과정을 하드웨어적으로 지원하여 CPU 성능을 더욱 향상시킬 수 있도록 한 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법에 관한 것이다.
"마이크로프로세서"는 "프로세서", "코어" 및 중앙 처리 유닛 "CPU"라고도 일컬어진다. CPU의 캐시(cache)는 물리적으로 컴퓨터의 메인 메모리(main memory)와 중앙 처리 유닛(CPU) 사이에 위치하는 고속 메모리 구조체이다.
CPU에서 캐시의 목적은 데이터 액세스 및 명령 실행을 위한 유효 메모리 액세스 시간을 감소시키는 것이다. 이러한 캐시는 메모리에서 액세스 될 가능성이 높은 명령과 데이터의 예비 복사본(redundant copy)을 CPU에 물리적으로 가까이에 유지함으로써 이러한 공간적 및 시간적 집약성(locality)을 이용한다. 특히, 캐시 읽기 또는 쓰기는 외부 메모리(즉, 예를 들면, 외부 DRAM, SRAM, 플래시 메모리(FLASH MEMORY) 및/또는 테이프나 디스크 등의 저장장치, 이들을 본원에서는 총제적으로 "외부 메모리"라 칭함)로부터의 읽기 또는 쓰기보다 수 배 더 빠를 것이다.
CPU에서 캐시를 활용하는 방식의 예는 대한민국 공개특허공보 제10-2013-0109247호(2013. 10. 7, 공개)를 통해 확인할 수 있다. 공개특허공보 제10-2013-0109247호에 의하면 요청된 데이터 또는 명령이 캐시 내에 존재하지 않은 경우, 캐시 "미스(miss)"가 발생하여, 필요한 데이터 또는 명령이 외부 메모리로부터 캐시로 전송되게 함이 제시되었다. 즉, 단일 레벨 캐시의 유효 메모리 액세스 시간은 "캐시 액세스 시간" × "캐시 히트율(cache hit rate)" + "캐시 미스 패널티(cache miss penalty)" × "캐시 미스율(cache miss rate)"이 됨을 알 수 있다. 만일, 다중레벨의 캐시가 사용되면 유효 메모리 액세스 시간을 훨씬 감소시킨다. 다시 말해, 상위 레벨 캐시일수록 크기가 점진적으로 더 크고, 점진적으로 증가하는 캐시 "미스" 패널티와 연관된다. 이에, 일반적인 마이크로프로세서는 10-30 CPU 클록 사이클의 레벨 1 캐시 액세스 시간, 10-80 클록 사이클의 레벨 2 캐시 액세스 시간, 및 80-200 클록 사이클의 오프-칩(off-chip) 액세스 시간을 요구함을 알 수 있다.
에일리어스 메모리 연산은 메모리 내의 어떤 공간에 접근할 때 사본을 생성하여 원본 데이터의 손상을 방지하며 안전하게 연산을 수행하기 위해 이용된다.
에일리어스 메모리 연산은 종래의 CPU 아키텍처에서 하드웨어적인 지원이 이루어지지 않았기 때문에 소프트웨어적인 방식을 이용하였는데, 변환되기 이전의 메모리 어드레스를 키(key)로 이용하는 해시 테이블(hash table)인 Software Alias Table(SAT)에 사본을 생성하여 그곳에 기록하는 방식으로 처리되었다. 만약 어떤 어드레스에 대한 에일리어스 메모리 쓰기 연산이 요청되면, CPU는 요청된 어드레스에 대해 해싱(hashing)이라 하는 어드레스 변환을 위한 일련의 연산을 수행하여 사본이 저장되어야 하는 SAT 상의 어드레스를 알아내고, 그곳에 기록하고자 하는 정보를 저장한다. 에일리어스 메모리 읽기 연산이 요청되면, CPU는 해싱을 통해 사본이 저장된 메모리 어드레스를 알아내고, SAT의 해당 위치에 실제로 요청된 어드레스의 값에 대한 사본이 존재할 경우 그곳에서 사본의 값을 읽어오며, 사본이 존재하지 않은 경우 변환되기 이전의 어드레스에서 원본의 값을 읽어오게 된다.
에일리어스 메모리 연산에 이용되는 SAT는 메모리에 저장되어 있기 때문에 캐시를 통한 빠른 접근이 가능하지만, 연산을 수행할 때마다 해싱을 통해 요청된 어드레스를 SAT 상의 어드레스로 변환해주어야 하고, 이 해싱을 통한 어드레스 변환이 CPU에서 수십 내지 수백 사이클에 걸쳐 수행되기 때문에 SAT 상의 사본에 접근하는데 소요되는 시간이 길어지고, 에일리어스 메모리 연산의 성능을 향상시키는데 제약이 있을 수 밖에 없었다.
대한민국 공개특허공보 제10-2013-0109247호(2013. 10. 7, 공개)
이러한 문제점을 해결하기 위해 본 발명은 에일리어스 메모리 연산 수행 시 CPU에서 수십 내지 수백 사이클에 걸쳐 일어나는 어드레스 변환 연산을 하드웨어 에일리어스 테이블의 추가를 통해 한 사이클이나 두 사이클 정도로 단축시킴으로써 최소한의 아키텍처 수정만으로도 에일리어스 메모리 연산 과정을 하드웨어적으로 지원하여 CPU 성능을 더욱 향상시킬 수 있도록 한 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법을 제공하는데 그 목적이 있다.
이러한 과제를 해결하기 위한 본 발명의 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법은 에일리어스 메모리 연산 과정을 수행하여 데이터를 로드하는 단계, 및 에일리어스 메모리 연산 과정을 수행하여 데이터를 저장하는 단계를 포함하며, 에일리어스 메모리 연산 과정을 수행하여 데이터를 로드하는 단계는 CPU 프로세서에서 어드레스 변환을 위한 별도의 연산 없이 HAT를 거쳐서 에일리어스 어드레스를 요청하는 단계, 에일리어스 어드레스 요청시 HAT를 통해서 입력된 어드레스를 에일리어스 어드레스로 변환하는 단계, 에일리어스 어드레스 요청에 따른 에일리어스 어드레스 변환이 실패할 경우 HAT를 통한 에일리어스 메모리 연산을 중단하고 미스 핸들러(Miss handler)를 호출하는 단계, 및 에일리어스 어드레스 변환 성공시 에일리어스 어드레스를 이용하여 SAT에 접근하여 데이터를 로드하는 단계를 포함한다.
본 발명의 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법에 의하면, 에일리어스 메모리 연산 수행 시 CPU에서 수십 내지 수백 사이클에 걸쳐 일어나는 어드레스 변환 연산을 하드웨어 에일리어스 테이블의 추가를 통해 한 사이클이나 두 사이클 정도로 단축시킴으로써 최소한의 아키텍처 수정만으로도 에일리어스 메모리 연산 과정을 하드웨어적으로 지원하여 CPU 성능을 더욱 향상시킬 수 있는 효과가 있다.
도 1은 본 발명의 실시 예에 따른 에일리어스 메모리 연산 과정을 통한 데이터 로드 방법을 설명하기 위한 아키텍처이다.
도 2는 본 발명의 에일리어스 메모리 연산 실패시 데이터 로드 방법을 설명하기 위한 아키텍처이다.
도 3은 에일리어스 메모리 연산 과정을 통한 데이터 저장 과정을 설명하기 위한 아키텍처이다.
도 4는 본 발명의 에일리어스 메모리 연산 실패시 데이터 저장 방법을 설명하기 위한 아키텍처이다.
도 5는 B+ tree transaction 500회 수행기간 동안의 사이클 횟수를 비교하여 나타낸 그래프이다.
도 6은 B+ tree transaction을 이용한 성능 평가 결과를 설명하기 위한 그래프이다.
본 발명에서는 CPU에서 수십 내지 수백 사이클에 걸쳐 일어나는 어드레스 변환 연산을 HAT를 통해 한 사이클이나 두 사이클 정도로 단축시킴으로써 최소한의 아키텍처 수정만으로도 에일리어스 메모리 연산(Aliased Memory Operation) 과정을 지원할 수 있도록 한다. 이에, 연산 속도적인 면에서 CPU 성능을 더욱 향상시킬 수 있게 되는데, 특히 HAT를 통해 한 사이클이나 두 사이클 정도로 에일리어스 메모리 연산 과정을 단축시켜, CPU 코어에서 별도의 연산 없이 HAT을 거쳐 에일리어스 로드를 요청하되 실패할 경우에는 에일리어스 메모리 연산 미적용 상황과 유사하게 작동하는 HAT 미스 핸들러(Miss handler)를 호출함으로써, SAT Hit 발생 시 미스 핸들러(Miss handler)가 종료되기 전 HAT에 변환된 어드레스를 저장하는 기능을 구현하게 된다.
이하, 본 발명의 실시 예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 에일리어스 메모리 연산 과정을 통한 데이터 로드 방법을 설명하기 위한 아키텍처이다.
도 1을 참조하면, 에일리어스 메모리 연산 과정을 통한 데이터 로드시에는 어드레스 변환을 위한 별도의 연산 없이 데이터 로드 명령에 따른 CPU 프로세서의 에일리어스 어드레스 요청 단계인 S1 단계부터 순차적으로 S8 단계까지 에일리어스 어드레스를 이용한 데이터 로드 과정을 순차적으로 진행하게 된다.
구체적으로, 먼저 CPU 프로세서에서는 어드레스 변환을 위한 별도의 연산 없이 HAT를 거쳐서 변환된 어드레스를 요청하게 되고(S1), HAT hit이 발생한 경우 HAT에 저장되어 있는 변환된 어드레스를 TLB로 보내게 된다(S2). 이 변환된 어드레스를 이용하여 캐시 계층(Cache Hierarchy)을 거쳐 SAT 상의 사본이 저장된 위치에 접근하게 된다(S3,S4). 이곳에 저장된 값이 캐시 계층을 통해 CPU 프로세서까지 전달됨으로써(S5,S6,S7,S8) 에일리어스 어드레스를 이용한 데이터 로드가 이루어지도록 하는 과정을 수행한다.
하지만, 에일리어스 어드레스 요청에 따른 HAT를 통한 어드레스 변환이 실패할 경우에는 HAT를 통해 에일리어스 메모리 연산을 수행하지 않고, 도 2에 도시된 미스 핸들러(Miss handler)를 호출하여 소프트웨어적인 방법으로 어드레스 변환을 수행한 뒤, 그 결과를 HAT에 저장하게 된다(S9).
도 2는 본 발명의 에일리어스 메모리 연산 실패시 데이터 로드 방법을 설명하기 위한 아키텍처이다.
도 2에 도시된 바와 같이, 에일리어스 어드레스 요청에 따른 에일리어스 어드레스 생성이 실패하여 HAT를 통한 에일리어스 메모리 연산을 수행하지 않고 미스 핸들러를 호출하면, CPU 프로세서에서는 어드레스 변환을 위한 소프트웨어 코드(Software code) 명령을 실행한다(ST1).
소프트웨어 코드(Software code) 명령을 실행도 2에 도시된 바와 같이, 에일리어스 읽기 연산 요청에 따른 어드레스 변환에 실패할 경우 HAT를 통한 에일리어스 메모리 연산을 중단하고 미스 핸들러를 호출하면, CPU 프로세서에서는 어드레스 변환을 위한 소프트웨어 코드(Software code) 명령을 실행한다(ST1).
소프트웨어 코드(Software code) 명령을 실행한 후에는 TLB와 캐시 계층을 거쳐 SAT의 해당 위치에서 값을 읽어오게 된다. 즉, 소프트웨어 코드로 변환된 어드레스는 캐시 계층을 통해 SAT로 전달되어 hit/miss 여부를 파악하고(ST3,ST4), SAT hit이 발생했다면 해당 위치에 저장되어있는 데이터는 캐시 계층을 통해 CPU 프로세서까지 전달됨으로써 소프트웨어 코드에 따른 에일리어스 연산을 통해 데이터 로드가 이루어지도록 하는 과정을 수행한다. 만일, ST1부터 ST7 단계까지를 수행한 결과 SAT에 유효한 entry가 존재하지 않을 경우, 변환하지 않은 어드레스의 공간에서 값을 읽어오게 된다(ST8 ~ ST13).
에일리어스 어드레스를 이용하는 HAT hit 상황에서의 데이터 로드를 시도하는 시간은 Tc로 가정하고, 소프트웨어 코드를 실행하여 어드레스 연산을 수행한 뒤 데이터를 로드하는 시간은 Ta로 가정할 때, HAT를 이용하여 CPU에서 수십 내지 수백 사이클에 걸쳐 일어나는 어드레스 변환을 한 사이클이나 두 사이클 정도로 단축시킬 수 있으므로 Tc 는 Ta 보다 작다(Tc < Ta).
만일, 소프트웨어 코드를 실행하여 어드레스 연산을 수행한 후 데이터 로드가 이루어지도록 하는 과정까지 수행한 결과 SAT에 유효한 엔트리(entry)가 존재하지 않을 경우에는 변환하지 않은 어드레스의 값을 읽어오게 된다. 이렇게 변환하지 않은 어드레스에서 값을 읽어오기까지의 기간을 Tb라고 가정하면, HAT miss 및 SAT miss 발생시 소요되는 시간은 (Tc + Ta + Tb)가 된다. 또한 HAT miss 및 SAT hit 발생시 시간은 (Tc + Ta + x)로 표현할 수 있다. 여기서 x는 HAT miss handler에서 변환이 완료된 어드레스를 HAT에 저장하는데 걸리는 시간이다. 따라서, HAT miss 및 SAT hit이 발생하는 경우에 소요되는 시간인 (Tc + Ta + x) 는 HAT이 없는 환경에서 SAT hit 발생 시 소요시간인 Ta 보다 크고((Tc + Ta + x) > Ta), HAT 적용 환경에서 HAT miss와 SAT miss가 모두 발생하는 경우 소요되는 시간인 (Tc + Ta + Tb) 는 HAT가 없는 환경에서 SAT miss 발생 시 소요되는 시간인 (Ta + Tb) 보다 크다((Tc + Ta + Tb) > (Ta + Tb)).
에일리어스 메모리 연산을 수행하지 않은 상황에 비해 소요 사이클이 큰 경우가 2가지가 있으나 HAT hit 상황이 충분히 많이 발생할 경우 이를 상쇄하고 남을 정도의 이득을 얻을 수 있다.
도 3은 에일리어스 메모리 연산 과정을 통한 데이터 저장 과정을 설명하기 위한 아키텍처이다.
도 3을 참조하면, 에일리어스 메모리 연산 과정을 통한 데이터 저장시에는 어드레스 변환을 위한 별도의 연산 없이 데이터 저장 명령에 따른 CPU 프로세서의 에일리어스 어드레스 요청 단계인 T1 단계부터 상황에 따라 T4 혹은 T7 단계까지 에일리어스 어드레스를 이용한 데이터 저장 과정을 진행하게 된다.
구체적으로, 먼저 CPU 프로세서에서는 어드레스 변환을 위한 별도의 연산 없이 HAT를 거쳐서 변환된 어드레스를 요청하게 되고(T1), HAT hit이 발생한 경우 HAT에 저장되어 있는 변환된 어드레스를 TLB로 보내게 된다(T2).
이에, 변환된 어드레스와 저장하고자 하는 값은 캐시 계층(Cache Hierarchy)을 통해 SAT로 전달되어(T3, T4) SAT에 값이 기록되고 에일리어스 어드레스를 이용한 데이터 저장 과정이 이루어지게 된다.
하지만, 에일리어스 어드레스 요청에 따른 HAT에서의 어드레스 변환(T1)에 실패할 경우에는 HAT를 통한 에일리어스 메모리 연산을 중단하고, 도 4에 도시된 미스 핸들러(Miss handler)를 호출한 뒤(T5), 미스 핸들러를 통해 알아낸 올바른 SAT상의 위치에 캐시 계층을 거쳐 값을 기록하게 된다(T6,T7).
도 4는 본 발명의 에일리어스 메모리 연산 실패시 데이터 저장 방법을 설명하기 위한 아키텍처이다.
도 4에 도시된 바와 같이, 에일리어스 쓰기 연산 요청에 따른 어드레스 변환에 실패할 경우 HAT를 통한 에일리어스 메모리 연산을 중단하고 미스 핸들러를 호출하면, CPU 프로세서에서는 어드레스 변환을 위한 소프트웨어 코드(Software code) 명령을 실행한다(SS1).
소프트웨어 코드 명령을 실행한 후에는 TLB와(SS2) 캐시 계층을 거쳐 SAT의 해당 위치에 값을 저장하여(SS3, SS4) 소프트웨어 코드에 따른 에일리어스 연산을 통해 데이터 저장이 이루어지도록 하는 과정을 수행한다. 에일리어스 연산을 통한 데이터 로드의 경우와는 다르게, SS1 내지 SS4 단계까지를 수행한 결과 SAT에 유효한 entry가 존재하지 않더라도, 원본에는 접근하지 않고 바로 SAT에 새로운 entry를 만들고 그곳에 데이터를 기록한다.
에일리어스 어드레스를 이용하는 HAT hit 상황에서 HAT에 접근하는데 소요되는 시간을 x, HAT에서 어드레스 변환이 완료되어 SAT의 해당 위치에 데이터 저장을 시도하는 데 걸리는 시간은 Tb로 가정하고, HAT를 사용하지 않는 환경에서 소프트웨어 코드를 실행하여 어드레스 연산을 수행한 뒤 데이터를 저장하는 시간은 Ta로 가정할 때, HAT를 이용하여 CPU에서 수십 내지 수백 사이클에 걸쳐 일어나는 어드레스 변환을 한 사이클이나 두 사이클 정도로 단축시킬 수 있으므로 HAT hit이 발생하는 경우의 소요시간인 (Tb + x) 는 Ta 보다 작다((Tb + x) < Ta).
만일, 소프트웨어 코드를 실행하여 어드레스 연산을 수행한 후 데이터 저장이 이루어지도록 하는 과정까지 수행한 결과 SAT에 유효한 엔트리(entry)가 존재하지 않을 경우 에일리어스 로드 연산과 다르게 원본에 접근하는 과정이 없기 때문에, SAT에 접근하는 시간과 어드레스 변환 결과를 HAT에 저장하는 시간만 고려하면 된다. 따라서, HAT miss 발생 시 소요시간은 HAT hit 발생 시 소요시간 (Tb + x)에 HAT Miss handler 작동시간인 Ta와 HAT에 변환된 결과를 기록하는 시간인 x를 더한 (Tb + Ta+ 2x) 가 되고, 이는 HAT가 적용되지 않은 환경에서 SAT의 작동시간인 Ta 보다 크다((Tb + Ta + 2x) > Ta).
에일리어스 메모리 연산을 수행하지 않은 상황에 비해 사이클이 큰 경우가 존재하나 HAT hit 상황이 충분히 많이 발생할 경우 이를 상쇄하고 남을 정도의 이득을 얻을 수 있다.
도 5는 B+ tree transaction 500회 수행 기간 동안의 사이클 횟수를 비교하여 나타낸 그래프이다. 그리고 도 6은 B+ tree transaction을 이용한 성능 평가 결과를 설명하기 위한 그래프이다.
먼저, 도 5를 참조하면 B+ tree transaction 500회를 수행하는 동안 소요된 CPU Cycle을 normalize 하여 비교해보면 상황에 따라 약 25~45% 성능 향상됨을 알 수 있다.
도 6의 경우는 Intel PIN 기반으로 작성된 Persistent Memory simulator에서 HAT 없이 SAT만 사용하는 경우와 어드레스 변환에 1 사이클이 소요되는 가상의 HAT를 이용하는 경우, 그리고 어드레스 변환에 사이클이 소요되지 않는 이상적인 HAT를 이용하는 경우의 Workload 수행에 소요되는 CPU cycle을 normalize하여 비교한 결과이다.
B+ tree의 초기 크기는 5000이며, 초기화 이후 500개의 transaction을 수행하는 동안 각 CPU 사이클 당 수행한 기능에 따라 breakdown 한 결과이다. 도시된 바와 같이 B+ tree에 이루어지는 Find/Insert의 비율을 조정하며 수행한 결과, 적게는 25%부터 많게는 45%까지 성능 향상이 이루어짐을 알 수 있다.
일반적인 B+ tree 사용 패턴과 유사한 Insert 20%, Find 80% 환경에서 약 35%의 성능 향상을 얻을 수 있으며, 일반적으로 작동시간이 0사이클인 이상적인 HAT에 비해 작동 시간이 존재하는 HAT를 사용하더라도, 성능상의 손실이 약 1% 내외로 거의 없음을 확인할 수 있다.
이상에서 상술한 바와 같이, 본 발명의 에일리어스 메모리 연산을 위한 경량 아키텍처에 의하면, CPU에서 수십 내지 수백 사이클에 걸쳐 일어나는 주소 변환 연산을 HAT를 통해 한 사이클이나 두 사이클 정도로 단축시킴으로써, 최소한의 아키텍처 수정만으로도 에일리어스 메모리 연산 과정을 지원하여 연산 과정에 따른 시간을 최대한 줄이면서도 CPU 성능을 더욱 향상시킬 수 있는 효과가 있다.
이상에서 본 발명은 기재된 구체 예에 대하여 상세히 설명되었지만 본 발명의 기술사상 범위 내에서 다양한 변형 및 수정이 가능함은 당업자에게 있어서 명백한 것이며, 이러한 변형 및 수정이 첨부된 특허 청구범위에 속함은 당연한 것이다.

Claims (6)

  1. (a)에일리어스 메모리 연산 과정을 수행하여 데이터를 로드하는 단계; 및
    (b)에일리어스 메모리 연산 과정을 수행하여 데이터를 저장하는 단계;를 포함하며,
    상기 (a)단계는
    (a-1)CPU 프로세서에서 어드레스 변환을 위한 별도의 연산 없이 HAT를 거쳐서 에일리어스 어드레스를 요청하는 단계;
    (a-2)상기 에일리어스 어드레스 요청시 HAT를 통해서 입력된 어드레스를 에일리어스 어드레스로 변환하는 단계;
    (a-3)상기 에일리어스 어드레스 요청에 따른 에일리어스 어드레스 변환이 실패할 경우 HAT를 통한 에일리어스 메모리 연산을 중단하고 미스 핸들러(Miss handler)를 호출하는 단계; 및
    (a-4)상기 에일리어스 어드레스 변환 성공시 상기 에일리어스 어드레스를 이용하여 SAT에 접근하여 데이터를 로드하는 단계;
    를 포함하고,
    상기 (b)단계는
    (b-1)CPU 프로세서에서 어드레스 변환을 위한 별도의 연산 없이 HAT를 거쳐서 에일리어스 어드레스를 요청하는 단계;
    (b-2)상기 에일리어스 어드레스 요청시 HAT를 통해서 입력된 어드레스를 에일리어스 어드레스로 변환하는 단계;
    (b-3)상기 에일리어스 어드레스 요청에 따른 에일리어스 어드레스 변환이 실패할 경우 HAT를 통한 에일리어스 메모리 연산을 중단하고 미스 핸들러를 호출하는 단계; 및
    (b-4)상기 에일리어스 어드레스 변환 성공시 상기 에일리어스 어드레스를 이용하여 SAT에 접근하여 데이터를 저장하는 단계;
    를 포함하는 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법.
  2. 제 1 항에 있어서,
    상기
    (a)에일리어스 메모리 연산 과정을 수행하여 데이터를 로드하는 단계는
    상기 에일리어스 어드레스를 이용하여 캐시 계층을 거쳐 SAT 상의 데이터 사본이 저장된 위치에 접근하는 단계; 및
    상기 SAT 상의 데이터 사본이 상기 캐시 계층을 통해 상기 CPU 프로세서까지 전달되도록 하여 상기 에일리어스 어드레스를 이용한 데이터 로드가 이루어지도록 하는 단계;
    를 더 포함하는 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법.
  3. 제 1 항에 있어서,
    상기 (a-3)단계에서 미스 핸들러가 호출되면,
    상기 CPU 프로세서에서 어드레스 변환을 위한 소프트웨어 코드(Software code) 명령을 실행하는 단계;
    상기 소프트웨어 코드 명령 실행의 결과로 변환된 어드레스가 캐시 계층을 통해 SAT로 전달되어 SAT hit 혹은 miss 여부를 파악하는 단계;
    상기 SAT hit가 발생할 경우 해당 엔트리(entry)에 저장되어 있는 데이터를 캐시 계층을 통해 CPU 프로세서까지 전달하여 상기 소프트웨어 코드에 따른 에일리어스 연산을 통해 상기 데이터 로드가 이루어지도록 하고, 상기 어드레스 변환의 결과를 HAT에 저장하는 단계;
    상기 SAT miss가 발생할 경우 에일리어스 어드레스 변환 이전의 원본 어드레스 공간에 저장되어 있는 데이터를 캐시 계층을 통해 CPU 프로세서까지 전달하여 상기 소프트웨어 코드에 따른 에일리어스 연산을 통해 상기 데이터 로드가 이루어지도록 하는 단계;
    를 순차적으로 수행하는 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법.
  4. 삭제
  5. 제 2 항에 있어서,
    상기
    (b)에일리어스 메모리 연산 과정을 수행하여 데이터를 저장하는 단계는
    상기 에일리어스 어드레스와 저장하고자 하는 데이터가 상기 캐시 계층을 통해 상기 SAT까지 전달되도록 하는 단계; 및
    상기 SAT까지 전달된 데이터를 상기 에일리어스 어드레스에 해당하는 위치에 기록하여 상기 에일리어스 어드레스를 이용한 데이터 저장이 이루어지도록 하는 단계;
    를 더 포함하는 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법.
  6. 제 1 항에 있어서,
    상기 (b-3)단계에서 미스 핸들러가 호출되면,
    상기 CPU 프로세서에서 어드레스 변환을 위한 소프트웨어 코드(Software code) 명령을 실행하는 단계;
    상기 소프트웨어 코드 명령 실행의 결과로 변환된 어드레스가 캐시 계층을 통해 SAT로 전달되어 SAT hit 혹은 miss 여부를 파악하는 단계;
    상기 SAT hit가 발생할 경우 해당 엔트리(entry)에 데이터를 기록하여 상기 소프트웨어 코드에 따른 에일리어스 연산을 통해 상기 데이터 저장이 이루어지도록 하는 단계;
    상기 SAT miss가 발생할 경우 상기 변환된 어드레스에 해당하는 새로운 엔트리(entry)를 생성하고 데이터를 기록하여 상기 소프트웨어 코드에 따른 에일리어스 연산을 통해 상기 데이터 저장이 이루어지도록 하는 단계;
    상기 어드레스 변환의 결과를 HAT에 저장하는 단계;
    를 순차적으로 수행하는 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법.
KR1020160048127A 2016-04-20 2016-04-20 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법 KR101830136B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160048127A KR101830136B1 (ko) 2016-04-20 2016-04-20 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법
US15/393,526 US10223261B2 (en) 2016-04-20 2016-12-29 Lightweight architecture for aliased memory operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160048127A KR101830136B1 (ko) 2016-04-20 2016-04-20 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법

Publications (2)

Publication Number Publication Date
KR20170119889A KR20170119889A (ko) 2017-10-30
KR101830136B1 true KR101830136B1 (ko) 2018-03-29

Family

ID=60089063

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160048127A KR101830136B1 (ko) 2016-04-20 2016-04-20 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법

Country Status (2)

Country Link
US (1) US10223261B2 (ko)
KR (1) KR101830136B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956324B1 (en) * 2013-08-09 2021-03-23 Ellis Robinson Giles System and method for persisting hardware transactional memory transactions to persistent memory
US11010361B1 (en) * 2017-03-30 2021-05-18 Amazon Technologies, Inc. Executing code associated with objects in a hierarchial data structure
US11341048B2 (en) * 2018-10-29 2022-05-24 Micron Technology, Inc. SLC cache allocation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064672A1 (en) * 2002-09-30 2004-04-01 International Business Machines Corporation Method and apparatus for managing a dynamic alias page table

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
US7017024B2 (en) * 2002-12-12 2006-03-21 International Business Machines Corporation Data processing system having no system memory
US20040117590A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Aliasing support for a data processing system having no system memory
US20120151232A1 (en) 2010-12-12 2012-06-14 Fish Iii Russell Hamilton CPU in Memory Cache Architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064672A1 (en) * 2002-09-30 2004-04-01 International Business Machines Corporation Method and apparatus for managing a dynamic alias page table

Also Published As

Publication number Publication date
US20170308465A1 (en) 2017-10-26
KR20170119889A (ko) 2017-10-30
US10223261B2 (en) 2019-03-05

Similar Documents

Publication Publication Date Title
US11803486B2 (en) Write merging on stores with different privilege levels
US7809903B2 (en) Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions
JP5526626B2 (ja) 演算処理装置およびアドレス変換方法
US10719448B2 (en) Cache devices with configurable access policies and control methods thereof
KR101830136B1 (ko) 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법
JP5286796B2 (ja) メモリ制御装置
US20210303478A1 (en) Memory management
US11176039B2 (en) Cache and method for managing cache
KR20110138946A (ko) 변경된 메모리 주소를 추적하는 트랜잭션 메모리 시스템 및 방법
US12007907B2 (en) Victim cache with write miss merging
US12001345B2 (en) Victim cache that supports draining write-miss entries
JP7022120B2 (ja) アトミックセットのデータアクセスを提供するための装置および方法
CN115098409A (zh) 进行阶层式高速缓存系统回存且无效的处理器以及方法

Legal Events

Date Code Title Description
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant