KR102190688B1 - 관련된 응용들에 상호 참조하는 적응적 컨텍스트 스위칭을 수행하는 방법 및 시스템 - Google Patents

관련된 응용들에 상호 참조하는 적응적 컨텍스트 스위칭을 수행하는 방법 및 시스템 Download PDF

Info

Publication number
KR102190688B1
KR102190688B1 KR1020150079364A KR20150079364A KR102190688B1 KR 102190688 B1 KR102190688 B1 KR 102190688B1 KR 1020150079364 A KR1020150079364 A KR 1020150079364A KR 20150079364 A KR20150079364 A KR 20150079364A KR 102190688 B1 KR102190688 B1 KR 102190688B1
Authority
KR
South Korea
Prior art keywords
context switching
memory
module
response time
transaction
Prior art date
Application number
KR1020150079364A
Other languages
English (en)
Other versions
KR20150141880A (ko
Inventor
홍종 정
수하스
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20150141880A publication Critical patent/KR20150141880A/ko
Application granted granted Critical
Publication of KR102190688B1 publication Critical patent/KR102190688B1/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/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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint

Abstract

본 발명은 컴퓨터 시스템 내 메모리 모듈을 위한 트랜잭션을 관리하는 방법을 제공한다. 메모리 모듈은 레이턴시들을 갖는다. 트랜잭션을 위한 메모리 모듈의 프로젝트된 바쁨 레벨은 바쁨 레벨에 근거하여 예측된다. 일부 실시예들에서 트랜잭션을 위한 컨텍스트 스위칭의 수행 여부는 프로젝트된 응답 시간과 컨텍스트 스위칭 정책들에 근거하여 결정된다. 컨텍스트 스위칭은 이러한 결정에 근거하여 수행될 수 있다.

Description

관련된 응용들에 상호 참조하는 적응적 컨텍스트 스위칭을 수행하는 방법 및 시스템{METHOD AND SYSTEM FOR PERFORMING ADAPTIVE CONTEXT SWITCHING CROSS REFERENCE TO RELATED APPLICATIONS}
본 발명은 적응적 컨텍스트 스위칭에 관한 것으로, 특히, 관련된 응용들에 상호 참조하는 적응적 컨텍스트 스위칭을 수행하는 방법 및 시스템에 관련된 것이다.
컴퓨터 시스템들은 동적 램덤 액세스 메모리(DRAM: Dynamic Random Access Memory), 솔리드 스테이트 드라이브들(SSDs: Solid State Drives), 및 하드 디스크 드라이브들(HDDs: Hard Disk Drives)과 같은 다중 메모리 모듈들을 흔히 포함한다.
메모리 모듈들은 호스트 컴퓨터 상의 운영 체제(operating system)들 및/또는 어플리케이션들과 인터페이스하고, 인터페이스에 메모리 모듈들이 사용된다. 메모리 모듈들은 다른 레이턴시(latency)들을 가질 수 있다. 예를 들면, DRAM의 액세스를 위한 레이턴시는 읽기 및 쓰기 트랜잭션들 모두를 위해 일반적으로 약 50나노초이다. HDD들과 SDD들은 DRAM 보다 상당히 긴 레이턴시들을 갖는다. 이러한 기기들을 위한 레이턴시들은 일반적으로 읽기 및 쓰기 트랜잭션들을 위해 50마이크로초보다 일반적으로 더 크다.
사용하는 동안, 운영 체제 또는 다른 어플리케이션들은 메모리 모듈로부터 데이터를 쓰거나 데이터를 읽을 수 있다. 예를 들면, 시스템의 중앙 처리 장치(CPU: Central Processing Unit)는 적합한 모듈을 위한 읽기 요청 또는 쓰기 요청을 발행할 수 있다. 그러한 메모리 모듈 트랜잭션들은 완료를 위해 시간이 걸린다. 일부 모듈들에서, CPU(또는 운영 체제/어플리케이션)는 미리 결정된 시간 일부를 위한 다른 태스크를 위해 수행(메모리 모듈 액세스)되는 트랜잭션으로부터 전환된다. CPU는 나중에 메모리 모듈 트랜잭션으로 되돌려 스위치한다. 이러한 프로세스는 컨텍스트 스위칭으로 알려져 있다.
컨텍스트 스위칭은 패널티가 없는 것이 아니다. 컨텍스트 스위치는 완료를 위해 최소 5 내지 15마이크로초를 일반적으로 필요로 한다. 그와 같이, 컴퓨터 시스템은 하이 레이턴시를 갖는 메모리 모듈들을 위한 컨텍스트 스위칭의 수행만을 한다. HDD들과 SDD들을 위해, 레이턴시는 50마이크로초보다 커야한다. 그러한 하이 레이턴시 장치들에서, 컨텍스트 스위칭은 컨텍스트 스위칭을 위한 패널티보다 더 큰 메모리 모듈 트랜잭션을 위한 시간을 갖기 때문에, 트랜잭션들을 위해 수행될 수 있다. DRAM과 같은 로우 레이턴시 모듈에서, 50나노초의 레이턴시는 컨텍스트 스위칭을 위한 패널티보다 적다. 이러한 액세스에 대해, 액세스를 위한 CPU 대기가 완료되고, 컨텍스트 스위칭이 수행되지 않는다. 이와 같이, 컨텍스트 스위칭의 여부의 결정은 미리 결정되고, 메모리 모듈의 타입에 의존한다. 컨텍스트 스위칭은 유용하지만, 메모리 모듈들에 대한 트랜잭션들 상에 더 큰 제어가 요구될 수 있다.
본 발명의 목적은 메모리 트랜잭션들의 효율을 개선하도록 관련된 응용들에 상호 참조하는 적응적 컨텍스트 스위칭을 수행하는 방법 및 시스템을 제공함에 있다.
본 발명에 따른 컴퓨터 시스템 내 복수의 레이턴시들을 갖는 복수의 메모리 모듈들을 위한 트랜잭션을 관리하는 방법은 상기 트랜잭션을 위한 상기 메모리 모듈의 바쁨 레벨을 결정하는 단계, 및 상기 바쁨 레벨에 근거하여 상기 트랜잭션의 프로젝트된 응답 시간을 예측하는 단계를 포함한다.
이 실시예에 있어서, 상기 바쁨 레벨을 결정하는 단계는 상기 메모리 모듈의 바쁨 레벨에 따른 적어도 하나의 레지스터로 쿼리하는 단계를 포함하고, 상기 적어도 하나의 레지스터는 적어도 하나의 메모리 모듈과 상기 적어도 하나의 메모리 제어기 내에 상주한다.
이 실시예에 있어서, 상기 프로젝트된 응답 시간과 적어도 하나의 컨텍스트 스위칭 정책에 근거하여 상기 트랜잭션을 위한 컨텍스트 스위칭을 수행할지의 여부를 결정하는 단계, 및 상기 컨텍스트 스위칭이 수행되는 것을 나타내는 컨텍스트 스위칭이 수행되는 지의 여부가 결정되면, 상기 컨텍스트 스위칭을 수행하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 프로젝트된 응답 시간을 예측하는 단계는 바쁨 레벨이 임계값을 초과하는지의 여부를 결정하는 단계를 더 포함한다.
이 실시예에 있어서, 분석한 복수의 기록된 응답 시간들 중 적어도 하나를 포함하는 상기 바쁨 레벨을 결정하는 단계는 상기 바쁨 레벨을 지시하는 적어도 하나의 값을 저장하는 레지스터를 읽는 단계, 및 상기 바쁨 레벨에 근거하여 수치로 프로젝트된 응답 시간을 계산하는 단계를 포함한다.
이 실시예에 있어서, 상기 바쁨 레벨을 결정하는 단계는 글로벌 요청 큐 깊이 중 적어도 하나와, 복수의 메모리 모듈들을 위한 적어도 하나의 로컬 메모리 큐를 결정하는 단계를 포함한다.
이 실시예에 있어서, 상기 컨텍스트 스위칭은 시간 패널티를 갖고, 상기 메모리 모듈을 위한 예측된 응답 시간이 제 1 바쁨 레벨을 위한 상기 시간 패널티보다 적고, 제 2 바쁨 레벨을 위한 상기 시간 패널티보다 크며, 상기 복수의 메모리 모듈들의 다른 메모리 모듈을 위한 응답 시간이 상기 시간 패널티보다 항상 적거나 상기 시간 패널티보다 항상 크다.
이 실시예에 있어서, 상기 컨텍스트 스위칭을 수행하는 단계는 상기 메모리 모듈을 위한 상기 트랜잭션을 위한 응답 시간이 제 1 바쁨 레벨을 위한 시간 패널티보다 적고, 제 2 바쁨 레벨을 위한 시간 패널티보다 클 경우에만, 상기 메모리 모듈을 위한 바쁨 레벨의 결정만을 하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 메모리 모듈의 레이턴시가 컨텍스트 스위칭을 위한 시간 패널티보다 항상 적지 않고, 항상 크지 않으면, 적응적 컨텍스트 스위칭을 수행하는 단계를 포함하고, 상기 적응적 컨텍스트 스위칭을 수행하는 단계는 상기 바쁨을 결정하는 단계와 상기 프로젝트된 응답 시간을 예측하는 단계를 포함하고, 상기 적응적 컨텍스트 스위칭을 수행하는 단계는 상기 프로젝트된 응답 시간이 상기 바쁨 레벨을 위한 시간 패널티보다 크면 상기 트랜잭션을 위한 컨텍스트 스위칭을 수행하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 메모리 모듈의 레이턴시가 컨텍스트 스위칭을 위한 시간 패널티보다 항상 크면, 상기 트랜잭션을 위한 컨텍스트 스위칭을 수행하는 단계, 및 상기 프로젝트된 응답 시간이 상기 바쁨 레벨을 위한 시간 패널티보다 크면, 상기 트랜잭션을 위한 컨텍스트 스위칭을 수행하는 단계를 포함한다.
이 실시예에 있어서, 상기 프로젝트된 응답 시간을 예측하는 단계는 상기 바쁨 레벨이 임계값을 초과하였는지의 여부를 결정하고, 상기 바쁨 레벨이 상기 임계값을 초과하면, 상기 프로젝트된 응답 시간이 상기 시간 패널티를 초과하는 단계를 더 포함한다.
본 발명에 따른 컴퓨팅 시스템은 호스트 시스템에 연결되고, 복수의 특성 액세스 레이턴시들을 갖는 복수의 메모리 모듈들, 및 복수의 메모리 모듈들 중 메모리 모듈을 위한 바쁨 레벨을 결정하고, 상기 트랜잭션을 위한 프로젝트된 응답 시간을 예측하는 메모리 트랜잭션 응답 시간 예측기를 포함하는 적응적 컨텍스트 스위칭 모듈을 포함한다.
이 실시예에 있어서, 상기 적응적 컨텍스트 스위칭 모듈은 프로젝트된 응답 시간에 근거하여 컨텍스트 스위칭을 수행한다.
이 실시예에 있어서, 상기 메모리 트랜잭션 응답 시간 예측기는 바쁨 레벨을 나타내는 소프트웨어 기록된 응답 시간 중 적어도 하나와 상기 바쁨 레벨을 나타내는 적어도 하나의 값을 저장하기 위한 바쁨 레지스터를 포함한다.
이 실시예에 있어서, 복수의 메모리 모듈들, 복수의 메모리 모듈들의 적어도 하나의 메모리 모듈, 상기 바쁨 레지스터를 포함하는 적어도 하나의 메모리 컨트롤러를 위한 적어도 하나의 메모리 컨트롤러를 더 포함한다.
이 실시예에 있어서, 상기 메모리 트랜잭션 응답 시간 예측기는 글로벌 요청 큐 깊이 중 적어도 하나와 상기 복수의 메모리 모듈들을 위한 로컬 메밀 큐 깊이 중 적어도 하나에 근거하여 상기 바쁨 레벨을 결정한다.
이 실시예에 있어서, 상기 적응적 컨텍스트 스위칭 모듈은 상기 메모리 트랜잭션 응답 시간 에측기로부터 상기 프로젝트된 응답 시간에 근거하여 상기 컨텍스트 스위칭을 수행할지의 여부를 결정하는 컨텍스트 스위치 하이퍼바이저, 및 상기 복수의 메모리 모듈들을 위한 복수의 컨텍스트 스위칭 정책들을 수신하고 저장하고, 상기 메모리 모듈을 위한 적어도 하나의 컨텍스트 스위칭 정책에서 상기 컨텍스트 스위치 하이버파이저를 제공하는 컨텍스트 스위치 정책 모듈을 포함한다.
이 실시예에 있어서, 상기 컨텍스트 스위칭은 시간 패널티를 갖고, 상기 메모리 모듈을 위한 상기 예측된 응답 시간은 제 1 바쁨 레벨을 위한 상기 시간 패널티보다 적고, 제 2 바쁨 레벨을 위한 상기 시간 패널티보다 크고, 상기 복수의 메모리 모듈들의 다른 메모리 모듈을 위한 응답 시간은 상기 시간 패널티보다 항상 적거나 상기 시간 패널티보다 항상 크다.
이 실시예에 있어서, 상기 적응적 컨텍스트 스위칭 모듈은 상기 메모리 모듈을 위한 상기 트랜잭션에 대한 응답 시간이 제 1 바쁨 레벨을 위한 시간 패널티보다 적고, 제 2 바쁨 레벨을 위한 상기 시간 패널티보다 크면, 상기 메모리 모듈을 위한 상기 바쁨 레벨의 결정만을 한다.
본 발명에 따른 컴퓨팅 시스템은 호스트 시스템에 연결되고, 복수의 특성 액세스 레이턴시들을 갖는 복수의 메모리 모듈들, 상기 복수의 메모리 모듈들을 위한 적어도 하나의 메모리 컨트롤러, 및 상기 복수의 메모리 모듈의 상기 적어도 하나의 메모리 모듈과 상기 적어도 하나의 메모리 컨트롤러는 상기 메모리 모듈의 바쁨 레벨을 나타내는 적어도 하나의 값을 저장하기 위한 바쁨 레지스터를 포함하고, 상기 복수의 메모리 모듈의 적어도 하나의 메모리 모듈과 상기 적어도 하나의 메모리 컨트롤러는 상기 메모리 모듈의 바쁨 레벨을 나타내는 적어도 하나의 값을 저장하는 바쁨 레지스터를 포함한다.
본 발명의 컴퓨터 시스템 내 복수의 레이턴시들을 갖는 복수의 메모리 모듈들을 위한 트랜잭션을 관리하는 방법은 레지스터에 의해 바쁨의 레벨을 결정함에 따라 컴퓨터 시스템 내 메모리 트랜잭션들의 효율을 개선할 수 있다.
도 1은 본 발명의 실시예에 따른 적응적 컨텍스트 스위칭 모듈을 포함하는 컴퓨터 시스템을 도시한 블록도,
도 2는 본 발명에 다른 실시예에 따른 적응적 컨텍스트 스위칭 모듈을 포함하는 컴퓨터 시스템의 일부의 블록도,
도 3은 본 발명의 실시예에 따른 메모리 모듈을 위한 바쁨 레벨을 결정하고, 컨텍스트 스위칭을 선택적으로 수행하기 위한 방법을 도시한 순서도,
도 4는 본 발명의 실시예에 따른 바쁨 레벨을 위한 하나의 메커니즘을 도시한 도면,
도 5는 본 발명의 다른 실시예에 따른 하드웨어 액세스된 바쁨을 이용하는 컨텍스트 스위치 모듈을 결합한 컴퓨팅 시스템을 도시한 블록도,
도 6은 본 발명의 다른 실시예에 따른 하드웨어 액세스된 바쁨을 이용하는 컨텍스트 스위칭 모듈을 결합한 컴퓨팅 시스템을 도시한 블록도, 및
도 7은 본 발명의 다른 실시예에 따른 적응적 컨텍스트 스위칭을 수행하기 위한 방법을 도시한 순서도이다.
다음의 설명들은 그 발명이 만들어지고 사용되기 위해 해당 기술 분야에서 실시될 수 있도록 제시되고, 특허 출원의 문맥과 그것의 요구들에 의해 제공된다. 예시적인 실시예들을 위한 다양한 수정들과 여기에 기술된 일반적인 원리들과 특징들을 나타낸다. 예시적인 실시예들은 특정한 구현들로 제공되는 특정 방법들 및 시스템들의 용어들 내에서 주로 기술되고, 시스템들은 다른 구현들로 효율적으로 동작할 수 있다. 그러나, 방법들과 시스템들은 다른 구현들로 효율적으로 동작할 수 있다. “예시적인 실시예”, “일실시예(하나의 실시예)”, 및 “다른 실시예”는 다중 실시예들과 같은 동일하거나 다른 실시예들을 참조할 수 있다. 실시예들은 특정 컴포넌트들을 갖는 시스템들 및/또는 장치들에 대하여 기술될 수 있다. 그러나, 시스템들 및/또는 장치들은 도시된 것보다 많거나 적은 컴포넌트들을 포함할 수 있고, 배열들 내 변화들, 컴포넌트들의 타입은 본 발명의 범위를 벗어나지 않도록 만들어질 수 있다. 더욱이, 특정 블록들이 도시될지라도, 블록들의 다양한 기능들은 다른 블록으로 분리되거나 결합될 수 있다. 그러한 예시적인 실시예들은 특정 단계들을 갖는 특정 실시예들의 구분으로 기술될 수도 있다. 그러나, 방법과 시스템은 예시적인 실시예들과 일치하지 않는 다른 순서들에 따른 단계들, 다른 및/또는 추가적인 단계들을 갖는 다른 방법들을 위해 효율적으로 동작한다. 따라서, 본 발명은 도시된 실시예들로 한정되지 않는 것으로 이해될 수 있으나, 여기에 기술된 원리들 및 특징들과 일치하는 넓은 범위에 따를 수 있다. 참조번호는 본 발명의 일반적인 발명의 개념에 따른 실시예들을 상세히 설명하기 위한 것으로, 첨부된 도면들 내에서 도시된 예들로서, 동일한 참조번호는 동일한 엘리먼트를 나타낼 수 있다.
본 발명을 설명하기 위한 문맥에서, 단수 표현, 복수 표현, 및 상기와 같이 다른 대상을 나타내는 지시어구(특히, 다음의 청구항들의 문맥에서)의 사용은 여기에서 다른 설명이 없거나 문맥에 의해 명확히 부정되지 않는 한 단수와 복수 모두를 보호하기 위한 것이다. '구성하는', '가지는', '포함한', 및 '함유되는'과 같은 용어들은 설명이 없는 한, 제한을 두지 않는 용어들로 해석된다.
다르게 정의되지 않는 한, 여기에서 사용된 모든 기술적 및 과학적 용어들은 본 발명이 속하는 기술 분야에서 자명한 기술의 하나에 의해 통상적으로 이해되는 것과 동일한 의미를 갖는다. 여기에서 제공된 모든 예시들 또는 예시적인 용어들의 사용은 단지 본 발명을 보다 명확히 하기 위한 의도로 사용되는 것으로, 다른 설명이 없는 한 본 발명의 권리범위를 한정하지 않는다. 또한, 다른 정의가 없다면, 모든 용어들은 일반적으로 사용되는 사전들에서 정의된 모든 용어들이 지나치게 해석되지 않는다.
여기에서 사용된 '구성요소' 또는 '모듈'의 용어는 특정한 작업들을 수행하는 소프트웨어 또는 하드웨어 구성요소들로 한정되지 않는 것을 의미한다. 구성요소 또는 모듈은 하나 또는 그 이상의 프로세서들에서 실행되도록 구성되고, 저장 매체 내에 상주할 수 있다. 그러므로, 구성요소 또는 모듈은, 예를 들어, 소프트웨어 구성요소, 객체 지향 소프트웨어 구성요소, 클래스 구성요소들, 및 태스크 구성요소들, 프로세스들, 기능들, 특성들, 절차들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어들, 마이크로코드, 회로, 데이터, 데이터베이스들, 데이터 구조들, 테이블들, 어레이들, 및 변수들과 같은 구성요소들을 포함할 수 있다. 이러한 구성요소들을 위해 제공되는 기능들과, 구성요소들 또는 모듈들은 보다 적은 구성요소들과 구성요소들 또는 모듈들로 조합되거나, 부가적인 구성요소들과 구성요소들 또는 모듈들로 더 분리될 수도 있다.
도 1은 본 발명의 실시예에 따른 적응적 컨텍스트 스위칭 모듈을 포함하는 컴퓨터 시스템을 도시한 블록도이다.
도 1을 참조하면, 컴퓨터 시스템(100)은 하나 이상의 프로세서들에서 실행되는 운영 체제(110) 및 어플리케이션들(112)과, 메모리 모듈들(140, 150, 160)을 갖는다. 메모리 모듈(들)(140)은 액세스들을 위해 일반적으로 50나노초에 따른 낮은 레이턴시를 갖는다. 메모리 모듈(들)(150)은 일반적으로 50마이크로초보다 더 큰 하이 레이턴시를 갖는다. 하이브리드 메모리 모듈(들)(160)은 시스템(100)의 일부 동작들 또는 조건들을 위한 로우 레이턴시를 가질 수 있고, 다른 동작들 또는 다른 조건들을 위한 하이 레이턴시를 가질 수 있다. 이러한 메모리 모듈들(140, 150, 160)은 하기에서 더 상세히 기술한다. 메모리 모듈(들)(140 및/또는 150)은 생략될 수 있다. 간단히, 일부 구성 요소들만이 도시된다. 다른 구성 요소들은 키보드, 마우스, 및 디스플레이와 같은 입력/출력 장치들로 제한되지 않는 것을 포함하고, 컴퓨터 시스템(100) 내에 포함될 수 있다. 컴퓨터 시스템(100)은 적응적 컨텍스트 스위칭 모듈(120)을 포함할 수도 있다. 하기에 기술되는 바와 같이, 적응적 컨텍스트 스위칭 모듈(120)은 메모리 모듈(들)(140, 150, 160)의 액세스를 위한 컨텍스트 스위칭을 제어할 수 있다.
도 2는 본 발명에 다른 실시예에 따른 적응적 컨텍스트 스위칭 모듈을 포함하는 컴퓨터 시스템의 일부의 블록도이다.
도 2를 참조하면, 도 1에 도시된 컴퓨터 시스템(100)은 도 2에 도시된 적응적 컨텍스트 스위칭 모듈(120)의 컨텍스트와 같이 기술된다. 도 2를 살펴보면, 적응적 컨텍스트 스위칭 모듈(120)은 컨텍스트 스위칭 정책 모듈(122), 메모리 트랜잭션 응답 시간 예측기(124), 및 컨텍스트 스위치 하이퍼바이저(126)를 포함한다. 그러나, 도 2에 도시된 기능 모듈들(122, 124, 126)은 다른 방식으로 구분될 수 있고, 적응적 컨텍스트 스위칭 모듈은 다른 방식으로 구현될 수 있다.
도 1과 도 2를 참조하면, 로우 레이턴시 메모리 모듈(들)(140)은 로우 레이턴시를 갖는다. 이러한 로우 레이턴시들은 컨텍스트 스위칭을 위해 시간 패널티보다 훨씬 적고, 5마이크로초와 15마이크로초 사이에 따를 수 있다. 예를 들면, 50나노초에 따른 레이턴시를 갖는 DRAM 모듈들로 제한되지 않는 것을 포함한 모듈들은 로우 레이턴시 메모리 모듈(들)(140) 내 존재할 수 있다. 다른 로우 레이턴시들이 가능하다. 하이 레이턴시 메모리 모듈(들)(150)은 컨텍스트 스위칭을 위한 시간 패널티보다 상당히 더 높은 레이턴시를 갖는다. 예를 들면, 하이 레이턴시 메모리 모듈(들)(150)은 50마이크로초를 초과하는 레이턴시들을 갖는 SSD들 및/또는 HDD들을 포함할 수 있다.
하이브리드 레이턴시 메모리 모듈(들)(160)은 관심있는 시간 주기보다 적은 일부 인스턴스들이지만, 관심있는 시간 주기보다 더 큰 다른 케이스일 수 있는 레이턴시들을 갖는다. 일부 실시예들에서, 이러한 관심있는 시간 주기는 컨텍스트 스위칭을 위한 시간 패널티이다. 따라서, 모듈들(160)은 로우 및 하이 레인턴시들의 하이브리드로 고려되는 레이턴시들을 갖는다. 그러한 하이브리드 레이턴시 메모리 모듈들(160)은 메모리의 최근의 타입들일 수 있다. 하이브리드 레이턴시 메모리 모듈들의 예들은 자기적 랜덤 액세스 메모리(MRAM: Magnetic Random Access Memory) 모듈들과 저항성 메모리(resistive memory) 모듈들을 포함한다. 예를 들면, MRAM 모듈들은 약 500나노초부터 약 50마이크로초까지의 레이턴시 범위를 가질 수 있다. 500나노초 체계 내 레이턴시들을 갖는 트랜잭션들에서, 컨텍스트 스위칭은 일반적으로 바람직하지 못하다. 10에서 20마이크로초 범위 또는 그보다 더 높은 트랜잭션들에서, 컨텍스트 스위칭은 바람직할 것이다. 더욱이, MRAM 또는 다른 하이브리드 레이턴시 메모리 모듈들(160)은 비대칭 레이턴시들을 가질 수 있다. 예를 들면, 쓰기 액세스를 위한 레이턴시는 세 번의 읽기 액세스를 위한 레이턴시보다 더 클 수 있다. 그것이 가능하며, 그러므로, 읽기 트랜잭션을 위한 레이턴시는 컨텍스트 스위칭 시간 패널티보다 적은 반면, 쓰기 트랜잭션을 위한 레이턴시는 동일한 조건들에서 컨텍스트 스위칭 시간 패널티보다 더 클 수 있다. 컴퓨터 시스템(100) 내 메모리 모듈 트랜잭션들을 관리하기 위한, 특히 하이브리드 메모리 모듈들(160)을 포함한 매커니즘을 원할 수 있다.
적응적 컨텍스트 스위칭 모듈(120)은 컴퓨터 시스템(100) 내 메모리 트랜잭션들을 관리하기 위한 그러한 매커니즘을 제공한다. 특히, 적응적 컨텍스트 스위칭 모듈(120)은 모듈들(140, 150, 및/또는 160)의 바쁨을 모니터한다. 메모리 모듈들(160, 150, 160)을 위한 트랜잭션에서, 적응적 컨텍스트 스위칭 모듈(120)은 적합한 메모리 모듈을 위한 바쁨 레벨을 결정하고, 바쁨 레벨에 근거한 트랜잭션을 위해 프로젝트된 응답 시간을 예측한다. 이러한 기능들은 메모리 트랜잭션 응답 시간 예측기(124)를 사용하여 수행될 수 있다. 바쁨 레벨의 결정은 메모리 모듈을 위한 이전 응답 시간들, 컴퓨터 시스템(100)을 위한 글로벌 큐 깊이, 메모리 모듈이 액세스되기 위한 로컬 읽기 큐 깊이, 메모리 모듈로 액세스를 위한 로컬 쓰기 큐 깊이와 같은 인자들에 근거할 수 있다. 프로젝트된 응답 시간은 트랜잭션을 위해 실제 계산된 구체적인 시간이거나 특정 임계값으로 비교에 따른 바쁨 레벨을 나타내는 값일 수 있다. 프로젝트된 응답 시간 및/또는 바쁨 레벨은 메모리 트랜잭션 응답 시간 예측기(124)로부터 컨텍스트 스위치 하이퍼바이저(126)로 제공될 수 있다.
적응적 컨텍스트 스위칭 모듈(120)은 프로젝트된 응답 시간과 하나 이상의 컨텍스트 스위칭 정책들에 근거하여 컨텍스트 스위칭을 수행할 수도 있다. 컨텍스트 스위칭 정책들은 컨텍스트 스위치가 특정 트랜잭션과 메모리 모듈들(140, 150, 및/또는 160)을 위해 만들어질 수 있는지의 여부를 결정하기 위한 기준을 제공할 수 있다. 예를 들면, 컨텍스트 스위칭 정책들은 바쁨 또는 프로젝트된 응답 시간이 하나 이상의 메모리 모듈들(140,150,160)을 위한 특정 임계값을 초과할 경우, 컴퓨터 시스템(100)이 컨텍스트 스위칭을 수행하여야 하는 지를 나타낼 수 있다. 이러한 임계값은 그러한 시간 패널티에 연관된 컨텍스트 스위칭 또는 특정 바쁨 레벨을 위한 시간 패널티일 수 있다. 다른 실시예들에서, 다른 임계값들이 가능할 수 있다. 적응적 컨텍스트 스위칭 모듈(120)은 컨텍스트 스위치 정책 모듈(122)을 사용한 이러한 컨텍스트 스위칭 정책들을 관리하고 저장할 수 있다. 예를 들면, 메모리 모듈들(140, 150, 및/또는 160)을 위한 컨텍스트 스위칭 정책들은 사용자에 의한 입력, 하나 이상의 어플리케이션들에 의한 제공, 또는 컴퓨터 시스템(100)으로의 다른 입력일 수 있다. 컨텍스트 스위칭 정책 모듈(122)은 컨텍스트 스위칭 정책들을 저장, 변경, 및 저장하기 위한 컴퓨터 시스템(100)의 나머지와 인터페이스할 수 있다. 컨텍스트 스위칭 정책 모듈(122)은 컨텍스트 스위칭 정책들로부터 컨텍스트 스위치 하이퍼바이저(126)로 관련 정보를 제공할 수 있다.
컨텍스트 스위치 하이퍼바이저(126)는 컨텍스트 스위치가 수행될지의 여부를 결정한다. 컨텍스트 스위치 하이퍼바이저(126)는 이러한 결정을 만들기 위해 메모리 트랜잭션 응답 시간 예측기(124)에 의해 제공된 바쁨 레벨 및/또는 응답 시간 예측자와 컨텍스트 스위치 정책 모듈(122)에 의해 제공된 컨텍스트 스위칭 정책을 사용할 수 있다. 컨텍스트 스위칭 정책들에 근거한 것으로부터의 스위칭 기준을 갖는 바쁨 레벨 및/또는 응답 시간 예측자의 비교에 근거하여, 컨텍스트 스위칭은 적응적 컨텍스트 스위칭 모듈(120)에 의해 수행될 수 있다.
적응적 컨텍스트 스위칭 모듈(120)을 사용하면, 메모리 모듈들(140, 150, 160)을 위한 트래픽은 더 낫게 관리될 수 있다. 로우 레이턴시 메모리 모듈들(140)에 대해, 컨텍스트 스위칭 정책들은 컨텍스트 스위칭이 수행되지 않는 것을 지시할 수 있다. 그러한 정책은 이러한 모듈들(150)을 위한 레이턴시는 컨텍스트 스위칭 시간 패널티보다 크기 때문에 바람직할 수 있다. 따라서, 적응적 컨텍스트 스위칭 모듈(120)은 이러한 모듈(150)을 위한 트랜잭션들에 대한 컨텍스트 스위칭을 수행할 수 있다. 메모리 모듈들(140, 150)에 액세스하는 트랜잭션들에 대해, 바쁨 및 예첵된 응답 시간은 레이턴시들과 컨텍스트 스위칭 시간 패널티 사이에 고정된 관계로 인해 결정되지 않을 수 있다. 적응적 컨텍스트 스위칭 모듈(120)은 일반적인 방법으로 모듈들(140, 150)을 다룰 수 있다.
적응적 컨텍스트 스위칭 모듈(120)은 더 복잡한 정책들의 사용과 바쁨의 결정들을 통해 파악하기 위한 메모리 모듈(들)(160) 내 비대칭을 허용할 수도 있다. 상술한 바와 같이, MRAM과 같은 하이브리드 메모리 모듈(들)(160)에서, 쓰기 동작들은 읽기 동작들보다 상당히 더 많은 레이턴시를 갖는다. MRAM 모듈(들)이 하이브리드 레이턴시 메모리 모듈(들)(160) 내에 있는 실시예들에서, 바쁨 및 프로젝트된 응답 시간은 읽기 및 쓰기 트랜잭션들을 위한 개별적으로 결정될 수 있다. 컨텍스트 스위칭 정책 모듈(122)에 의해 관리되는 컨텍스트 스위칭 정책들은 읽기 및 쓰기 동작들을 위해 다른 임계값들을 가질 수 있다. 따라서, 적응적 컨텍스트 스위치 하이퍼바이저(126)는 동일한 조건들에서 수행되는 동작들이라 할지라도 읽기 동작의 짧은 레이턴시를 위한 것보다 쓰기 동작의 더 긴 레이턴시의 목적들을 위해 바쁘기 위한 모듈(160)을 결정한다. 이러한 경우, 컨텍스트 스위칭은 쓰기 동작을 위해 수행되며, 읽기 트랜잭션을 위한 것이 아니다. 따라서, 더 복잡한 컨텍스트 스위칭 정책들과 비대칭 메모리 모듈들이 수용될 수 있다. 그렇지 않으면, 다른 메커니즘들은 메모리 모듈(들)(160) 내 비대칭들을 설명하기 위해 사용될 수 있다. 적응적 컨텍스트 스위칭 모듈(120)을 사용함에 따라서 컴퓨터 시스템(100)의 성능은 향상될 수 있다.
도 3은 본 발명의 실시예에 따른 메모리 모듈을 위한 바쁨 레벨을 결정하고, 컨텍스트 스위칭을 선택적으로 수행하기 위한 방법을 도시한 순서도이다.
도 3을 참조하면, 메모리 모듈(140, 150, 및/또는 160)과 같은 메모리 모듈을 위한 트랜잭션들을 관리하기 위한 방법(200)의 실시예이다. 간단히, 일부 단계들은 생략되거나 결합될 수 있다. 방법(200)은 도 1 내지 2의 컴퓨터 시스템(100)과 적응적 컨텍스트 스위칭 모듈(120)의 컨텍스트로 기술된다. 그러나, 방법(200)은 다른 컴퓨터 시스템들을 위해 사용될 수도 있다. 상술한 바와 같이, 바쁨 레벨은 모듈들(140, 150)이 액세스될 때, 로우 레이턴시 메모리 모듈(들)(140)과 하이 레이턴시 메모리 모듈(들)(150)을 위해 결정될 수 있거나 결정될 수 없다. 방법(200)은 메모리 모듈(들)(160)의 컨텍스트로 기술된다.
도 1 내지 도 3을 참조하면, 트랜잭션에 의해 액세스되는 메모리 모듈(160)의 바쁨은 202단계를 통해 메모리 응답 시간 예측기(124)에 의해 결정되는 트랜잭션에 의해 액세스될 수 있다. 일부 실시예들에서 202단계는 메모리 모듈(160)에 관련된 하나 이상의 큐들의 깊이들로 결정되는 단계를 포함할 수 있다. 예를 들면, 컴퓨터 시스템(100)을 위한 글로벌 큐의 깊이, 메모리 모듈(160)을 위한 로컬 큐(들)이 액세스되거나 딜레이의 다른 관련된 소스일 수 있다. 바쁨은 정상화된 글로벌 큐 깊이, 정상화된 로컬 읽기 큐 깊이, 및 정상화된 쓰기 큐 깊이의 합일 수 있다. 각 깊이는 가중될 수도 있다. 따라서, 바쁨은 그것의 가중치를 곱한 글로벌 큐 깊이, 그것의 가중치를 곱한 로컬 읽기 큐 깊이, 및 그것의 가중치를 곱한 로컬 쓰기 큐 깊이의 합일 수 있다. 202단계에서, 바쁨의 결정은 예를 들면, 히스토그램이 저장된 하이브리드 메모리 모듈(160)을 위한 이전 응답 시간들의 분석 단계를 포함한다. 그러한 실시예에서, 바쁨의 결정과 프로젝트된 응답 시간은 소프트웨어로 결정된다. 다른 실시예들에서, 바쁨의 결정은 하드웨어를 통해 만들어질 수 있다.
204단계를 통해, 프로젝트된 응답 시간은 바쁨 레벨에 근거하여 예측된다. 일부 실시예들에서, 204단계는 실제 응답 시간들로부터 보간하는 단계를 포함할 수 있다. 그러한 보간(interpolation)은 202단계 내에서 결정되는 바쁨 레벨에 병합될 수 있다. 다른 실시예들에서, 프로젝트된 응답 시간은 레이턴시, 아이들(idle)인 레이턴시, 또는 모듈을 위한 다른 미리 결정된 트랜잭션 시간으로부터 결정될 수 있다. 도 1과 도 2의 하이브리드/비대칭 모듈들(160)에서, 프로젝트된 응답 시간의 예측은 읽기 액세스 레이턴시들과 쓰기 트랜잭션 레이턴시의 차이로 설명될 수 있다. 예를 들면, 읽기 트랜잭션에서, 컴퓨터 시스템이 정상화된 레이턴시에 의해 곱해진 바쁨(정상화된)에 아이들 합(idle)일 때, 프로젝트된 응답 시간은 읽기 레이턴시일 수 있다. 유사하게, 쓰기 트랜잭션에서, 컴퓨터 시스템이 정상화된 레이턴시에에 의해 곱해진 바쁨(정상화된)에 아이들 합일 때, 프로젝트된 응답 시간은 쓰기 레이턴시일 수 있다. 다른 실시예들에서, 프로젝트된 응답 시간은 다른 방법 내의 바쁨에 근거하여 계산될 수 있다.
206단계에서, 컨텍스트 스위칭은 바쁨 레벨, 프로젝트된 응답 시간, 및 컨텍스트 스위칭 정책들에 근거한 트랜잭션을 위해 선택적으로 수행될 수 있다. 예를 들면, 바쁨 레벨에 근거하여 계산된 프로젝트된 응답 시간은 트랜잭션(읽기/쓰기)의 타입과 메모리 모듈(160)의 타입을 위한 임계값들과 비교될 수 있다. 프로젝트된 응답 시간이 하나 이상의 임계값들을 초과하면, 컨텍스트 스위치 하이퍼바이저(126)는 컨텍스트 스위칭이 수행되는 것을 결정할 수 있다. 이에 따라, 적응적 컨텍스트 스위칭 모듈(120)은 컨텍스트 스위칭이 수행되고, 컴퓨터 시스템(100)이 컨텍스트 스위칭을 수행하는 것을 지시할 수 있다.
방법(200)을 사용하면, 적응적 컨텍스트 스위칭은 시스템(100)을 위해 수행될 수 있다. 하이브리드 메모리 모듈(들)(160)의 레이턴시는 방법(200)과 적응적 컨텍스트 스위칭 모듈(120)을 사용하여 설명될 수 있다. 그 결과, 컴퓨터 시스템(100) 내 메모리 트랜잭션들은 더 효율적으로 관리될 수 있다. 일부 실시예들에서, 프로젝트된 응답 시간은 레이턴시, 아이들 레이턴시, 또는 모듈을 위한 다른 미리 결정된 트랜잭션 시간들로부터 결정될 수 있다. 비대칭 모듈들(160)에서, 프로젝트된 응답 시간의 예측은 읽기 액세스 레이턴시들과 쓰기 트랜잭션 레이턴시들의 차이로 설명될 수 있다. 예를 들면, 읽기 트랜잭션에서, 컴퓨터 시스템이 정규화된 레이턴시에 의해 곱해진 바쁨(정규화된)의 아이들 합일 때, 프로젝트된 응답 시간은 읽기 레이턴시일 수 있다. 유사하게, 쓰기 트랜잭션에서, 컴퓨터 시스템이 정규화된 레인턴시에 의해 곱해진 바쁨(정규화된)의 아이들 합일 때, 프로젝트된 응답 시간은 쓰기 레이턴시일 수 있다. 다른 실시예들에서, 프로젝트된 응답 시간은 다른 방법에서 바쁨에 근거하여 계산될 수 있다.
도 4는 본 발명의 실시예에 따른 바쁨 레벨을 위한 하나의 메커니즘을 도시한 도면이다.
도 4를 참조하면, 도 3에 도시된 방법(200) 내 바쁨 및/또는 프로젝트된 응답 시간의 결정에 사용될 수 있는 히스토그램(170)을 예시적으로 도시한다. 도 4에서 참조 번호가 부여된 하나만이 막대들(172)에 의해 나타내고, 다양한 시간 주기들에서 도시된다. 특정 막대(172)의 높이는 특정 응답 시간 또는 큐 깊이에 따른다. 도 4에 보여질 수 있는 바와 같이, 각 막대(172)는 임계값들(TH1, TH2)에 대한 막대 높이의 비교에 의존하는 바쁨 레벨에 따를 수 있다. TH1 아래에서, 특정한 트랜잭션은 바쁘지 않은 컴퓨터 시스템을 위한 것일 수 있다. TH2 위에서, 트랜잭션은 바쁜 컴퓨터 시스템(100)을 위한 것일 수 있다. TH1과 TH2 사이에서, 일부 다른 정책들이 홀드될 수 있다. 예를 들면, 메모리 모듈들(140, 150,160)의 나머지가 바쁘지 않으나, 다른것이 수행될 수 있으면, 컨텍스트 스위칭은 여전히 수행될 수 있다. 일부 실시예들에서 히스토그램(170)을 사용한 바쁨의 결정은 하나 이상의 이전 시간들(172)로부터 응답 시간 또는 큐 깊이에 근거하여 바쁨 레벨을 평균하거나 그렇지 않으면 보간하는 단계를 포함한다. 따라서, 히스토그램(170)은 도 3의 방법(200) 내 바쁨 레벨 또는 예측된 응답 시간의 결정에 사용될 수 있다. 그러므로, 히스토그램(170)은 방법(200)의 구현을 개선할 수 있다.
도 5는 본 발명의 다른 실시예에 따른 하드웨어 액세스된 바쁨을 이용하는 컨텍스트 스위치 모듈을 결합한 컴퓨팅 시스템을 도시한 블록도이다.
도 5를 참조하면, 레지스터의 쿼링(querying)에 의해 결정될 수 있는 바쁨인 컴퓨터 시스템(100’)을 도시한다. 컴퓨터 시스템(100’)은 컴퓨터 시스템(100)과 유사하다. 따라서, 유사한 구성 요소들은 유사한 참조 번호를 갖는다. 컴퓨터 시스템(100’)은 듀얼 인라인 메모리 모듈(DIMM: dual in-line memory module)일 수 있는 메모리 모듈들(140, 150, 160)의 액세스들의 중재를 하는 메모리 컨트롤러(170)를 포함할 수도 있다. 도 5에서, 각 메모리 모듈은 단일 모듈 또는 다중 모듈을 나타낼 수 있다. 컴퓨터 시스템(100’)에서, 메모리 컨트롤러(170)는 바쁨을 나타내는 값을 저장하는 레지스터(172)를 포함한다. 바쁨은 상술한 바와 같이 계산될 수 있고, 입상도(granularity) 형태의 원하는 레벨로 바쁨을 나타내는 레지스터에 저장되는 숫자값일 수 있다.
도 5의 시스템(100’)이 도 3의 방법(200)으로 구현될 때, 202단계의 바쁨 레벨의 결정은 메모리 컨트롤러(170)의 레지스터(172)로 쿼링하는 단계를 포함할 수 있다. 204단계와 206단계의 예측된 응답 시간과 적응적 컨텍스트 스위칭은 컨텍스트 스위칭 모듈(120’)을 사용하여 만들어질 수 있다. 하이브리드 메모리 모듈(들)(160)의 레이턴시는 도 3의 방법(200), 도 5의 메모리 컨트롤러(170), 및 도 5의 적응적 컨텍스트 스위치 모듈(120)을 사용하여 설명될 수 있다. 따라서, 컨텍스트 스위칭은 새로운 메모리 모듈(들)(160)에 적용될 수 있다. 바쁨의 결정은 레지스터(172)에 의해 만들어질 수 있기 때문에, 컴퓨터 시스템(100’)에 의한 방법(200)의 구현은 더 효율적일 수 있다. 그 결과, 컴퓨터 시스템(100’) 내 메모리 트랜잭션들은 더 효율적으로 관리될 수 있다.
도 6은 본 발명의 다른 실시예에 따른 하드웨어 액세스된 바쁨을 이용하는 컨텍스트 스위칭 모듈을 결합한 컴퓨팅 시스템을 도시한 블록도이다.
도 6을 참조하면, 레지스터의 쿼링에 의해 결정될 수 있는 바쁨에 대한 컴퓨터 시스템(100”)의 다른 실시예이다. 컴퓨터 시스템(100”)은 컴퓨터 시스템들(100, 100’)과 유사하다. 그러므로, 유사한 구성 요소들은 유사한 참조 번호를 갖는다. 컴퓨터 시스템(100”)은 DIMM일 수 있는 메모리 모듈들(140, 150, 160)의 액세스들의 중재를 하는 메모리 컨트롤러(170’)를 포함할 수도 있다. 도 6에서, 각 메모리 모듈은 단일 모듈 또는 다중 모듈을 나타낼 수 있다. 컴퓨터 시스템(100”)은 메모리 컨트롤러(170’)와 유사한 메모리 컨트롤러(170)와 메모리 모듈들(140, 150, 160) 각각과 유사한 메모리 모듈들(140’, 150’, 160’)을 포함한다. 각 메모리 모듈들(140’, 150’, 160’)은 바쁨 레지스터(142, 152, 162) 각각을 포함한다. 바쁨 레지스터들(142, 152, 162)은 입상도(granularity) 형태의 원하는 레벨로 특정 모듈(140’, 150’, 160’) 각각의 바쁨을 나타내는 숫자 값을 저장한다. 일부 그러한 실시예들에서, 단지 하이브리드 메모리 모듈(들)(160’)은 그러한 레지스터를 포함한다. 도 6에 그러한 실시예들을 도시한다. 다른 실시예들에서 메모리 컨트롤러(170’)는 도 5에 도시된 레지스터(172)와 유사한 레지스터를 포함할 수 있다. 그러한 실시예들에서, 메모리 컨트롤러(170’)와 메모리 모듈(들)(140’, 150’, 160’) 모두는 바쁨 레지스터(172, 142, 152, 162)를 각각 포함할 수 있다.
도 6의 시스템(100”)은 도 3의 방법(200)으로 구현되고, 202단계의 바쁨 레벨의 결정은 액세스되는 메모리 모듈(140’, 150’, 또는 160’) 각각의 적합한 레지스터(142, 152, 162)로의 쿼링하는 단계를 포함한다. 204단계와 206단계의 예측된 응답 시간과 적응적 컨텍스트 스위칭은 컨텍스트 스위칭 모듈(120”)을 사용하여 만들어질 수 있다. 하이브리드 메모리 모듈(들)(160’)의 레이턴시는 도 3의 방법(200)과 도 6의 적응적 컨텍스트 스위치 모듈(120”)을 사용하여 설명될 수 있다. 따라서, 컨텍스트 스위칭은 새로운 메모리 모듈(들)(160’)에 적용될 수 있다. 바쁨의 결정은 레지스터(142, 152, 162)에 의해 만들어질 수 있기 때문에, 컴퓨터 시스템(100”)에 의한 방법(200)의 구현은 더 효율적일 수 있다. 그 결과, 컴퓨터 시스템(100”) 내 메모리 트랜잭션들은 더 효율적으로 관리될 수 있다.
도 7은 본 발명의 다른 실시예에 따른 적응적 컨텍스트 스위칭을 수행하기 위한 방법을 도시한 순서도이다.
도 7을 참조하면, 메모리 모듈(140, 150, 및/또는 160)과 같은 메모리 모듈을 위한 트랜잭션들을 관리하기 위한 방법(250)의 예시적인 실시예를 도시한 순서도이다. 간단히, 일부 단계들은 생략되거나 결합될 수 있다. 방법(250)은 컴퓨터 시스템(100)과 도 1과 도 2의 적응적 컨텍스트 스위칭 모듈(120)로 기술될 수 있다. 그러나, 방법(250)은 다른 컴퓨터 시스템들에 사용될 수 있다.
도 1, 도 2, 및 도 7을 참조하면, 252단계를 통해, 인커밍 트랜잭션이 메모리 모듈(160)로 액세스되는 지의 여부를 결정한다. 만약 그렇지 않다면, 264단계를 통해, 액세스되는 모듈들(150)과 같은 하이 레이턴시 모듈인지를 결정한다. 그렇다면, 266단계를 통해, 컨텍스트 스위칭이 수행된다. 그렇지 않으면, 268단계에서 컨텍스트 스위칭을 수행하지 않는다.
하이브리드 메모리 모듈(160)이 트랜잭션의 서브젝트(subject)이면, 254단계에서 모듈을 위한 바쁨(160)이 입증된다. 위에서 논의된 바와 같은, 바쁨은 하이브리드 메모리 모듈(160)을 위한 글로벌 및/또는 로컬 큐 깊이들에 근거하여 결정될 수 있다. 따라서, 256, 258, 260단계들은 응답 시간에 영향을 줄 수 있는 성능의 다양한 관점들을 쿼리(query)할 수 있다. 로컬 읽기 및/또는 쓰기 큐 레벨들은 256단계에서 결정될 수 있다. 일부 실시예들에서, 256단계는 메모리 컨트롤러(170) 및/또는 모듈(160/160’) 내 레지스터에 적합한 읽기 단계를 포함할 수 있다. 258단계를 통해, 컨텍스트 스위칭 패널티와 같은 임계값보다 큰 레이턴시를 갖는 이슈에서 트랜잭션인지의 여부를 결정한다. 예를 들면, MRAM 모듈에 대해, 258단계는 프로세스되는 쓰기 트랜잭션의 여부를 결정하는 단계를 포함할 수 있다. 그러한 모듈들에 대해, 쓰기 트랜잭션은 하이브리드 메모리 모듈(160)이 아이들일 때, 50마이크로초 또는 그보다 더한 것과 유사한 긴 레이턴시를 갖는다. 따라서, 쓰기 레이턴시는 컨텍스트 스위칭 시간 패널티보다 더 크다. 그러한 쓰기 트랜잭션들은 컨텍스트 스위칭 시간 패널티보다 적은 레이턴시를 가질 수 있는 읽기 트랜잭션들보다 다르게 다루어져야 한다. 그것은 또한 260단계를 통해, 백그라운드 프로세스들에 따라 하이브리드 메모리 모듈(160)이 바쁜지의 여부를 결정할 수도 있다. 260단계는 글로벌 큐 레벨들을 결정하는 단계와 유사할 수 있다.
따라서, 하이브리드 메모리 모듈(160)과 관련된 바쁨은 254, 256, 258, 260단계를 통해 결정된다. 또한, 바쁨의 레벨을 나타내는 값은 256, 258, 260단계로부터 계산될 수 있다. 메모리 모듈(160)이 바쁘지 않은 결정 내 결과들의 모든 지시자들은 256, 258, 260단계에서 결정되면, 컨텍스트 스위칭이 수행되지 않는다. 달리 말하면, 적은 트랜잭션들이 펜딩이면, 트랜잭션 레이턴시는 임계값(예를 들면, 트랜잭션은 읽기 동작)보다 적고, 모듈이 백그라운드 프로세스들에 따라 바쁘지 않으면, 268단계에서 컨텍스트 스위칭은 수행되지 않는다.
임의의 256, 258, 260 단계가 모듈(260)이 바빠야하는 것을 지시하면, 262단계를 수행한다. 그것은 262단계를 통해, 프로젝트된 응답 시간이 특정 임계값보다 큰 지의 여부를 결정한다. 262단계에서, 프로젝트된 응답 시간은 바쁨 레벨에 근거하여 계산될 수 있다. 따라서, 262단계의 적어도 일부는 204단계의 일부와 유사하다. 262단계는 메모리 모듈(106)을 위한 트랜잭션의 타입을 위한 이전 응답 시간의 히스토그램으로부터의 보간하는 단계, 레이턴시들로부터의 레이턴시를 결정하는 단계, 또는 그렇지 않으면, 프로젝트된 응답 시간을 계산하는 단계를 포함할 수 있다. 262단계에서, 임계값들에 관련된 프로젝트된 응답 시간의 비교를 포함할 수도 있다. 일부 실시예들에서, 임계값은 컨텍스트 스위칭 패널티일 수 있다. 일부 다른 실시예들에서, 다른 임계값이 사용될 수도 있다.
임계값을 초과하지 않으면, 268단계에서 트랜잭션을 위한 컨텍스트 스위칭이 수행되지 않는다. 대조적으로, 프로젝트된 응답 시간이 임계값보다 크면, 266단계에서 컨텍스트 스위칭이 수행된다.
방법(250)을 사용하면, 적응적 컨텍스트 스위칭은 수행될 수 있다. 도 1, 도 2, 도 5, 및 도 6의 하이브리드 메모리 모듈(들)(160, 160’)의 레이턴시는 도 1, 도 2, 도 5 및 도 6의 적응적 컨텍스트 스위칭 모듈(120, 120’, 120”)과 방법(250)을 사용하여 설명될 수 있다. 컨텍스트 스위칭은 새로운 메모리 모듈(들)(160/160’)에 적용될 수 있다. 그 결과, 도 1, 도 2, 및 도 5의 컴퓨터 시스템(100, 100’, 및/또는 100”) 내 메모리 트랜잭션들은 더 효율적으로 관리될 수 있다.
하나 이상의 메모리 모듈들을 위한 트랜잭션들을 관리하기 위한 방법 및 시스템이 개시되었다. 본 발명은 도시된 실시예들에 따라 기술되고, 그 실시예들로 변화들일 수 있고, 본 발명의 사상과 범위 내일 수 있는 임의의 변화들일 수 있다. 따라서, 많은 수정들이 첨부된 특허청구범위의 사상과 범위로부터 벗어나지 않도록 기술분야의 당업자에 의해 만들어질 수 있다.
100, 100': 컴퓨터 시스템 110: 운영 체제
112: 어플리케이션들
120, 120': 적응적 컨텍스트 스위칭 모듈
140, 140': 로우 레이턴시 메모리 모듈
150, 150': 하이 레이턴시 메모리 모듈
160, 160': 하이브리드 레이턴시 메모리 모듈
142, 152, 162: 바쁨 레지스터들
170: 메모리 컨트롤러
122: 컨텍스트 스위칭 정책 모듈
124: 메모리 트랜잭션 응답 시간 예측기
126: 컨텍스트 스위치 하이퍼바이저

Claims (10)

  1. 컴퓨터 시스템 내 복수의 레이턴시들을 갖는 복수의 메모리 모듈들의 메모리 모듈을 위한 트랜잭션을 관리하는 방법에 있어서,
    상기 트랜잭션을 위한 상기 메모리 모듈의 바쁨 레벨을 결정하는 단계; 및
    상기 바쁨 레벨에 근거하여 상기 트랜잭션의 프로젝트된 응답 시간을 예측하는 단계를 포함하되,
    상기 바쁨 레벨을 결정하는 단계는, 적어도 하나의 큐 깊이를 결정하는 단계를 포함하고,
    상기 적어도 하나의 큐 깊이는 상기 복수의 메모리 모듈들에 대한 적어도 하나의 글로벌 요청 큐 깊이 및 적어도 하나의 로컬 메모리 큐 깊이를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 바쁨 레벨을 결정하는 단계는, 상기 메모리 모듈의 상기 바쁨 레벨에 대한 값을 저장하는 적어도 하나의 레지스터로 쿼리하는 단계를 포함하고,
    상기 적어도 하나의 레지스터는 적어도 하나의 메모리 모듈과 상기 적어도 하나의 메모리 제어기 내에 상주하는 방법.
  3. 제 1 항에 있어서,
    상기 프로젝트된 응답 시간과 적어도 하나의 컨텍스트 스위칭 정책에 근거하여 상기 트랜잭션을 위한 컨텍스트 스위칭을 수행할지의 여부를 결정하는 단계; 및
    상기 컨텍스트 스위칭을 수행할지의 여부를 결정하는 단계가 상기 컨텍스트 스위칭이 수행되는 것으로 나타나는 경우, 상기 컨텍스트 스위칭을 수행하는 단계를 더 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 프로젝트된 응답 시간을 예측하는 단계는, 상기 바쁨 레벨이 임계값을 초과하는지의 여부를 결정하는 단계를 더 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 바쁨 레벨을 결정하는 단계는, 복수의 기록된 응답들을 분석하는 단계, 상기 바쁨 레벨을 지시하는 적어도 하나의 값을 저장하는 레지스터를 읽는 단계 및 상기 바쁨 레벨에 근거하여 수치로 프로젝트된 응답 시간을 계산하는 단계 중 적어도 하나를 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 메모리 모듈의 레이턴시가 컨텍스트 스위칭을 위한 시간 패널티보다 항상 작지 않고, 항상 크지 않은 경우, 적응적 컨텍스트 스위칭을 수행하는 단계를 더 포함하고,
    상기 적응적 컨텍스트 스위칭을 수행하는 단계는, 상기 바쁨 레벨을 결정하는 단계 및 상기 프로젝트된 응답 시간을 예측하는 단계를 포함하고,
    상기 적응적 컨텍스트 스위칭을 수행하는 단계는, 상기 바쁨 레벨을 위한 상기 프로젝트된 응답 시간이 상기 시간 패널티보다 큰 경우, 상기 트랜잭션을 위한 컨텍스트 스위칭을 수행하는 단계를 더 포함하는 방법.
  7. 호스트 시스템과 연결되고, 복수의 특징적인 액세스 레이턴시들을 가지는 복수의 메모리 모듈들; 및
    트랜잭션을 위한 상기 복수의 메모리 모듈들의 메모리 모듈의 바쁨 레벨을 결정하고, 상기 트랜잭션의 프로젝트된 응답 시간을 예측하는 메모리 트랜잭션 응답 시간 예측기를 포함하는 적응적 컨텍스트 스위칭 모듈을 포함하되,
    상기 복수의 메모리 모듈들 중 적어도 하나는 하드웨어 메모리 모듈이고,
    상기 바쁨 레벨을 결정하는 상기 메모리 트랜잭션 응답 시간 예측기는 적어도 하나의 큐 깊이를 결정하고,
    상기 적어도 하나의 큐 깊이는 상기 복수의 메모리 모듈들에 대한 적어도 하나의 글로벌 요청 큐 깊이 및 적어도 하나의 로컬 메모리 큐 깊이를 포함하는 컴퓨팅 시스템.
  8. 제 7 항에 있어서,
    상기 적응적 컨텍스트 스위칭 모듈은 상기 프로젝트된 응답 시간에 근거하여 컨텍스트 스위칭을 수행하는 컴퓨팅 시스템.
  9. 제 7 항에 있어서,
    상기 적응적 컨텍스트 스위칭 모듈은:
    상기 메모리 트랜잭션 응답 시간 예측기로부터의 프로젝트된 응답 시간에 근거하여 컨텍스트 스위칭 수행 여부를 결정하는 컨텍스트 스위치 하이퍼바이저; 및
    상기 복수의 메모리 모듈들에 대한 복수의 컨텍스트 스위칭 정책들을 수신 및 저장하고, 상기 컨텍스트 스위치 하이퍼바이저로 상기 메모리 모듈에 대한 적어도 하나의 컨텍스트 스위칭 정책을 제공하는 컨텍스트 스위칭 정책 모듈을 더 포함하는 컴퓨팅 시스템.
  10. 호스트 시스템과 연결되고, 복수의 특징적인 액세스 레이턴시들을 가지는 복수의 메모리 모듈들; 및
    상기 복수의 메모리 모듈들을 위한 적어도 하나의 메모리 제어기를 포함하되,
    상기 복수의 메모리 모듈들 중 적어도 하나는 하드웨어 메모리 모듈이고,
    상기 복수의 메모리 모듈 중 적어도 하나의 메모리 모듈 및 상기 적어도 하나의 메모리 제어기는 상기 메모리 모듈의 바쁨 레벨을 나타내는 적어도 하나의 값을 저장하는 바쁨 레지스터를 포함하고,
    상기 바쁨 레벨은 상기 메모리 모듈에 대한 트랜잭션의 프로젝트된 응답 시간을 예측하기 위하여 사용되고,
    상기 바쁨 레벨은 적어도 하나의 큐 깊이에 근거하고,
    상기 적어도 하나의 큐 깊이는 상기 복수의 메모리 모듈들에 대한 적어도 하나의 글로벌 요청 큐 깊이 및 적어도 하나의 로컬 메모리 큐 깊이를 포함하는 컴퓨팅 시스템.
KR1020150079364A 2014-06-10 2015-06-04 관련된 응용들에 상호 참조하는 적응적 컨텍스트 스위칭을 수행하는 방법 및 시스템 KR102190688B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462010272P 2014-06-10 2014-06-10
US14/636,484 US9996390B2 (en) 2014-06-10 2015-03-03 Method and system for performing adaptive context switching
US14/636,484 2015-03-03
US62/010,272 2020-04-15

Publications (2)

Publication Number Publication Date
KR20150141880A KR20150141880A (ko) 2015-12-21
KR102190688B1 true KR102190688B1 (ko) 2020-12-14

Family

ID=54769643

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150079364A KR102190688B1 (ko) 2014-06-10 2015-06-04 관련된 응용들에 상호 참조하는 적응적 컨텍스트 스위칭을 수행하는 방법 및 시스템

Country Status (2)

Country Link
US (1) US9996390B2 (ko)
KR (1) KR102190688B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798582B2 (en) * 2015-10-22 2017-10-24 International Business Machines Corporation Low latency scheduling on simultaneous multi-threading cores
US10838721B1 (en) * 2016-03-31 2020-11-17 EMC IP Holding Company LLC Adaptive thread processing of IO requests

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130111107A1 (en) 2011-11-01 2013-05-02 Jichuan Chang Tier identification (tid) for tiered memory characteristics
US20140022266A1 (en) 2012-07-20 2014-01-23 Qualcomm Incorporated Deferred preemption techniques for scheduling graphics processing unit command streams
US8762609B1 (en) 2010-11-03 2014-06-24 Pmc-Sierra Us, Inc. System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
US20140281149A1 (en) 2013-03-15 2014-09-18 Micron Technology, Inc. Apparatuses and methods for adaptive control of memory
US20140365753A1 (en) 2013-06-10 2014-12-11 Via Technologies, Inc. Selective accumulation and use of predicting unit history

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061774A (en) 1997-05-23 2000-05-09 Compaq Computer Corporation Limited virtual address aliasing and fast context switching with multi-set virtual cache without backmaps
US6577600B1 (en) * 1999-01-11 2003-06-10 Hewlett-Packard Development Company, L.P. Cost calculation in load balancing switch protocols
US7191319B1 (en) 2000-08-02 2007-03-13 Hewlett-Packard Development Company, L.P. System and method for preloading cache memory in response to an occurrence of a context switch
US6647456B1 (en) 2001-02-23 2003-11-11 Nvidia Corporation High bandwidth-low latency memory controller
US7954102B2 (en) 2002-11-13 2011-05-31 Fujitsu Limited Scheduling method in multithreading processor, and multithreading processor
US8230423B2 (en) 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
US7472256B1 (en) * 2005-04-12 2008-12-30 Sun Microsystems, Inc. Software value prediction using pendency records of predicted prefetch values
GB0516474D0 (en) 2005-08-10 2005-09-14 Symbian Software Ltd Pre-emptible context switching in a computing device
US7707379B2 (en) * 2006-07-13 2010-04-27 International Business Machines Corporation Dynamic latency map for memory optimization
US8230154B2 (en) 2007-01-19 2012-07-24 Spansion Llc Fully associative banking for memory
US20090125703A1 (en) 2007-11-09 2009-05-14 Mejdrich Eric O Context Switching on a Network On Chip
US8140825B2 (en) 2008-08-05 2012-03-20 International Business Machines Corporation Systems and methods for selectively closing pages in a memory
KR101014028B1 (ko) 2008-11-26 2011-02-14 한양대학교 산학협력단 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치
US8572622B2 (en) * 2009-12-30 2013-10-29 International Business Machines Corporation Reducing queue synchronization of multiple work items in a system with high memory latency between processing nodes
US8908774B2 (en) * 2010-02-11 2014-12-09 Mediatek Inc. Method and video receiving system for adaptively decoding embedded video bitstream
US20110199899A1 (en) * 2010-02-16 2011-08-18 Lime Brokerage Holding Llc Rate-Adaptive Bundling of Data in a Packetized Communication System
DE112010005821T5 (de) * 2010-08-23 2013-06-06 Empire Technology Development Llc Kontextwechsel
US9299121B2 (en) 2010-12-15 2016-03-29 Advanced Micro Devices, Inc. Preemptive context switching
US8537606B2 (en) * 2011-01-21 2013-09-17 Qualcomm Incorporated Read sensing circuit and method with equalization timing
US9354813B1 (en) * 2012-12-28 2016-05-31 Emc Corporation Data storage system modeling
US20150277906A1 (en) * 2014-03-31 2015-10-01 Raytheon Bbn Technologies Corp. Instruction set for arbitrary control flow in arbitrary waveform generation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762609B1 (en) 2010-11-03 2014-06-24 Pmc-Sierra Us, Inc. System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
US20130111107A1 (en) 2011-11-01 2013-05-02 Jichuan Chang Tier identification (tid) for tiered memory characteristics
US20140022266A1 (en) 2012-07-20 2014-01-23 Qualcomm Incorporated Deferred preemption techniques for scheduling graphics processing unit command streams
US20140281149A1 (en) 2013-03-15 2014-09-18 Micron Technology, Inc. Apparatuses and methods for adaptive control of memory
US20140365753A1 (en) 2013-06-10 2014-12-11 Via Technologies, Inc. Selective accumulation and use of predicting unit history

Also Published As

Publication number Publication date
KR20150141880A (ko) 2015-12-21
US9996390B2 (en) 2018-06-12
US20150355936A1 (en) 2015-12-10

Similar Documents

Publication Publication Date Title
JP4866646B2 (ja) メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム
US20150206569A1 (en) Dynamic temperature adjustments in spin transfer torque magnetoresistive random-access memory (stt-mram)
US10089014B2 (en) Memory-sampling based migrating page cache
US9742869B2 (en) Approach to adaptive allocation of shared resources in computer systems
KR102130578B1 (ko) 반도체 장치
US20150161043A1 (en) Storage control apparatus and storage control method
US9952982B2 (en) Invoking demote threads on processors to demote tracks indicated in demote ready lists from a cache when a number of free cache segments in the cache is below a free cache segment threshold
US11042312B2 (en) DRAM bank activation management
US8856442B2 (en) Method for volume management
CN104461735A (zh) 一种虚拟化场景下分配cpu资源的方法和装置
US20190004968A1 (en) Cache management method, storage system and computer program product
KR20170002866A (ko) 분산 환경에서 사용자 애플리케이션의 액세스 특성에 따른 적응형 캐시 관리 방법
US20170147493A1 (en) Prefetch confidence and phase prediction for improving prefetch performance in bandwidth constrained scenarios
US20220197563A1 (en) Qos traffic class latency model for just-in-time (jit) schedulers
CN104460941A (zh) 一种降低主存存储器满负荷运行功耗的方法
EP3462327A2 (en) Systems, methods and apparatus for memory access and scheduling
US9817583B2 (en) Storage system and method for allocating virtual volumes based on access frequency
KR102190688B1 (ko) 관련된 응용들에 상호 참조하는 적응적 컨텍스트 스위칭을 수행하는 방법 및 시스템
KR102351200B1 (ko) 메모리 요청 정보에 기반하여 캐시 메모리의 클럭 속도/전압을 설정하는 장치 및 방법
JP2021526257A (ja) マルチカーネル波面スケジューラ
JP3935873B2 (ja) プリフェッチ・バッファを用いたメモリ電力管理
US20180203875A1 (en) Method for extending and shrinking volume for distributed file system based on torus network and apparatus using the same
KR101866681B1 (ko) 페이지 크기를 동적으로 제어하는 페이지 제어 방법 및 장치
JP6919277B2 (ja) ストレージシステム、ストレージ管理装置、ストレージ管理方法、及びプログラム
US11487582B2 (en) Information processing apparatus and computer-readable recording medium having stored therein process allocation determining program

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant