KR102579320B1 - 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 - Google Patents

캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 Download PDF

Info

Publication number
KR102579320B1
KR102579320B1 KR1020230051365A KR20230051365A KR102579320B1 KR 102579320 B1 KR102579320 B1 KR 102579320B1 KR 1020230051365 A KR1020230051365 A KR 1020230051365A KR 20230051365 A KR20230051365 A KR 20230051365A KR 102579320 B1 KR102579320 B1 KR 102579320B1
Authority
KR
South Korea
Prior art keywords
cache
input
transactions
schedulers
transaction areas
Prior art date
Application number
KR1020230051365A
Other languages
English (en)
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 KR1020230051365A priority Critical patent/KR102579320B1/ko
Application granted granted Critical
Publication of KR102579320B1 publication Critical patent/KR102579320B1/ko
Priority to US18/508,840 priority patent/US11994991B1/en

Links

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/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)

Abstract

이에, 본 개시의 일 목적은 복수의 캐시 스케줄러를 활용하여 캐시 스케줄러의 큐 뎁스의 확장성(Scalability)을 확보하기 위한 방안을 제공하는 것에 있다.
이를 위해, 본 개시의 일 실시예에 따른 캐시 메모리 장치는, 입력 트랜잭션들을 수신하기 위한 요청 수신부; 상기 입력 트랜잭션들의 트래픽을 모니터링하기 위한 트래픽 모니터링 모듈; N개의 캐시 스케줄러 - N은 2 이상의 정수임 - ; 모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 설정 모듈 - 각 캐시 스케줄러에 설정된 입력 트랜잭션 영역을 통해 입력 트랜잭션들이 전달됨 -; 및 상기 N개의 캐시 스케줄러에 의해 스케줄링된 입력 트랜잭션들에 대해 캐시 메모리 액세스를 수행하기 위한 액세스 실행부를 포함한다.

Description

캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법{Cache Memory Device and Method For Implementing Cache Scheduling Using Same}
본 개시는 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법에 관한 것이며, 보다 구체적으로는, 복수의 캐시 스케줄러를 활용하여 캐시 스케줄러의 큐 뎁스의 확장성(Scalability)을 확보하기 위한 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법에 관한 것이다.
캐시(Cache)는 프로세서(CPU)와 주 기억 장치 사이에 위치한 기억 장치로서, 캐시는 프로세서의 연산 속도와 메모리 액세스 속도의 차이를 감소시켜 프로세서가 빠른 속도로 데이터에 액세스할 수 있도록 한다. 이를 위해, 캐시는 프로세서와 인접하게 위치하고 있으며, 참조 지역성(Locality of Reference)의 원리에 따라 주 기억 장치 또는 보조 기억 장치의 데이터를 미리 가져와 보관하는 임시 저장소의 역할을 수행한다.
일반적으로, 프로세서는 먼저 캐시에 저장된 데이터에 액세스하되, 캐시에 필요한 데이터가 저장되어 있지 않은 경우에 프로세서는 주 기억 장치 또는 보조 기억 장치에 저장된 데이터에 액세스하게 된다. 프로세서가 필요 데이터를 캐시로부터 획득하는 경우에, 이를 '캐시 히트(cache hit)'이라고 한다. 반면에, 프로세서가 필요 데이터를 캐시로부터 획득하지 못하고, 주 기억 장치 또는 보조 기억 장치로부터 획득하는 경우, 이를 '캐시 미스(cache miss)'라고 한다. 캐시 히트 비율(cache hit-rate)은 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)를 가리키는데, 이러한 캐시 히트 비율은 캐시 성능을 판단하는데 주요한 지표로서 이용되고 있다.
캐시 스케줄러는 프로세서가 요청한 명령들에 대응하는 캐시 메모리 액세스를 스케줄링하기 위한 모듈이다. 이러한 캐시 스케줄러는 비순차 실행 및 완료(Out-of-Order Execution and Completion), 쓰기 조기 완료(Write Early Completion) 등과 같은 다양한 기능을 지원할 수 있으며, 메모리 액세스 효율을 높이기 위해 토마술로 알고리즘(Tomasulo Algorithm)과 같은 복잡한 메커니즘을 적용하여 구현될 수 있다. 따라서, 캐시 스케줄러는 캐시 메모리 장치의 전체 디자인 중에서도 복잡도가 높은 모듈에 해당한다.
이와 같은 높은 복잡도는 캐시 스케줄러의 큐 뎁스(Queue Depth)를 크게 가져가기 힘들게 하는 요인이 된다. 큐 뎁스는 저장 리소스에서 임의로 한번에 처리 가능한 명령의 개수를 나타내는데, 캐시 스케줄러에 있어서는 각 명령들의 비순차(reorder)적인 처리를 할 수 있는 범위를 결정하게 된다. 따라서, 캐시 스케줄러의 큐 뎁스는 궁극적으로는 캐시 전체의 처리 성능을 결정하는 중요한 파라미터에 해당하므로, 시스템 요구 성능을 높이기 위해서는 큐 뎁스를 최대한 크게 가져갈 필요가 있다.
이에, 본 개시의 일 목적은, 복수의 캐시 스케줄러를 활용하여 캐시 스케줄러의 큐 뎁스의 확장성(Scalability)을 확보하기 위한 방안을 제공하는 것에 있다.
다만, 본 개시가 해결하고자 하는 과제는 이상에서 언급한 바로 제한되지 않으며, 언급되지는 않았으나 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있는 목적을 포함할 수 있다.
이하 본 개시의 목적을 달성하기 위한 구체적 수단에 대하여 설명한다.
본 개시의 일 실시예에 따른 캐시 메모리 장치는, 입력 트랜잭션들을 수신하기 위한 요청 수신부; 상기 입력 트랜잭션들의 트래픽을 모니터링하기 위한 트래픽 모니터링 모듈; N개의 캐시 스케줄러 - N은 2 이상의 정수임 - ; 모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 설정 모듈 - 각 캐시 스케줄러에 설정된 입력 트랜잭션 영역을 통해 입력 트랜잭션들이 전달됨 -; 및 상기 N개의 캐시 스케줄러에 의해 스케줄링된 입력 트랜잭션들에 대해 캐시 메모리 액세스를 수행하기 위한 액세스 실행부를 포함한다.
전술한 캐시 메모리 장치에 있어서, 상기 N개의 입력 트랜잭션 영역을 설정하는 것은, 상기 입력 트랜잭션들의 어드레스에 대한 메모리 액세스 횟수를 나타내는 히스토그램을 생성하는 것, 상기 히스토그램에 있어서 N개의 입력 트랜잭션 영역 각각에 대한 적분 값이 동일하게 되는 위치를 연산하는 것, 상기 연산된 위치에 기초하여 상기 N개의 입력 트랜잭션 영역을 설정하는 것을 포함한다.
전술한 캐시 메모리 장치에 있어서, 상기 영역 설정 모듈은 인공 신경망 모듈을 포함하고, 상기 영역 설정 모듈에서 상기 N개의 입력 트랜잭션 영역을 설정하는 것은, 상기 인공 신경망 모듈은 상기 모니터링된 입력 트랜잭션들의 트래픽을 입력하는 것, 상기 인공 신경망 모듈에서 상기 입력된 트래픽을 분석하는 것, 상기 분석 결과에 기초하여 상기 N개의 입력 트랜잭션 영역을 설정하는 것을 포함한다.
전술한 캐시 메모리 장치에 있어서, 상기 영역 설정 모듈에서 상기 N개의 입력 트랜잭션 영역을 설정하는 것은, 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 없는 경우에 수행된다.
전술한 캐시 메모리 장치에 있어서, 상기 영역 설정 모듈에서 상기 N개의 입력 트랜잭션 영역을 설정하는 것은, 상기 N개의 캐시 스케줄러 중 적어도 일부에 남아 있는 입력 트랜잭션이 없는 경우에 수행된다.
전술한 캐시 메모리 장치에 있어서, 상기 영역 설정 모듈에서 상기 N개의 입력 트랜잭션 영역을 설정하는 것은, 상기 N개의 입력 트랜잭션 영역의 설정을 수행하는 시점 이전의 미리 정해진 제1 기간 동안의 입력 트랜잭션들의 트래픽에 기초하여 이루어진다.
전술한 캐시 메모리 장치에 있어서, 상기 영역 설정 모듈에서 상기 N개의 입력 트랜잭션 영역을 설정하는 것은, 미리 정해진 주기마다 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 임계치 미만인 경우에 추가 입력 트랜잭션을 수신하지 않음으로써 남아 있는 입력 트랜잭션이 없어질 때까지 대기하는 것, 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 없는 경우에, 모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 재설정하는 것을 포함한다.
본 개시의 일 실시예에 따른 컴퓨팅 시스템은, 프로세서; 상기 프로세서를 통해 실행되는 프로그램과 연관된 명령 또는 데이터를 저장하기 위한 주 기억 장치; 상기 주 기억 장치를 보조하기 위한 보조 기억 장치; 및 상기 프로세서 및 상기 주 기억 장치 사이에 위치하여 상기 주 기억 장치 또는 상기 보조 기억 장치의 명령 또는 데이터를 임시적으로 저장하기 위한 캐시 메모리 장치를 포함하고, 상기 캐시 메모리 장치는, 입력 트랜잭션들을 수신하기 위한 요청 수신부; 상기 입력 트랜잭션들의 트래픽을 모니터링하기 위한 트래픽 모니터링 모듈; N개의 캐시 스케줄러 - N은 2 이상의 정수임 - ; 모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 설정 모듈 - 각 캐시 스케줄러에 설정된 입력 트랜잭션 영역을 통해 입력 트랜잭션들이 전달됨 -; 및 상기 N개의 캐시 스케줄러에 의해 스케줄링된 입력 트랜잭션들에 대해 캐시 메모리 액세스를 수행하기 위한 액세스 실행부를 포함한다.
본 개시의 일 실시예에 따른 캐시 스케줄링을 구현하기 위한 방법은, 입력 트랜잭션들을 수신하는 단계; 상기 입력 트랜잭션들의 트래픽을 모니터링하는 단계; 모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, N개(N은 2 이상의 정수임)의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하는 단계; 상기 N개의 캐시 스케줄러 각각에 설정된 입력 트랜잭션 영역을 통해 각 캐시 스케줄러에 입력 트랜잭션들을 전달하는 단계; 상기 N개의 캐시 스케줄러에 의해 스케줄링된 입력 트랜잭션들에 대해 캐시 메모리 액세스를 수행하는 단계를 포함한다.
전술한 캐시 스케줄링 구현 방법에 있어서, 상기 N개의 입력 트랜잭션 영역을 설정하는 단계는, 상기 입력 트랜잭션들의 어드레스에 대한 메모리 액세스 횟수를 나타내는 히스토그램을 생성하는 단계와, 상기 히스토그램에 있어서 N개의 입력 트랜잭션 영역 각각에 대한 적분 값이 동일하게 되는 위치를 연산하는 단계와, 상기 연산된 위치에 기초하여 상기 N개의 입력 트랜잭션 영역을 설정하는 단계를 포함한다.
전술한 캐시 스케줄링 구현 방법에 있어서, 상기 N개의 입력 트랜잭션 영역을 설정하는 단계는, 상기 모니터링된 입력 트랜잭션들의 트래픽을 인공 신경망 모듈에 입력하는 단계와, 상기 인공 신경망 모듈에서 상기 입력된 트래픽을 분석하는 단계와, 상기 입력된 트래픽에 대한 분석 결과에 기초하여 상기 N개의 입력 트랜잭션 영역을 설정하는 단계를 포함한다.
전술한 캐시 스케줄링 구현 방법에 있어서, 상기 N개의 입력 트랜잭션 영역을 설정하는 단계는, 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 없는 경우에 수행되는 것이다.
전술한 캐시 스케줄링 구현 방법에 있어서, 상기 N개의 입력 트랜잭션 영역을 설정하는 단계는, 상기 N개의 캐시 스케줄러 중 적어도 일부에 남아 있는 입력 트랜잭션이 없는 경우에 수행되는 것이다.
전술한 캐시 스케줄링 구현 방법에 있어서, 상기 N개의 입력 트랜잭션 영역을 설정하는 단계는, 상기 N개의 입력 트랜잭션 영역의 설정을 수행하는 시점 이전의 미리 정해진 제1 기간 동안의 입력 트랜잭션들의 트래픽에 기초하여 이루어지는 것이다.
전술한 캐시 스케줄링 구현 방법에 있어서, 상기 N개의 입력 트랜잭션 영역을 설정하는 단계는, 미리 정해진 주기마다 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 임계치 미만인 경우에 추가 입력 트랜잭션을 수신하지 않음으로써 남아 있는 입력 트랜잭션이 없어질 때까지 대기하는 단계와, 상기 대기 결과 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 없다고 확인된 경우에, 모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 재설정하는 단계를 포함한다.
본 개시의 실시예들에 따르면, 복수의 캐시 스케줄러를 활용하여 캐시 스케줄러의 큐 뎁스의 확장성을 확보하기 위한 방안을 제공할 수 있다. 보다 구체적으로는, 본 개시의 일 실시예에 따른 캐시 메모리 장치는 캐시 스케줄러부에 N개(N은 2이상의 정수)의 캐시 스케줄러를 구비하되, 각 캐시 스케줄러에 대해 입력 트랜잭션의 어드레스별 메모리 액세스 횟수에 기반하여 통계적으로 동일한 메모리 액세스 비율을 갖는 입력 트랜잭션 영역을 할당하게 되므로 N개의 캐시 스케줄러 각각의 큐 뎁스를 최대한 활용 가능하게 되는 현저한 효과를 가진다.
다만, 본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서에 첨부되는 다음의 도면들은 본 개시의 바람직한 실시예를 예시하는 것이며, 발명의 상세한 설명과 함께 본 개시의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 개시는 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니 된다.
도 1은 본 개시의 일 실시예에 따른 컴퓨팅 시스템의 기본 구성에 대해 설명하는 도면이다.
도 2는 본 개시의 일 실시예에 따른 멀티 캐시 스케줄러 아키텍처를 포함하는 캐시 메모리 장치를 개략적으로 나타내는 도면이다.
도 3은 본 개시의 일 실시예에 따른 캐시 메모리 장치의 영역 설정 모듈에 의해 생성되는 히스토그램의 예시를 나타내는 도면이다.
도 4는 본 개시의 일 실시예에 따른 캐시 메모리 장치의 영역 설정 모듈에 대해 인공 신경망 모듈을 적용한 예를 나타내는 도면이다.
도 5는 본 개시의 다른 일 실시예에 따른 멀티 캐시 스케줄러 아키텍처를 포함하는 캐시 메모리 장치를 개략적으로 나타내는 도면이다.
도 6은 본 개시의 일 실시예에 따른 캐시 스케줄링을 구현하기 위한 방법에 대한 흐름도이다.
본 명세서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 명세서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 명세서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 명세서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 제2 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만, '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면, '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 명세서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 명세서에서 사용되는 "A, B, 및 C," "A, B, 또는 C," "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나," "A, B, 또는 C 중 적어도 하나," "A, B, 및/또는 C 중 적어도 하나," "A, B, 및 C 중에서 선택된 적어도 하나," "A, B, 또는 C 중에서 선택된 적어도 하나," "A, B, 및/또는 C 중에서 선택된 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 및 B 중에서 선택된 적어도 하나"는, (1) A, (2) A 중 적어도 하나, (3) B, (4) B 중 적어도 하나, (5) A 중 적어도 하나 및 B 중 적어도 하나, (6) A 중 적어도 하나 및 B, (7) B 중 적어도 하나 및 A, (8) A 및 B를 모두 지칭할 수 있다.
본 명세서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 명세서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 명세서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
컴퓨팅 시스템의 기본 구조
도 1은 본 개시의 일 실시예에 따른 컴퓨팅 시스템의 기본 구성에 대해 설명하는 도면이다.
도 1을 참조하면, 컴퓨팅 시스템은 프로세서(CPU)와, 프로세서(CPU)를 통해 실행되는 프로그램의 명령이나 데이터를 프로세서(CPU)가 직접 읽기 또는 쓰기하기 위해 사용되는 주 기억 장치와, 주 기억 장치를 보조하기 위한 보조 기억 장치를 포함할 수 있다. 또한, 컴퓨팅 시스템의 프로세서(CPU)는 제1 캐시 메모리 장치를 포함할 수 있으며, 프로세서(CPU)와 주 기억 장치 사이에 제2 캐시 메모리 장치를 포함할 수 있다. 제1 캐시 메모리 장치는 프로세서(CPU)에 내장된 형태의 캐시를 가리키며 제2 캐시 메모리 장치는 프로세서(CPU)의 외부의 메인 보드 등에 형성된 캐시를 가리킨다. 본 개시의 실시예들에 따른 캐시 메모리 장치는 제1 캐시 메모리 장치 또는 제2 캐시 메모리 장치일 수 있고, 일반적으로 말하는 L1, L2, L3 캐시 중 어느 하나일 수 있으며 이에 대해 한정하지는 않는다.
캐시 메모리 장치(Cache)는 프로세서의 연산 속도와 메모리 액세스 속도의 차이를 감소시켜 데이터의 병목 현상을 줄임으로써 프로세서가 빠른 속도로 데이터에 액세스할 수 있도록, 참조 지역성(Locality of Reference)의 원리에 따라 주 기억 장치 또는 보조 기억 장치의 데이터를 미리 가져와 임시적으로 저장하는 임시 저장소의 역할을 수행한다.
한편, 캐시 메모리 장치의 캐시 스케줄러의 큐 뎁스는 저장 리소스에서 임의로 한번에 처리 가능한 명령의 개수를 나타내는데, 캐시 스케줄러에 있어서는 각 명령들의 비순차(reorder)적인 처리를 할 수 있는 범위를 결정하게 된다. 본 개시의 실시예들에 따른 캐시 메모리 장치는 N개(여기서, N은 2 이상의 정수), 즉, 복수의 캐시 스케줄러를 활용하여 캐시 스케줄러의 큐 뎁스의 확장성(Scalability)을 확보하기 위한 방안을 제안한다. 실시예들에 따르면, 프로세서(CPU)로부터의 입력 트랜잭션들의 트래픽을 모니터링하고, 모니터링된 입력 트랜잭션들의 트래픽에 기초하여 복수의 스케줄러 각각에 대해 가변적인 입력 트랜잭션 영역을 설정하고, 이러한 입력 트랜잭션 영역을 통해 프로세서(CPU)로부터의 입력 트랜잭션들이 대응하는 캐시 스케줄러로 전달되게 되므로, 복수의 캐시 스케줄러를 통한 큐 뎁스의 확장성을 극대화할 수 있다. 이하에서는 이에 대해 자세히 설명하도록 한다.
멀티 캐시 스케줄러 아키텍처를 포함하는 캐시 메모리 장치
도 2는 본 개시의 일 실시예에 따른 멀티 캐시 스케줄러 아키텍처를 포함하는 캐시 메모리 장치를 개략적으로 나타내는 도면이다.
도 2를 참조하면, 본 개시의 일 실시예에 따른 멀티 캐시 스케줄러 아키텍처를 포함하는 캐시 메모리 장치(100)는 요청 수신부(10), 캐시 스케줄러부(20) 및 액세스 실행부(30)를 포함할 수 있다.
요청 수신부(10)는 프로세서(CPU)로부터 쓰기(Write, W) 명령들 및 읽기(Read, R) 명령들을 포함하는 입력 트랜잭션들을 수신할 수 있다. 이러한 입력 트랜잭션들은 프로세서와 캐시 메모리 장치(100) 사이의 버스 구조(미도시)를 통해 송수신될 수 있다. 또한, 요청 수신부(10)는 수신한 입력 트랜잭션들을 패킷화하여 분류할 수 있다. 이에, 요청 수신부(10)는 입력 트랜잭션들을 수신하기 위한 수신 큐(Request Queue)(12), 및 수신한 입력 트랜잭션들을 각각 디코딩하고 캐시 라인 단위로 메모리 액세스에 적합한 크기로 패킷화하기 위한 디코더(DEC)(14)를 포함할 수 있다.
또한, 본 개시의 일 실시예에 따르면, 요청 수신부(10)는 수신 큐(12)에서 수신되는 입력 트랜잭션들의 트래픽을 모니터링하기 위한 트래픽 모니터링 모듈(16)과, 모니터링된 입력 트랜잭션들의 트래픽에 기초하여 캐시 스케줄러부(20) 내의 N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 설정 모듈(18)을 포함할 수 있다. 다만, 설명의 편의를 위해 트래픽 모니터링 모듈(16) 및 영역 설정 모듈(18)을 구분하였지만, 두 모듈이 통합된 하나의 모듈로 구현될 수도 있다. 또한, 일 실시예에 따르면 트래픽 모니터링 모듈(16)은 하드웨어 모듈로 구현되고 영역 설정 모듈(18)은 소프트웨어 모듈로 구현될 수 있으나, 두 모듈은 각각 하드웨어 모듈 또는 소프트웨어 모듈로 구현될 수 있으며, 이에 대해 한정하지는 않는다. 또한, 영역 설정 모듈(18)의 경우, 캐시 메모리 장치(100)에 포함되어 구현될 수도 있고, 캐시 메모리 장치(100)의 외부(예를 들어, 프로세서(CPU))에 구현될 수도 있으며, 이에 대해 한정하지는 않는다. 일례로, 프로세서(CPU)에 의해 영역 설정 모듈(18)이 구현되는 경우, 캐시 메모리 장치(100)의 트래픽 모니터링 모듈(16)로부터 트래픽 모니터링 데이터를 수신하고 이를 프로세서(CPU)의 영역 설정 모듈(18)에서 분석 및 처리하여 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 경계 값을 생성하여 캐시 스케줄러부(20)로 직접 전송할 수 있다.
트래픽 모니터링 모듈(16)은 수신 큐(12)를 통해 각 입력 트랜잭션들에 대한 어드레스를 검사함으로써 입력 트랜잭션들의 트래픽을 로깅(logging) 등의 방식을 통해 모니터링할 수 있다. 이에 따라, 입력 트랜잭션들 각각의 어드레스에 따른 메모리 액세스의 횟수가 모니터링될 수 있다.
영역 설정 모듈(18)은 모니터링된 입력 트랜잭션들의 트래픽, 예를 들어, 입력 트랜잭션들 각각의 어드레스에 따른 메모리 액세스의 횟수에 기초하여 N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정할 수 있다. 이에, 각 캐시 스케줄러에 설정된 입력 트랜잭션 영역을 통해 디코더(14)에 의해 패킷화된 입력 트랜잭션들이 전달될 수 있다.
본 개시의 일 실시예에 따르면, 영역 설정 모듈(18)에서 N개의 입력 트랜잭션 영역을 설정하는 것은, 입력 트랜잭션들 각각의 어드레스에 대한 메모리 액세스 횟수를 나타내는 히스토그램을 생성하는 것, 생성된 히스토그램에 있어서 N개의 입력 트랜잭션 영역 각각에 대한 적분 값이 동일하게 되는 위치를 연산하는 것, 및 연산된 위치에 기초하여 N개의 입력 트랜잭션 영역을 설정하는 것을 포함할 수 있다.
도 3은 본 개시의 일 실시예에 따른 캐시 메모리 장치의 영역 설정 모듈에 의해 생성되는 히스토그램의 예시를 나타내는 도면이다.
도 3은 캐시 스케줄러부(20)에 4개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4)가 존재하는 상황을 가정한 것이다. 도 3을 참조하면, 영역 설정 모듈(18)은 x축이 입력 트랜잭션들의 어드레스이고, y축이 각 어드레스별 메모리 액세스 횟수를 나타내는 히스토그램을 생성할 수 있다. 도 3의 예에서는, 영역 설정 모듈(18)은 히스토그램에 있어서 4개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 각각에 대응하는 4개의 입력 트랜잭션 영역(R0, R1, R2, R3)을 설정하게 되는데, 보다 구체적으로는, 각 입력 트랜잭션 영역(R0, R1, R2, R3)의 적분 값, 즉, 히스토그램에 있어서 각 영역의 면적이 모두 동일하게 되는 위치를 연산하고, 해당 위치를 각 입력 트랜잭션 영역(R0, R1, R2, R3)의 영역 경계 값(Th1, Th2, Th3)으로 정의하고 이에 기초하여 4개의 입력 트랜잭션 영역(R0, R1, R2, R3)을 설정할 수 있다.
이 때, 본 개시의 일 실시예에 따르면, 영역 설정 모듈(18)에서 N개의 입력 트랜잭션 영역(R0, R1, R2, R3)을 설정하는 것은, N개의 입력 트랜잭션 영역(R0, R1, R2, R3)의 설정을 수행하는 시점 이전의 미리 정해진 제1 기간 동안의 입력 트랜잭션들의 트래픽에 기초하여 이루어질 수 있다. 이에, 영역을 설정하는 시점에서 비교적 최근의 입력 트랜잭션들의 트래픽에 기초한 영역 설정을 수행할 수 있는 효과가 발생한다. 다른 예에서는, 영역 설정 모듈(18)에서 이전에 영역을 설정한 시점 이후부터 누적된 입력 트랜잭션들의 트래픽을 모두 고려하여 입력 트랜잭션 영역(R0, R1, R2, R3)을 설정할 수도 있다.
본 개시의 일 실시예에 따른 캐시 스케줄러부(20)는 복수(N개)의 캐시 스케줄러, 예를 들어, 제1 캐시 스케줄러(SCHD1), 제2 캐시 스케줄러(SCHD2), 제3 캐시 스케줄러(SCHD3), 제4 캐시 스케줄러(SCHD4)를 포함할 수 있다. 다만, 도 2에 도시된 것처럼 4개의 캐시 스케줄러로 구성된 것은 예시일 뿐, 캐시 스케줄러의 개수에 대해서 한정하지는 않는다. 각 캐시 스케줄러는 자신에게 대응하는 입력 트랜잭션 영역을 통해 입력 트랜잭션을 전달받게 되고 전달받은 입력 트랜잭션에 대응하는 캐시 메모리 액세스 및 다이렉트 메모리 액세스(Direct Memory Access, DMA)를 포함하는 메모리 액세스를 스케줄링할 수 있다.
이 과정에서, 메모리 액세스 효율을 높이기 위해, 캐시 스케줄러부(20)의 각 캐시 스케줄러는 비순차 실행 및 완료(Out-of-Order Execution and Completion), 쓰기 조기 완료(Write Early Completion) 등과 같은 다양한 기능을 지원하는 토마술로 알고리즘(Tomasulo Algorithm)과 같은 복잡한 메커니즘을 적용하여 스케줄링을 수행할 수 있다. 일례로, 캐시 스케줄러는 (1) 데이터의 종속성(dependency)을 체크하고, (2) 비순차적(out-of-order)으로 처리할 수 있는 트래픽을 결정하고, (3) 비순차 완료(completion) 처리하는 등의 매우 복잡한 스케줄링 과정을 수행하게 된다. 따라서, 캐시 스케줄러부(20)는 캐시 메모리 장치(100)의 전체 디자인 중에서도 복잡도가 높은 모듈에 해당한다. 이와 같은 높은 복잡도는 캐시 스케줄러의 큐 뎁스(Queue Depth)를 크게 가져가기 힘들게 하는 요인이 된다. 큐 뎁스는 저장 리소스에서 임의로 한번에 처리 가능한 명령의 개수를 나타내는데, 캐시 스케줄러에 있어서는 각 명령들의 비순차(reorder)적인 처리를 할 수 있는 범위를 결정하게 된다. 따라서, 캐시 스케줄러의 큐 뎁스는 궁극적으로는 캐시 전체의 처리 성능을 결정하는 중요한 파라미터에 해당하므로, 시스템 요구 성능을 높이기 위해서는 큐 뎁스를 최대한 크게 가져갈 필요가 있다.
이에 따라, 본 개시의 일 실시예에 따른 캐시 메모리 장치(100)는 캐시 스케줄러부(20)에 N개(N은 2이상의 정수)의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4)를 구비하되, 각 캐시 스케줄러에 대해 입력 트랜잭션의 어드레스별 메모리 액세스 횟수에 기반하여 통계적으로 동일한 메모리 액세스 비율을 갖는 입력 트랜잭션 영역을 할당하게 되므로 N개의 캐시 스케줄러 각각의 큐 뎁스를 최대한 활용 가능하게 되는 현저한 효과를 가진다. 특히, 일 실시예에 따른 입력 트랜잭션의 어드레스별 메모리 액세스 횟수는, 결국 사용자가 통계적으로 자주 사용하는 프로그램이나 명령 등의 자료 구조에 기반한 것이므로 확률적으로 각 캐시 스케줄러를 최대한 활용하게 될 가능성이 높아진다.
한편, 각 캐시 스케줄러는 재정렬 스케줄링 큐(Reorder Scheduling Queue, RSQ) 및 완료 스케줄링 큐(Completion Scheduling Queue, CSQ) 중 적어도 하나를 포함할 수 있다. 이러한 캐시 스케줄러부(20)는 캐시 컨트롤러에 포함되어 있을 수도 있고, 별도의 모듈로서 형성된 것일 수도 있다.
캐시 스케줄러부(20)의 각 캐시 스케줄러는 데이터 종속성(Data Dependency), 비순차적 트래픽 할당 가능 여부 등을 체크한 후 자신에게 할당된 입력 트랜잭션 영역을 통해 전달되는 입력 트랜잭션들에 대한 스케줄링을 수행하여 액세스 실행부(30)로 전송함으로써 캐시 메모리 액세스를 수행하도록 할 수 있다.
아비터(ArB)는 캐시 스케줄러부(20) 및 액세스 실행부(30) 사이에 위치하여, 캐시 스케줄러부(20)의 N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4)를 액세스 실행부(30)와 접속할 수 있다. 아비터(ArB)는 캐시 스케줄러들 사이의 메모리 액세스가 비슷한 횟수로 유지될 수 있도록 하여 병목 현상이 발생하는 것을 방지하는 작용을 할 수 있다.
액세스 실행부(30)는 수신한 입력 트랜잭션들에 대해 캐시 태그를 통하여 캐시 메모리 액세스를 수행할 수 있다. 캐시 메모리 액세스를 수행한 결과, 캐시에 특정 입력 트랜잭션(패킷)에 대응하는 데이터가 존재하는 캐시 히트(hit)의 경우, 캐시 스케줄러부(20)의 완료 스케줄링 큐(CSQ)에 액세스 결과가 전달되어 큐잉될 수 있다. 그리고, 완료 스케줄링 큐(CSQ)는 큐잉된 액세스 결과들을 원래 순서(즉, 프로세서가 명령을 전송한 순서)에 맞추어 프로세서(CPU)로 전달할 수 있다. 이를 위해 완료 스케줄링 큐(CSQ)는 디코더로부터 각 명령의 순서 정보를 수신할 수 있다. 한편, 캐시 메모리 액세스를 수행한 결과, 캐시에 특정 입력 트랜잭션(패킷)에 대응하는 데이터가 존재하지 않는 캐시 미스(Miss)의 경우, 주 기억 장치 및/또는 보조 기억 장치에 대해 다이렉트 메모리 액세스(Direct Memory Access, DMA)를 수행할 수 있다.
도 4는 본 개시의 일 실시예에 따른 캐시 메모리 장치의 영역 설정 모듈에 대해 인공 신경망 모듈을 적용한 예를 나타내는 도면이다.
도 4를 참조하면, 영역 설정 모듈(18)은 인공 신경망 모듈을 포함할 수 있으며, 이러한 인공 신경망 모듈을 통하여 트래픽 모니터링 데이터(181a)에 기초하여, N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 경계 값(183a)을 출력할 수 있다. 이는 영역 설정 모듈(18)이 히스토그램을 이용하여 각 입력 트랜잭션 영역의 면적(적분 값)을 기초로 영역 경계 값을 도출하는 것과 구분된다.
인공 신경망 모듈은 예를 들어 Transformer, LSTM(Long-Short Term Memory), RNN(Recurrent Neural Network), CNN(Convolution Neural Network), GAN(Generative Adversarial Network), AE(AutoEncoder) 등의 인공 신경망 모듈 중 적어도 하나를 포함하거나, 다층 퍼셉트론(Multi-layer perceptron), 나이브 베이지안 분류(Naive-Bayesian Classification), 랜덤 포레스트 분류(Random Forest Classification) 등의 기계 학습 모델이 이용될 수도 있다.
구체적으로 설명하면, 영역 설정 모듈(18)의 인공 신경망 모듈의 사전 학습 세션에서는, 사전 학습용 트래픽 모니터링 데이터(181)가 인공 신경망 모듈에 입력으로서 제공될 수 있다. 이러한 사전 학습용 트래픽 모니터링 데이터(181)는 특정 기간 동안의 입력 트랜잭션들에 대한 모니터링을 수행한 샘플일 수 있으며, 이러한 데이터의 취득 방법에 대해 제한하지는 않는다.
그리고, 인공 신경망 모듈은, 입력된 사전 학습용 트래픽 모니터링 데이터(181)에 기초하여, 영역 경계 예측 데이터(183)를 출력할 수 있다. 이러한 영역 경계 예측 데이터(183)는 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 최적으로 설정하기 위하여 영역 경계 값을 예측한 것일 수 있다.
그리고, 사전 학습 세션에서 인공 신경망 모듈이 출력한 영역 경계 예측 데이터(183)를 실제 이상적인 것으로 계산된 영역 경계 값, 즉, Ground Truth(185)와 비교할 수 있다. 이러한 비교 결과, 영역 경계 예측 데이터(183)와 Ground Truth(185) 사이의 손실 함수(-∑y ilogp i)가 최소화되도록 인공 신경망 모듈은 사전 학습될 수 있다. 일례로, 인공 신경망 모듈은 영역 경계 예측 데이터(183)와 Ground Truth(185) 사이의 손실 함수나 에러(error)를 기초로 hidden layer의 weight를 업데이트하는 방식을 채용할 수 있다. 다수의 사전 학습용 트래픽 모니터링 데이터(181)는 x1, x2, x3와 같은 input layer의 각 노드에 입력되고, w1과 같은 weight을 기반으로 h1, h2, h3와 같은 hidden layer를 지나 softmax 등의 cost function 기반으로 예측된 영역 경계 예측 데이터(183)가 y1인 output layer로 출력되게 된다. 그리고 영역 경계 예측 데이터(183)와 Ground Truth(185) 사이의 에러(-∑y ilogp i)를 기반으로 인공 신경망 모듈의 weight가 back propagation으로 업데이트될 수 있다.
이와 같은 사전 학습 세션이 완료된 후, 추론 세션에서는, 영역 설정 모듈(18)의 사전 학습 완료된 인공 신경망 모듈에 트래픽 모니터링 모듈로부터의 트래픽 모니터링 데이터(181a)가 입력되면, 사전 학습 완료된 인공 신경망 모듈은 이에 기초하여 영역 경계 값(183a)을 출력할 수 있다. 그리고, 영역 설정 모듈(18)은 이러한 영역 경계 값(183a)에 기초하여 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정할 수 있다.
다만, 구체적인 인공 신경망 모듈의 구현 방법에는 다양한 변형이 가능하며, 이상 설명한 구현 방법으로 한정하지는 않는다.
도 5는 본 개시의 다른 일 실시예에 따른 멀티 캐시 스케줄러 아키텍처를 포함하는 캐시 메모리 장치를 개략적으로 나타내는 도면이다.
도 5를 참조하면, 본 개시의 다른 일 실시예에 따른 멀티 캐시 스케줄러 아키텍처를 포함하는 캐시 메모리 장치(100b)는 요청 수신부(10), 캐시 스케줄러부(20b) 및 액세스 실행부(30)를 포함할 수 있다.
도 5의 캐시 메모리 장치(100b)는 도 2와 관련하여 전술한 캐시 메모리 장치(100)에 비하여 캐시 스케줄러부(20b)가 큐 모니터링 모듈(25)을 포함한다는 차이점을 갖는다.
큐 모니터링 모듈(25)은 캐시 스케줄러부(20b)의 N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4)들 각각의 큐에 입력 트랜잭션(패킷)이 남아 있는지 여부를 모니터링하기 위한 모듈이다.
본 개시의 다른 일 실시예에 따르면, 영역 설정 모듈(18)에서 N개의 입력 트랜잭션 영역(R0, R1, R2, R3)을 설정하는 것은, 큐 모니터링 모듈(25)의 모니터링 결과, N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 전체에 남아 있는 입력 트랜잭션이 없는 경우(즉, Q Level == 0; IDLE 상태)에 수행될 수 있다. 캐시 스케줄러에 남아 있는 입력 트랜잭션이 있는 경우에 영역을 설정 또는 재설정하게 되면 메모리 액세스에 있어서 누락되는 것이 발생하는 등의 문제가 생길 수 있기 때문이다.
또는, 본 개시의 다른 일 실시예에 따르면, 영역 설정 모듈(18)에서 N개의 입력 트랜잭션 영역(R0, R1, R2, R3)을 설정하는 것은, 큐 모니터링 모듈(25)의 모니터링 결과, N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 중 적어도 일부에 남아 있는 입력 트랜잭션이 없는 경우(즉, Q Level == 0; IDLE 상태)에 수행될 수 있다. 이 때의 입력 트랜잭션 영역의 설정은 남아 있는 입력 트랜잭션이 없는 것으로 확인된 캐시 스케줄러 간의 영역 경계값에 대한 재설정에 해당할 수 있다.
일례로, N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 중 두 개의 스케줄러(SCHD2, SCHD3)에 입력 트랜잭션이 없고(즉, 비어 있는 경우), 나머지 스케줄러들은 입력 트랜잭션이 남아 있는 경우(busy), SCHD2 및 SCHD3 사이의 영역 경계값에 대해서만 재설정이 이루어질 수 있다. 비록 각 영역 경계값이 순차적으로 이루어질 수 있는 경우(예를 들어, 도 3에 있어서 Th1, Th2, Th3 순)가 아니더라도, IDLE 상태인 스케줄러 간 영역 경계값을 비순차적으로 재설정함으로써 캐시 스케줄러의 큐 뎁스의 활용을 보다 효율적으로 할 수 있는 효과가 발생한다.
또는, 본 개시의 다른 일 실시예에 따르면, 영역 설정 모듈(18)에서 N개의 입력 트랜잭션 영역(R0, R1, R2, R3)을 설정하는 것은, 큐 모니터링 모듈(25)의 모니터링 결과, 미리 정해진 주기마다 N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 전체에 남아 있는 입력 트랜잭션이 임계치 미만인 경우에 추가 입력 트랜잭션을 수신하지 않음으로써 남아 있는 입력 트랜잭션이 없어질 때까지 대기하는 것과, 대기 결과 N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 전체에 남아 있는 입력 트랜잭션이 없는 것으로 큐 모니터링 모듈(25)에 의해 확인된 경우에, 모니터링된 입력 트랜잭션들의 트래픽에 기초하여, N개의 캐시 스케줄러(SCHD1, SCHD2, SCHD3, SCHD4) 각각에 대응하는 N개의 입력 트랜잭션 영역(R0, R1, R2, R3)을 재설정하는 것을 포함할 수 있다.
캐시 스케줄링을 구현하기 위한 방법
도 6은 본 개시의 일 실시예에 따른 캐시 스케줄링을 구현하기 위한 방법에 대한 흐름도이다.
도 6을 참조하면, 먼저, 단계 S10에서, 입력 트랜잭션들을 수신할 수 있다. 이러한 입력 트랜잭션들의 수신은 요청 수신부(10)의 수신 큐(12)를 통해 수행될 수 있으며, 디코더(14)에 의해 수신한 입력 트랜잭션들을 각각 디코딩하고 캐시 라인 단위로 메모리 액세스에 적합한 크기로 패킷화할 수 있다.
단계 S20에서, 입력 트랜잭션들의 트래픽을 모니터링할 수 있다. 이를 위해 수신 큐(12)를 통해 각 입력 트랜잭션들에 대한 어드레스를 검사하고 입력 트랜잭션들의 트래픽을 로깅하는 과정이 수반될 수 있다. 그 결과, 입력 트랜잭션들 각각의 어드레스에 따른 메모리 액세스의 횟수가 모니터링될 수 있다.
단계 S30에서, 모니터링된 입력 트랜잭션들의 트래픽에 기초하여, N개(N은 2 이상의 정수임)의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정할 수 있다.
여기서, 일 실시예에 따르면, N개의 입력 트랜잭션 영역을 설정하는 것은, 입력 트랜잭션들 각각의 어드레스에 대한 메모리 액세스 횟수를 나타내는 히스토그램을 생성하는 것, 생성된 히스토그램에 있어서 N개의 입력 트랜잭션 영역 각각에 대한 적분 값이 동일하게 되는 위치를 연산하는 것, 및 연산된 위치에 기초하여 N개의 입력 트랜잭션 영역을 설정하는 것을 포함할 수 있다.
다른 실시예에 따르면, N개의 입력 트랜잭션 영역을 설정하는 것은, 모니터링된 입력 트랜잭션들의 트래픽을 인공 신경망 모듈에 입력하는 것, 인공 신경망 모듈에 의해 입력된 트래픽을 분석하는 것, 및 분석 결과에 기초하여 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 경계 값을 출력하는 것을 포함할 수 있다. 이러한 인공 신경망 모듈은 대용량 데이터를 활용한 사전 학습 과정을 거친 모듈이거나, 강화 학습 방식으로 보상을 통해 최적의 결과를 도출하도록 학습해나가는 모듈일 수도 있다.
단계 S40에서, N개의 캐시 스케줄러 각각에 설정된 입력 트랜잭션 영역을 통해 각 캐시 스케줄러에 입력 트랜잭션들을 전달할 수 있다. 각 캐시 스케줄러는 데이터 종속성, 비순차적 트래픽 할당 가능 여부 등을 체크한 후 자신에게 할당된 입력 트랜잭션 영역을 통해 전달되는 입력 트랜잭션들에 대한 스케줄링을 수행하여 액세스 실행부로 전송할 수 있다.
단계 S50에서, N개의 캐시 스케줄러에 의해 스케줄링된 입력 트랜잭션들에 대해 캐시 메모리 액세스를 수행할 수 있다.
컴퓨터 판독 가능한 기록매체
본 개시의 실시예들에 따른 방법의 각 단계들이나 동작들은, 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램의 실행에 따라 하나 이상의 프로세서를 포함하는 컴퓨터에 의해 수행될 수 있음은 자명하다.
전술한 기록매체에 저장된 컴퓨터 실행가능 명령어(instruction)들은, 해당하는 각 단계를 수행하도록 프로그램된 컴퓨터 프로그램을 통해 구현 가능하되, 이러한 컴퓨터 프로그램은 컴퓨터 판독 가능한 기록매체에 저장될 수 있고, 프로세서에 의해 실행 가능하다. 컴퓨터 판독 가능한 기록매체는 비일시적 판독 가능 매체(non-transitory readable medium)일 수 있다. 이 때, 비일시적 판독 가능 매체란 레지스터, 캐시, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 방법을 수행하기 위한 프로그램들은 소거가능 프로그래머블 판독 전용 메모리(EPROM), 전기적 소거가능 프로그래머블 판독 전용 메모리(EEPROM), 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스, 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크, 광학-자기 디스크, 및 CD-ROM 및 DVD-ROM 디스크를 포함하는 비휘발성 메모리 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
본 문서에 개시된 다양한 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
이상에서 설명한 바와 같이, 본 개시가 속하는 기술 분야의 통상의 기술자는 본 개시가 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 상술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 개시의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 개시의 범위에 포함하는 것으로 해석되어야 한다.
본 명세서 내에 기술된 특징들 및 장점들은 모두를 포함하지 않으며, 특히 많은 추가적인 특징들 및 장점들이 도면들, 명세서, 및 청구항들을 고려하여 당업자에게 명백해질 것이다. 더욱이, 본 명세서에 사용된 언어는 주로 읽기 쉽도록 그리고 교시의 목적으로 선택되었고, 본 개시의 주제를 묘사하거나 제한하기 위해 선택되지 않을 수도 있다는 것을 주의해야 한다.
본 개시의 실시예들의 상기한 설명은 예시의 목적으로 제시되었다. 이는 개시된 정확한 형태로 본 개시을 제한하거나, 빠뜨리는 것 없이 만들려고 의도한 것이 아니다. 당업자는 상기한 개시에 비추어 많은 수정 및 변형이 가능하다는 것을 이해할 수 있다.
그러므로 본 개시의 범위는 상세한 설명에 의해 한정되지 않고, 이를 기반으로 하는 출원의 임의의 청구항들에 의해 한정된다. 따라서, 본 개시의 실시예들의 개시는 예시적인 것이며, 이하의 청구항에 기재된 본 개시의 범위를 제한하는 것은 아니다.
100: 캐시 메모리 장치
10: 요청 수신부
12: 수신 큐
14: 디코더(DEC)
16: 트래픽 모니터링 모듈
18: 영역 설정 모듈
20: 캐시 스케줄러부
30: 액세스 실행부

Claims (15)

  1. 캐시 메모리 장치로서,
    입력 트랜잭션들을 수신하기 위한 요청 수신부;
    상기 입력 트랜잭션들의 트래픽을 모니터링하기 위한 트래픽 모니터링 모듈;
    N개의 캐시 스케줄러 - N은 2 이상의 정수임 - ;
    모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 설정 모듈 - 각 캐시 스케줄러에 설정된 입력 트랜잭션 영역을 통해 입력 트랜잭션들이 전달됨 -; 및
    상기 N개의 캐시 스케줄러에 의해 스케줄링된 입력 트랜잭션들에 대해 캐시 메모리 액세스를 수행하기 위한 액세스 실행부
    를 포함하고,
    상기 영역 설정 모듈이 상기 N개의 입력 트랜잭션 영역을 설정하는 것은,
    상기 입력 트랜잭션들의 어드레스에 대한 메모리 액세스 횟수를 나타내는 히스토그램을 생성하는 것,
    상기 히스토그램에 있어서 N개의 입력 트랜잭션 영역 각각에 대한 적분 값이 동일하게 되는 위치를 연산하는 것,
    상기 연산된 위치에 기초하여 상기 N개의 입력 트랜잭션 영역을 설정하는 것
    을 포함하고,
    상기 영역 설정 모듈이 상기 N개의 입력 트랜잭션 영역을 설정하는 것은, 상기 N개의 캐시 스케줄러 전체 또는 적어도 일부에 남아 있는 입력 트랜잭션이 없는 경우에 수행되는
    캐시 메모리 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 영역 설정 모듈에서 상기 N개의 입력 트랜잭션 영역을 설정하는 것은,
    상기 N개의 입력 트랜잭션 영역의 설정을 수행하는 시점 이전의 미리 정해진 제1 기간 동안의 입력 트랜잭션들의 트래픽에 기초하여 이루어지는
    캐시 메모리 장치.
  7. 제 1 항에 있어서,
    상기 영역 설정 모듈에서 상기 N개의 입력 트랜잭션 영역을 설정하는 것은,
    미리 정해진 주기마다 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 임계치 미만인 경우에 추가 입력 트랜잭션을 수신하지 않음으로써 남아 있는 입력 트랜잭션이 없어질 때까지 대기하는 것,
    상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 없는 경우에, 모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 재설정하는 것
    을 포함하는 캐시 메모리 장치.
  8. 컴퓨팅 시스템으로서,
    프로세서;
    상기 프로세서를 통해 실행되는 프로그램과 연관된 명령 또는 데이터를 저장하기 위한 주 기억 장치;
    상기 주 기억 장치를 보조하기 위한 보조 기억 장치; 및
    상기 프로세서 및 상기 주 기억 장치 사이에 위치하여 상기 주 기억 장치 또는 상기 보조 기억 장치의 명령 또는 데이터를 임시적으로 저장하기 위한 캐시 메모리 장치
    를 포함하고,
    상기 캐시 메모리 장치는,
    입력 트랜잭션들을 수신하기 위한 요청 수신부;
    상기 입력 트랜잭션들의 트래픽을 모니터링하기 위한 트래픽 모니터링 모듈;
    N개의 캐시 스케줄러 - N은 2 이상의 정수임 - ;
    모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하기 위한 영역 설정 모듈 - 각 캐시 스케줄러에 설정된 입력 트랜잭션 영역을 통해 입력 트랜잭션들이 전달됨 -; 및
    상기 N개의 캐시 스케줄러에 의해 스케줄링된 입력 트랜잭션들에 대해 캐시 메모리 액세스를 수행하기 위한 액세스 실행부
    를 포함하고,
    상기 영역 설정 모듈이 상기 N개의 입력 트랜잭션 영역을 설정하는 것은,
    상기 입력 트랜잭션들의 어드레스에 대한 메모리 액세스 횟수를 나타내는 히스토그램을 생성하는 것,
    상기 히스토그램에 있어서 N개의 입력 트랜잭션 영역 각각에 대한 적분 값이 동일하게 되는 위치를 연산하는 것,
    상기 연산된 위치에 기초하여 상기 N개의 입력 트랜잭션 영역을 설정하는 것
    을 포함하고,
    상기 영역 설정 모듈이 상기 N개의 입력 트랜잭션 영역을 설정하는 것은, 상기 N개의 캐시 스케줄러 전체 또는 적어도 일부에 남아 있는 입력 트랜잭션이 없는 경우에 수행되는
    컴퓨팅 시스템.
  9. 캐시 스케줄링을 구현하기 위한 방법으로서, 상기 방법은 캐시 메모리 장치에 의해 수행되고,
    입력 트랜잭션들을 수신하는 단계;
    상기 입력 트랜잭션들의 트래픽을 모니터링하는 단계;
    모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, N개(N은 2 이상의 정수임)의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 설정하는 단계;
    상기 N개의 캐시 스케줄러 각각에 설정된 입력 트랜잭션 영역을 통해 각 캐시 스케줄러에 입력 트랜잭션들을 전달하는 단계;
    상기 N개의 캐시 스케줄러에 의해 스케줄링된 입력 트랜잭션들에 대해 캐시 메모리 액세스를 수행하는 단계
    를 포함하고,
    상기 N개의 입력 트랜잭션 영역을 설정하는 단계는,
    상기 입력 트랜잭션들의 어드레스에 대한 메모리 액세스 횟수를 나타내는 히스토그램을 생성하는 단계와,
    상기 히스토그램에 있어서 N개의 입력 트랜잭션 영역 각각에 대한 적분 값이 동일하게 되는 위치를 연산하는 단계와,
    상기 연산된 위치에 기초하여 상기 N개의 입력 트랜잭션 영역을 설정하는 단계
    를 포함하고,
    상기 N개의 입력 트랜잭션 영역을 설정하는 단계는,
    상기 N개의 캐시 스케줄러 전체 또는 적어도 일부에 남아 있는 입력 트랜잭션이 없는 경우에 수행되는
    캐시 스케줄링 구현 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제 9 항에 있어서,
    상기 N개의 입력 트랜잭션 영역을 설정하는 단계는,
    상기 N개의 입력 트랜잭션 영역의 설정을 수행하는 시점 이전의 미리 정해진 제1 기간 동안의 입력 트랜잭션들의 트래픽에 기초하여 이루어지는 것인
    캐시 스케줄링 구현 방법.
  15. 제 9 항에 있어서,
    상기 N개의 입력 트랜잭션 영역을 설정하는 단계는,
    미리 정해진 주기마다 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 임계치 미만인 경우에 추가 입력 트랜잭션을 수신하지 않음으로써 남아 있는 입력 트랜잭션이 없어질 때까지 대기하는 단계와,
    상기 대기 결과 상기 N개의 캐시 스케줄러 전체에 남아 있는 입력 트랜잭션이 없다고 확인된 경우에, 모니터링된 상기 입력 트랜잭션들의 트래픽에 기초하여, 상기 N개의 캐시 스케줄러 각각에 대응하는 N개의 입력 트랜잭션 영역을 재설정하는 단계
    를 포함하는 캐시 스케줄링 구현 방법.
KR1020230051365A 2023-04-19 2023-04-19 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 KR102579320B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020230051365A KR102579320B1 (ko) 2023-04-19 2023-04-19 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법
US18/508,840 US11994991B1 (en) 2023-04-19 2023-11-14 Cache memory device and method for implementing cache scheduling using same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230051365A KR102579320B1 (ko) 2023-04-19 2023-04-19 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법

Publications (1)

Publication Number Publication Date
KR102579320B1 true KR102579320B1 (ko) 2023-09-18

Family

ID=88196321

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230051365A KR102579320B1 (ko) 2023-04-19 2023-04-19 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법

Country Status (2)

Country Link
US (1) US11994991B1 (ko)
KR (1) KR102579320B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120008483A (ko) * 2008-12-30 2012-01-30 인텔 코오퍼레이션 트랜잭션 메모리(tm) 시스템의 기입 및 판독 모니터링 속성
JP2012141885A (ja) * 2011-01-05 2012-07-26 Nippon Telegr & Teleph Corp <Ntt> キャッシュシステム及びキャッシュ配置方法及びキャッシュ制御装置及びキャッシュ制御プログラム
JP2019082917A (ja) * 2017-10-31 2019-05-30 富士通株式会社 メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
EP1868111A1 (en) * 2001-09-28 2007-12-19 ConSentry Networks, Inc. A multi-threaded packet processing engine for stateful packet processing
US7747771B1 (en) * 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7644221B1 (en) * 2005-04-11 2010-01-05 Sun Microsystems, Inc. System interface unit
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080168002A1 (en) * 2007-01-05 2008-07-10 Kagarlis Marios A Price Indexing
CN104011690B (zh) * 2011-12-29 2016-11-09 英特尔公司 具有直接存取的多级存储器
US9495526B2 (en) * 2013-03-15 2016-11-15 Eyelock Llc Efficient prevention of fraud
US10120809B2 (en) * 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class
US10452548B2 (en) 2017-09-28 2019-10-22 Advanced Micro Devices, Inc. Preemptive cache writeback with transaction support
KR20190090614A (ko) 2018-01-25 2019-08-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US20190384690A1 (en) * 2018-06-13 2019-12-19 College Of William & Mary Method for estimating memory reuse-distance profile
US11768779B2 (en) 2019-12-16 2023-09-26 Advanced Micro Devices, Inc. Cache management based on access type priority

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120008483A (ko) * 2008-12-30 2012-01-30 인텔 코오퍼레이션 트랜잭션 메모리(tm) 시스템의 기입 및 판독 모니터링 속성
JP2012141885A (ja) * 2011-01-05 2012-07-26 Nippon Telegr & Teleph Corp <Ntt> キャッシュシステム及びキャッシュ配置方法及びキャッシュ制御装置及びキャッシュ制御プログラム
JP2019082917A (ja) * 2017-10-31 2019-05-30 富士通株式会社 メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置

Also Published As

Publication number Publication date
US11994991B1 (en) 2024-05-28

Similar Documents

Publication Publication Date Title
Ausavarungnirun et al. Exploiting inter-warp heterogeneity to improve GPGPU performance
US8667225B2 (en) Store aware prefetching for a datastream
TWI697837B (zh) 微處理器的前端以及執行零空泡條件分支預測的電腦實施方法
US8131980B2 (en) Structure for dynamic livelock resolution with variable delay memory access queue
US9223705B2 (en) Cache access arbitration for prefetch requests
US20090113181A1 (en) Method and Apparatus for Executing Instructions
JP2007241918A (ja) プロセッサ装置
US20140317357A1 (en) Promoting transactions hitting critical beat of cache line load requests
US20100042813A1 (en) Redundant Execution of Instructions in Multistage Execution Pipeline During Unused Execution Cycles
CN112230992B (zh) 一种包含分支预测循环的指令处理装置、处理器及其处理方法
CN104461758B (zh) 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
US20080065873A1 (en) Dynamic livelock resolution with variable delay memory access queue
CN108874689B (zh) 用于确认队列的设备和方法
US9959213B2 (en) Implementing barriers to efficiently support cumulativity in a weakly-ordered memory system
US7464242B2 (en) Method of load/store dependencies detection with dynamically changing address length
US9384131B2 (en) Systems and methods for accessing cache memory
KR102464788B1 (ko) 업/다운 프리페쳐
US9223714B2 (en) Instruction boundary prediction for variable length instruction set
US9389864B2 (en) Data processing device and method, and processor unit of same
KR102579320B1 (ko) 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법
US11567771B2 (en) Method and apparatus for back end gather/scatter memory coalescing
US10372902B2 (en) Control flow integrity
CN110825442A (zh) 一种指令预取方法及处理器
EP4020229A1 (en) System, apparatus and method for prefetching physical pages in a processor
US20130151809A1 (en) Arithmetic processing device and method of controlling arithmetic processing device

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant