KR102649324B1 - 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법 - Google Patents

적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법 Download PDF

Info

Publication number
KR102649324B1
KR102649324B1 KR1020160061337A KR20160061337A KR102649324B1 KR 102649324 B1 KR102649324 B1 KR 102649324B1 KR 1020160061337 A KR1020160061337 A KR 1020160061337A KR 20160061337 A KR20160061337 A KR 20160061337A KR 102649324 B1 KR102649324 B1 KR 102649324B1
Authority
KR
South Korea
Prior art keywords
storage device
interrupt control
host
interrupt
computer system
Prior art date
Application number
KR1020160061337A
Other languages
English (en)
Other versions
KR20170131738A (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 KR1020160061337A priority Critical patent/KR102649324B1/ko
Priority to CN201710298925.2A priority patent/CN107402894B/zh
Priority to US15/598,850 priority patent/US10318174B2/en
Publication of KR20170131738A publication Critical patent/KR20170131738A/ko
Priority to US16/415,068 priority patent/US11023137B2/en
Priority to US17/307,098 priority patent/US11543968B2/en
Application granted granted Critical
Publication of KR102649324B1 publication Critical patent/KR102649324B1/ko

Links

Images

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • 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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)

Abstract

본 발명의 실시 예에 따른 컴퓨터 시스템은 호스트와 저장 장치를 포함한다. 상기 호스트는 입출력 요청(IO request)을 제공한다. 상기 저장 장치는 상기 호스트로부터 입출력 요청을 입력받고, 입출력 요청을 완료한 다음에 입출력 완료(IO completion)를 알리는 인터럽트를 상기 호스트로 제공한다. 상기 호스트는 지연된 IO 수를 이용하여 상기 저장 장치의 인터럽트 발생 수를 조절한다. 본 발명의 실시 예에 따른 컴퓨터 시스템은 CPU의 부하 상태 또는 지연된 IO의 수를 기초로, 저장 장치의 인터럽트 발생을 적응적으로 제어할 수 있다. 본 발명에 의하면, 저장 장치의 인터럽트 발생을 조절함으로, 컴퓨터 시스템의 성능 또는 처리 시간의 손실 없이, CPU 이득을 확보할 수 있다.

Description

적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법 {Computer system for performing adaptive interrupt control and method for controlling interrupt thereof}
본 발명은 컴퓨터 시스템에 관한 것으로, 좀 더 상세하게는 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법에 관한 것이다.
컴퓨터 시스템(computer system)은 호스트와 저장 장치를 포함한다. 호스트는 컴퓨터 본체나 서버 시스템일 수 있다. 저장 장치는 호스트에 전기적으로 연결되어 사용될 수 있다. 저장 장치는 호스트로부터 입출력 요청(IO request)을 입력 받고, 입출력 요청을 처리한다. 저장 장치는 입출력 요청을 완료하고 호스트로 인터럽트를 제공한다. 저장 장치는 인터럽트를 통해 입출력 완료(IO completion)를 호스트에 알린다.
종래의 저장 장치는, 호스트의 데이터 처리 속도와 비교하여, 상대적으로 느린 데이터 처리 속도를 갖는다. 따라서 저장 장치가 입출력 요청을 처리하는 동안에, 호스트는 시스템의 성능을 높이기 위해 다른 프로그램을 수행한다. 호스트가 다른 프로그램을 수행하는 도중에, 저장 장치로부터 인터럽트를 입력받으면 현재 수행 중인 프로그램을 중지하고, 인터럽트를 처리한다. 호스트는 인터럽트를 처리한 다음에, 다시 프로그램을 복구하고, 복구한 프로그램을 수행한다.
반도체 제조 기술의 발달로, 호스트의 데이터 처리 속도와 큰 차이가 나지 않을 정도로, 저장 장치의 입출력 처리 속도가 빨라지고 있다. 저장 장치의 데이터 처리 속도가 빨라지면서, 저장 장치가 너무 많은 인터럽트를 발생함으로, 오히려 컴퓨터 시스템의 성능이 떨어진다는 문제가 제기되고 있다.
본 발명은 상술한 기술적 과제를 해결하기 위해 제안된 것으로, 본 발명의 목적은 호스트와 고속 저장 장치 사이의 입출력 동작 시에, 저장 장치의 인터럽트 발생을 효율적으로 줄임으로, 호스트의 불필요한 오버헤드를 줄이는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 컴퓨터 시스템은 호스트와 저장 장치를 포함한다. 상기 호스트는 입출력 요청(IO request)을 제공한다. 상기 저장 장치는 상기 호스트로부터 입출력 요청을 입력받고, 입출력 요청을 완료한 다음에 입출력 완료(IO completion)를 알리는 인터럽트를 상기 호스트로 제공한다. 상기 호스트는 지연된 IO 수를 이용하여 상기 저장 장치의 인터럽트 발생 수를 조절한다.
실시 예로서, 상기 호스트는 지연된 IO를 저장하기 위한 제출 큐(SQ)와 완료 큐(CQ)를 포함하고, 상기 제출 큐(SQ)에는 상기 저장 장치로 제공될 입출력 요청이 저장되고, 상기 완료 큐(CQ)에는 상기 저장 장치로부터 제공된 입출력 완료가 저장된다. 상기 지연된 IO 수는 상기 제출 큐에 저장된 입출력 요청 수와 상기 완료 큐에 저장된 입출력 완료 수를 이용하여 구할 수 있다.
실시 예로서, 상기 호스트는 상기 인터럽트 제어 레벨을 결정한 다음에 상기 저장 장치로 인터럽트 제어 명령을 제공하고, 상기 저장 장치는 상기 인터럽트 제어 명령에 응답하여 상기 인터럽트 발생 수를 조절한다.
실시 예로서, 상기 호스트는 중앙처리장치의 부하 상태를 감지하고, 상기 감지한 부하 상태와 상기 지연된 IO 수를 이용하여, 상기 저장 장치의 인터럽트 발생 수를 조절한다. 상기 호스트는 상기 중앙처리장치의 유휴 상태 비율과 미리 정의한 임계값을 비교하고, 비교 결과에 따라 상기 저장 장치의 적응 인터럽트 제어(adaptive interrupt control)를 활성화한다.
실시 예로서, 상기 호스트는 적응 인터럽트 제어 유닛을 포함한다. 상기 적응 인터럽트 제어 유닛은, 상기 지연된 IO 수를 구하고, 상기 지연된 IO 수를 이용하여 인터럽트 제어 레벨을 결정하는 결정 메이커, 및 상기 결정 메이커로부터 인터럽트 제어 레벨을 입력받고, 상기 저장 장치로 인터럽트 제어 명령을 제공하는 인터럽트 제어기를 포함한다. 상기 적응 인터럽트 제어 유닛은 상기 중앙처리장치의 부하 상태를 감지하기 위한 부하 감지기를 더 포함할 수 있다.
본 발명의 실시 예에 따른 컴퓨터 시스템의 다른 일면은, 제 1 및 제 2 중앙처리장치, 상기 제 1 중앙처리장치의 적응 인터럽트 제어를 수행하기 위한 제 1 적응 인터럽트 제어 유닛, 그리고 상기 제 2 중앙처리장치의 적응 인터럽트 제어를 수행하기 위한 제 2 인터럽트 제어 유닛을 포함하는 호스트를 포함한다.
또한, 컴퓨터 시스템은 상기 제 1 적응 인터럽트 제어 유닛으로부터 제 1 입출력 요청을 입력받고, 제 1 입출력 요청을 완료한 다음에 제 1 입출력 완료(IO completion)를 알리는 인터럽트를 상기 호스트로 제공하는 제 1 저장 장치와, 상기 제 2 적응 인터럽트 제어 유닛으로부터 제 2 입출력 요청을 입력받고, 제 2 입출력 요청을 완료한 다음에 제 2 입출력 완료(IO completion)를 알리는 인터럽트를 상기 호스트로 제공하는 제 2 저장 장치를 포함한다.
상기 제 1 적응 인터럽트 제어 유닛은 상기 호스트와 상기 제 1 저장 장치 사이의 지연된 IO 수를 이용하여 상기 제 1 저장 장치의 인터럽트 발생 수를 조절한다. 상기 제 2 적응 인터럽트 제어 유닛은 상기 호스트와 상기 제 2 저장 장치 사이의 지연된 IO 수를 이용하여 상기 제 2 저장 장치의 인터럽트 발생 수를 조절한다.
본 발명의 실시 예에 따른 호스트에 연결되는 저장 장치의 인터럽트 제어 방법은, 상기 호스트로부터 입출력 요청(IO request)을 제공받는 단계, 상기 호스트와 상기 저장 장치 사이의 지연된 IO 수를 이용하여, 상기 저장 장치의 인터럽트 발생 수를 조절하는 단계, 상기 호스트로부터 제공받은 입출력 요청을 완료하는 단계, 및 상기 조절된 인터럽트 발생 수에 따라, 입출력 완료(IO completion)를 알리는 인터럽트를 상기 호스트로 제공하는 단계를 포함한다.
본 발명의 실시 예에 따른 컴퓨터 시스템은 CPU의 부하 상태 또는 지연된 IO의 수를 기초로, 저장 장치의 인터럽트 발생을 제어할 수 있다. 본 발명에 의하면, 저장 장치의 인터럽트 발생을 효율적으로 조절함으로, 컴퓨터 시스템의 성능을 개선할 수 있다.
도 1은 컴퓨터 시스템(computer system)을 개략적으로 보여주는 블록도이다.
도 2는 도 1에 도시된 컴퓨터 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 3은 본 발명의 실시 예에 따른 컴퓨터 시스템을 보여주는 블록도이다.
도 4는 도 3에 도시된 AIC 유닛을 예시적으로 설명하기 위한 블록도이다.
도 5는 도 4에 도시된 부하 감지기(load watcher)의 동작을 예시적으로 설명하기 위한 순서도이다.
도 6은 도 4에 도시된 결정 메이커(decision maker)의 동작을 예시적으로 설명하기 위한 순서도이다.
도 7 및 도 8은 도 4에 도시된 인터럽트 제어기(interrupt controller)의 동작을 예시적으로 설명하기 위한 순서도이다.
도 9는 도 4에 도시된 제출 큐(submission queue)와 완료 큐(completion queue)의 동작을 예시적으로 설명하기 위한 개념도이다.
도 10은 도 9에 도시된 지연된 IO를 정의하는 도표이다.
도 11은 본 발명의 다른 실시 예에 따른 컴퓨터 시스템을 보여주는 블록도이다.
도 12는 본 발명의 또 다른 실시 예에 따른 컴퓨터 시스템을 보여주는 블록도이다.
아래에서는 도면들을 이용하여, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예에 따른 컴퓨터 시스템 및 그것의 인터럽트 제어 방법을 명확하고 상세하게 기술할 것이다.
도 1은 컴퓨터 시스템(computer system)을 개략적으로 보여주는 블록도이다. 도 1을 참조하면, 컴퓨터 시스템(100)은 호스트(110)와 저장 장치(120)를 포함한다. 호스트(110)는 서버 컴퓨터, 데스크탑(desktop), 랩탑(laptop), 테블릿 PC 등과 같은 전자 장치일 수 있다. 호스트(110)는 저장 장치(120) 이외에도, 데이터 입출력을 위한 주변 장치들(예를 들면, 키보드, 마우스, 프린터, 디스플레이 등)과 연결될 수 있다.
호스트(110)는 데이터를 처리하고, 저장 장치(120)에 데이터 입출력(data input/output)을 요청할 수 있다. 이하에서는, 호스트(110)가 저장 장치(120)에 데이터 입출력을 요청하는 일련의 동작을, 간단하게 입출력 요청(IO request)이라고 할 것이다.
저장 장치(120)는 호스트(110)에 전기적으로 연결되어 사용될 수 있다. 저장 장치(120)는 솔리드 스테이트 드라이브(SSD, Solid State Drive), PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), USB (Universal Serial Bus) 메모리 카드, 유니버설 플래시 스토리지(UFS)와 같은, 플래시 메모리를 기반으로 하는 저장 매체일 수 있다. 저장 장치(120)는 eMMC (embedded MultiMedia Card), UFS, PPN(Perfect Page New)와 같은 내장형 메모리로 구현될 수 있다.
계속해서 도 1을 참조하면, 호스트(110)는 데이터 입출력을 저장 장치(120)에 요청할 수 있다. 호스트(110)는 저장 장치(120)에 데이터를 쓰기 위한 쓰기 요청(write request) 또는 저장 장치(120)로부터 데이터를 읽기 위한 읽기 요청(read request) 등을 제공할 수 있다. 저장 장치(120)는 입출력 요청(IO request)을 입력 받고, 내부적으로 입출력 요청을 처리할 수 있다. 저장 장치(120)는 입출력 요청을 완료(complete)하고, 인터럽트(interrupt)를 발생할 수 있다. 저장 장치(120)는 인터럽트를 통해, 호스트(110)에 입출력 완료(IO completion)를 알릴 수 있다.
도 2는 도 1에 도시된 컴퓨터 시스템의 동작을 예시적으로 보여주는 순서도이다. 도 2를 참조하면, 호스트(110)는 저장 장치(120)에 데이터를 쓰거나 저장 장치(120)로부터 데이터를 읽기 위한 입출력 요청(IO request)을 할 수 있다(S110). 예를 들어, 사진 파일을 저장 장치(120)에 보관하는 경우에, 호스트(110)는 저장 장치(120)에 쓰기 요청(write request)을 할 수 있다. 저장 장치(120)에 저장된 사진을 보는 경우에, 호스트(110)는 읽기 요청(read request)을 할 수 있다.
저장 장치(120)는 호스트(110)로부터 입출력 요청(IO request)을 받고, 입출력 요청을 실행할 수 있다(S120). 저장 장치(120)는 입출력 처리 속도가 빠른 제 1 저장 매체와 데이터를 오랫동안 보관하기 위한 제 2 저장 매체를 포함할 수 있다. 여기에서, 제 1 저장 매체는 랜덤 액세스가 가능한 휘발성 메모리(예를 들면, DRAM) 또는 불휘발성 메모리(예를 들면, PRAM 또는 MRAM)로 구현될 수 있다. 제 2 저장 매체는 플래시 메모리와 같은 불휘발성 메모리로 구현될 수 있다.
쓰기 요청인 경우에, 저장 장치(120)는 쓰기 요청을 받고, 데이터를 제 1 저장 매체에 저장할 수 있다. 그리고 저장 장치(120)는 내부적으로 제 1 저장 매체에 저장된 데이터를 제 2 저장 매체로 옮길 수 있다. 제 2 저장 매체로 데이터를 옮기는 동작은 유휴 시간(idle time)이나 백그라운드 동작(background operation)으로 수행될 수 있다.
저장 장치(S130)는 입출력 요청을 완료하고, 인터럽트를 호스트(110)에 제공할 수 있다(S130). 예를 들어, 호스트(110)로부터 입력된 데이터가 제 1 저장 매체에 저장되면, 저장 장치(120)는 입출력 완료(IO completion)를 발생할 수 있다. 즉, 저장 장치(120)는 데이터가 제 2 저장 매체에 최종적으로 저장되지 않아도, 입출력 완료로 처리할 수 있다. 저장 장치(120)는 입출력 완료를 알리기 위해, 호스트(110)에 인터럽트(interrupt)를 제공할 수 있다.
호스트(110)는 저장 장치(120)로부터 인터럽트를 입력받고, 현재 실행 중인 문맥(context)을 저장한다(S140). 호스트(110)는 현재 실행 중인 문맥을 저장하고, 인터럽트를 처리한다(S150). 호스트(110)는 인터럽트를 처리한 다음에, 저장한 문맥을 다시 복구한다(S160). 호스트(110)는 문맥을 복구하고, 스케줄을 다시 조절할 수 있다(S170).
저장 장치(120)의 IO 처리 속도가 호스트(110)의 IO 처리 속도보다 느릴 수 있다. 이 경우에, 저장 장치(120)가 입출력 요청을 처리하는 동안에, 호스트(110)는 저장 장치(120)가 입출력 요청을 처리할 때까지 기다려야 한다. 이러한 오버헤드(overhead)를 방지하기 위해, 저장 장치(120)가 입출력 요청을 실행하는 동안에, 호스트(110)는 다른 문맥(context)을 수행할 수 있다. 호스트(110)는 문맥을 수행하는 도중에, 인터럽트를 입력받으면 수행 중인 문맥(context)을 저장하고, 인터럽트를 처리한다.
도 1에 도시된 컴퓨터 시스템(100)은 저장 장치(120)의 IO 처리 속도가 느린 경우에, 호스트(110)의 오버헤드(overhead)를 줄일 수 있다. 즉, 컴퓨터 시스템(100)은 인터럽트를 이용하여, 저장 장치(120)가 입출력 요청을 실행하는 동안에, 호스트(110)는 다른 문맥(context)을 수행할 수 있다.
도 3은 본 발명의 실시 예에 따른 컴퓨터 시스템을 보여주는 블록도이다. 도 3을 참조하면, 컴퓨터 시스템(1000)은 호스트(1100), 저장 장치(1200), 그리고 입출력 장치(1300)를 포함한다. 호스트(1100)는 외부 버스(external bus)를 통해 저장 장치(1200) 및 입출력 장치(1300)에 연결될 수 있다. 여기에서, 저장 장치(1200)는 SSD와 같이 고속으로 동작하는 저장 매체일 수 있다. 그리고 입출력 장치(1300)는 키보드, 마우스, 모니터, 프린터와 같이 자료를 입력하거나 출력하는 데 필요한 장치일 수 있다.
계속해서 도 3을 참조하면, 호스트(1100)는 중앙처리장치(CPU, 1110), RAM(1120), 적응 인터럽트 제어 유닛(1130), 그리고 외부 메모리 인터페이스(1140)를 포함한다.
중앙처리장치(CPU, 1110)는 호스트(1100)의 프로그램 명령을 실행한다. 즉, 중앙처리장치(1110)는 프로그램 명령을 해석하고, 해석한 프로그램 명령에 따라 호스트(1100) 전반적인 동작을 제어할 수 있다. 또한, 중앙처리장치(1110)는 덧셈, 뺄셈, 곱셈, 나눗셈의 산술 연산만이 아니라, AND, OR, NOT, XOR와 같은 논리 연산을 수행할 수 있다.
중앙처리장치(1110)의 성능은 1초당 몇 번의 입출력(IO) 작업이 처리되는지로 측정될 수 있다. 중앙처리장치(1110)의 처리 속도는 주파수 단위인 Hz(헤르츠)로 나타낼 수 있다. 주파수 수치가 높을수록 빠른 성능의 CPU라고 할 수 있다. 또한, 중앙처리장치(1110)의 성능은 하나의 CPU가 몇 개의 코어(Core)를 포함하느냐로 평가될 수 있다. 중앙처리장치(1110)의 처리 속도는 멀티 코어(Multi Core) CPU가 등장함으로 더욱 빨라지고 있다.
램(1120)은 중앙처리장치(1110)의 연산 동작을 수행하거나, 응용 체계(operating system)나 장치 드라이버(device driver) 등을 구동하는 데 사용될 수 있다. 램(1120)은 중앙처리장치(1110)의 주기억 장치로 사용될 수 있다. 램(1120)은 디램(DRAM)이나 에스램(SRAM) 등과 같은 휘발성 메모리로 구현될 수 있다. 또한, 램(1120)은 피램(PRAM)이나 엠램(MRAM) 등과 같은 불휘발성 메모리로 구현될 수도 있다
적응 인터럽트 제어 유닛(AIC 유닛, 1130)은 저장 장치(1200)를 구동하기 위한 장치 드라이버(device driver)에 포함될 수 있다. 또한, AIC 유닛(1130)은 소프트웨어나 펌웨어 형태로, 인터넷을 통해 다운로드 받거나 저장 매체(예를 들면, CD나 USB 메모리 등)를 통해 실행될 수 있다. AIC 유닛(1130)은 저장 장치(1200)의 인터럽트 발생을 조절할 수 있다. 예를 들면, AIC 유닛(1130)은 중앙처리장치(1110)의 입출력 부하(IO load)를 감지함으로 인터럽트 발생을 조절할 수 있다. 또한, AIC 유닛(1130)은 호스트(1100)와 저장 장치(1200)의 입출력(IO) 동작 시에, 지연된 IO를 통해 인터럽트 발생을 조절할 수 있다. AIC 유닛(1130)의 구성 및 동작 원리는 이하에서 좀 더 상세하게 설명될 것이다.
외부 메모리 인터페이스(1140)는 외부 버스(external bus)를 통해 저장 장치(1200)와 연결될 수 있다. 외부 메모리 인터페이스(1140)는 저장 장치(1200)의 종류에 따라 다양한 인터페이스 방식을 가질 수 있다. 예를 들면, 외부 메모리 인터페이스(1140)는 SATA, PATA, eMMC, UFS, USB, PCIe, NVMe 등과 같은 규격(standard)을 통해 저장 장치(1200)와 데이터를 주고받을 수 있다.
저장 장치(1200)는 데이터 입출력 속도에 따라, 고속 저장 장치(high speed storage device)와 저속 저장 장치(low speed storage device)로 나눌 수 있다. 저장 장치(1200)의 데이터 입출력 속도(data IO speed)는 저장 매체의 종류와 인터페이스에 따라 결정될 수 있다. 일반적으로, 고속 저장 장치는 플래시 메모리를 기반으로 하고, 저속 저장 장치는 자기 디스크를 기반으로 한다.
저장 장치(1200)가 고속으로 데이터 입출력을 하면, 인터럽트가 너무 많이 발생할 수 있다. 인터럽트가 너무 많이 발생하면, 호스트(1100)에서 오버헤드(overhead)가 발생할 수 있다. 예를 들어, 저장 장치(1200)가 1M IOPS(1Mega IO per second) 입출력 속도를 가진다고 가정하자. 즉, 저장 장치(1200)는 산술적으로 1초마다 백만 번의 인터럽트를 발생할 수 있다. 저장 장치(1200)에서 1초마다 백만 번의 인터럽트가 발생하면, 호스트(1100)는 실행 중인 문맥을 중지하고, 인터럽트를 처리하고, 문맥을 복구하는 일련의 과정을 백만 번 수행하게 된다.
저장 장치(1200)가 점점 고속으로 동작하게 되면서, 인터럽트로 인한 오버헤드는 점점 증가하고 있다. 이러한 이유로, 리눅스 시스템에서는 특정 CPU cycle이 인터럽트 처리만을 위해 수십 초 동안 점유되어, 소프트 락업 버그(Soft Lock Up BUG)가 발생하고 있다. 고속 저장 장치에서 너무 자주 발생하는 인터럽트로 인해, 컴퓨터 시스템(1000)의 성능은 떨어질 수 있다.
본 발명의 실시 예에 따른 컴퓨터 시스템(1000)은 AIC 유닛(1130)을 통해, CPU의 부하 상태 또는 지연된 IO의 수를 기초로, 저장 장치(1200)의 인터럽트 발생을 적응적으로 제어할 수 있다. 본 발명은 저장 장치(1200)의 인터럽트 발생을 조절함으로, 컴퓨터 시스템(1000)의 성능 또는 처리 시간의 손실 없이, CPU 이득을 확보할 수 있다.
도 4는 도 3에 도시된 AIC 유닛을 예시적으로 설명하기 위한 블록도이다. 적응 인터럽트 제어 유닛(1130)은 저장 장치(1200)를 제어하기 위한 소프트웨어 모듈로 구현될 수 있다. 저장 장치(1200)는 플래시 메모리를 기반으로 하는 고속 저장 장치일 수 있다. 예로서, 저장 장치(1200)는 NVMe SSD일 수 있다.
도 4를 참조하면, 적응 인터럽트 제어 유닛(1130)은 부하 감지기(1131), 결정 메이커(1132), 그리고 인터럽트 제어기(1133)를 포함한다. 적응 인터럽트 제어 유닛(1130)은 호스트(1100)와 저장 장치(1200)의 입출력(IO) 동작 시에, 중앙처리장치(CPU, 1110)의 입출력 부하(IO load)를 감지함으로, 적응적으로 인터럽트 발생을 제어할 수 있다. 이를 통해, 컴퓨터 시스템(1000)은 호스트(1100)의 인터럽트 처리 부하를 낮추고, 중앙처리장치(CPU, 1110)의 사이클 이득을 개선할 수 있다. 또한, 컴퓨터 시스템(1000)은 인터럽트 발생 수를 줄임으로, 입출력 완료 처리가 늦어져서 IO 성능이 저하되거나 요청 처리 시간이 지연되는 문제도 해결할 수 있다.
계속해서 도 4를 참조하면, 부하 감지기(load watcher, 1131)는 주기적으로 CPU 부하 상태(load status)를 체크할 수 있다. 부하 감지기(1131)는 CPU 부하 상태를 사용자 모드(user mode), 시스템 모드(system mode), IO 진행 모드(IO pending mode), 유휴 상태 모드(idle state mode)로 나누어 체크할 수 있다. 예를 들면, 부하 감지기(1131)는 유휴 상태 비율(idle ratio)을 이용하여 적응 인터럽트 제어(AIC; adaptive interrupt control)를 활성화(activate)할 수 있다.
부하 감지기(1131)는 유휴 상태 비율(idle ratio)과 임계값(threshold)을 비교함으로, AIC를 활성화할 수 있다. 예로서, 부하 감지기(1131)는 유휴 상태 비율이 임계값(예를 들면, 10%)보다 낮은 경우에, AIC를 활성화(activate)할 수 있다. 반대로, 유휴 상태 비율이 임계값(예를 들면, 10%)보다 높은 경우에, 부하 감지기(1131)는 AIC를 비활성화(deactivate)할 수 있다.
결정 메이커(decision maker, 1132)는 저장 장치(1200)의 인터럽트 발생을 제어할 수 있다. 저장 장치(1200)의 인터럽트를 제어할 필요가 있는 경우에, 결정 메이커(1132)는 인터럽트 제어 레벨(ICL; interrupt control level)을 결정한다. 결정 메이커(1132)는 지연된 IO를 이용하여 ICL을 결정할 수 있다. 여기에서, 지연된 IO(delayed IO)는 호스트(1100)에서 제출한 IO(submission IO)와 저장 장치(1200)에서 완료한 IO(completion IO)를 이용하여 구할 수 있다.
결정 메이커(1132)는 특정 시점에 호스트(1100)에서 제출(submit)한 IO(이하, IOsq)와 저장 장치(1200)에서 완료(complete)한 IO(이하, IOcq)를 이용하여, 지연된 IO(delayed IO) 수를 계산할 수 있다. 실시 예에 따라, 지연된 IO 수는 IOsq와 IOcq 중 어느 하나 또는 이들의 합이나 차를 이용하여 계산할 수 있다. 예를 들면, 결정 메이커(1132)는 IOsq와 IOcq의 차이를 이용하여 지연된 IO 수를 계산할 수 있다. 이때 지연된 수는 컴퓨터 시스템(1000)에서 처리 대기 중인 IO수를 의미한다.
결정 메이커(1132)는 지연된 IO 수를 기반으로, ICL을 결정할 수 있다. 결정 메이커(1132)는 ICL을 결정하기 위한 결정 함수(decision function)를 사용할 수 있다. 결정 함수는 여러 가지로 정의할 수 있다. 예를 들면, 결정 함수는 지연된 IO 수를 반으로 나눔으로 ICL을 결정할 수 있다. 또한, 결정 함수는 지연된 IO 수에 대해 모듈러 연산을 수행함으로 ICL을 결정할 수 있다. 또는, 결정 함수는 지연된 IO 수에 대해 산술 연산과 모듈러 연산을 모두 수행함으로 ICL을 결정할 수 있다.
결정 메이커(1132)가 ICL을 너무 자주 변경하면, 호스트(1100)와 저장 장치(1200) 사이의 입출력(IO) 성능이 나빠질 수 있다. 이를 방지하기 위해, 결정 메이커(1132)는 모듈러 연산을 이용하여 ICL을 일정 윈도우 크기로 조절할 수 있다. 이를 위해, 호스트(1100)와 저장 장치(1200) 사이에는 적응 인터럽트 제어(AIC)를 수행하기 위한, 미리 정의된 프로토콜이 필요하다. 예를 들어, NVMe는 Interrupt Coalescing / Interrupt Vector Configuration Admin Command (Set/Get Feature 0x8, 0x9)를 통해 프로토콜을 설정할 수 있다.
결정 메이커(1132)는 인터럽트 제어 레벨(ICL)을 결정함으로, 저장 장치(1200)의 인터럽트 발생을 줄일 수 있다. 예를 들면, ICL이 24라고 가정하면, 저장 장치(1200)는 23번의 인터럽트를 생략하고, 한 번의 인터럽트만 발생할 수 있다. 이를 통해, 결정 메이커(1132)는 인터럽트 발생을 줄이고, 인터럽트 처리 시간이 지연되는 것을 막을 수 있다.
인터럽트 제어기(Interrupt Controller, 1133)는 결정 메이커(1132)로부터 인터럽트 제어 레벨(ICL)을 입력받고, 저장 장치(1200)에 인터럽트 제어 명령(CTRL)을 제공할 수 있다. 인터럽트 제어기(1133)는 저장 장치(1200)의 인터럽트 발생 수를 높이거나 낮출 수 있다.
계속해서 도 4를 참조하면, 적응 인터럽트 제어 유닛(1130)은 제출 큐(SQ, 1134)와 완료 큐(CQ, 1135)를 포함할 수 있다. 여기에서, 제출 큐(1134)와 완료 큐(1135)는 AIC 유닛(1130)에 포함되지 않을 수 있다. 제출 큐(1134)와 완료 큐(1135)는 호스트(1100)의 램(도 3 참조, 1120)에서 구동할 수 있다.
제출 큐(SQ; submission queue, 1134)는 중앙처리장치(1110)에서 제공한 IO 요청을 저장하고, 저장된 IO 요청을 저장 장치(1200)에 순차적으로 제공할 수 있다. 제출 큐(1134)는 램(도 3 참조, 1120)에 IO 요청을 저장할 수 있다. 한편, 완료 큐(CQ; completion queue, 1135)는 저장 장치(1200)에서 완료한 IO 요청을 순차적으로 저장한다. 완료 큐(1135)는 저장 장치(1200)로부터 IO 완료를 알리는 인터럽트를 입력받고, 완료한 IO 요청을 저장할 수 있다. 완료 큐(1135)는 램(1120)에 IO 완료를 저장할 수 있다. 저장 장치(1200)는 인터럽트 제어 명령(CTRL)을 입력받고, 인터럽트 제어 레벨(ICL)에 따라 인터럽트를 발생할 수 있다.
도 5는 도 4에 도시된 부하 감지기(load watcher)의 동작을 예시적으로 설명하기 위한 순서도이다.
S210 단계에서, 부하 감지기(1131)는 현재 CPU(1110)의 부하 상태(load state)를 체크한다. 부하 감지기(1131)는 CPU(1110)의 입출력 정보를 입력받고, 주기적으로 부하 상태(load status)를 체크할 수 있다.
S220 단계에서, 부하 감지기(1131)는 CPU(1110)의 유휴 상태 비율(idle ratio)을 계산한다. CPU의 부하 상태는 사용자 모드(user mode), 시스템 모드(system mode), IO 진행 모드(IO pending mode), 유휴 상태 모드(idle state mode)로 구분될 수 있다. CPU의 유휴 상태 비율(idle ratio)은 CPU의 전체 부하 상태 중 유휴 상태가 차지하는 비율을 의미한다. AIC 유닛(1130)은 유휴 상태 비율(idle ratio)을 이용하여 적응 인터럽트 제어(AIC; adaptive interrupt control)를 활성화(activate)할 수 있다.
S230 단계에서, 부하 감지기(1131)는 유휴 상태 비율과 임계값을 비교한다. 예를 들면, 부하 감지기(1131)는 유휴 상태 비율이 임계값보다 낮은지를 판단할 수 있다. 부하 감지기(1131)는 유휴 상태 비율이 임계값과 같거나 높으면(No), 적응 인터럽트 제어를 수행하지 않을 수 있다. 만약, 적응 인터럽트 제어가 수행되고 있다면, 부하 감지기(1131)는 적응 인터럽트 제어를 비활성화(deactivate) 할 수 있다. 반면에, 부하 감지기(1131)는 유휴 상태 비율이 임계값보다 작으면(Yes), S240 단계를 수행할 수 있다.
S240 단계에서, 부하 감지기(1131)는 유휴 상태 비율이 임계값보다 낮은 경우에 AIC를 활성화(activate)할 수 있다. 예를 들면, 부하 감지기(1131)는 유휴 상태 비율이 10%보다 낮으면 적응 인터럽트 제어(AIC)를 활성화할 수 있다. 부하 감지기(1131)는 AIC를 활성화하기 위한 신호를 결정 메이커(1132)로 제공할 수 있다.
도 6은 도 4에 도시된 결정 메이커(decision maker)의 동작을 예시적으로 설명하기 위한 순서도이다.
S310 단계에서, 결정 메이커(1132)는 현재의 지연된 IO 수를 구한다. 결정 메이커(1132)는 제출 IO(IOsq)와 완료 IO(IOcq)를 이용하여 지연된 IO 수를 계산할 수 있다. 예를 들면, 결정 메이커(1132)는 IOsq와 IOcq의 차를 이용하여 지연된 IO를 계산할 수 있다. 이때 지연된 IO 수는 컴퓨터 시스템(1000)에서 처리 대기 중인 IO 수를 의미한다.
S320 단계에서, 결정 메이커(1132)는 지연된 IO 수를 이용하여 인터럽트 제어 레벨(ICL)을 계산한다. 인터럽트 제어 레벨(ICL)은 미리 정의된 결정 함수(decision function)로 구할 수 있다. 예를 들어, 결정 함수는 지연된 IO 수의 절반이라고 가정하자. IOsq가 100이고, IOcq가 10이라고 하면, 지연된 IO 수는 IOsq와 IOcq의 차이인 90이 된다. 따라서, 인터럽트 제어 레벨(ICL)은 결정 함수에 의해 45로 계산된다. 인터럽트 제어 레벨(ICL)이 45이면, 저장 장치(1200)는 44번의 인터럽트 발생을 생략하고, 한 번의 인터럽트를 발생한다.
S330 단계에서, 결정 메이커(1132)는 인터럽트 제어 레벨(ICL)과 임계 레벨(threshold level)을 비교한다. S330 단계는 S320 단계에서 모듈러 연산이 적용된 경우에 수행될 수 있다. 결정 메이커(1132)는 모듈러 연산을 이용하여, ICL을 일정 윈도우 크기로 조절할 수 있다. 결정 메이커(1132)는 ICL이 임계 레벨보다 큰지를 판단한다. 결정 메이커(1132)는 ICL이 임계 레벨과 같거나 낮으면(No), 적응 인터럽트 제어(AIC)를 수행하지 않을 수 있다. 반면에, 결정 메이커(1132)는 ICL이 임계 레벨보다 크면(Yes), S340 단계를 수행할 수 있다.
S340 단계에서, 결정 메이커(1132)는 적응 인터럽트 제어(adaptive interrupt control)를 인에이블 할 수 있다. 예를 들면, 결정 메이커(1132)는 인터럽트 제어 레벨이 임계 레벨보다 크면 인터럽트 제어 명령(CTRL)을 저장 장치(1200)로 제공할 수 있다
도 7 및 도 8은 도 4에 도시된 인터럽트 제어기(interrupt controller)의 동작을 예시적으로 설명하기 위한 순서도이다. 도 7은 인터럽트 제어기(1133)가 CPU의 부하 상태와 IO 펜딩 수를 기초로 적응 인터럽트 제어(AIC)를 수행하는 예를 보여주고, 도 8은 IO 펜딩 수를 기초로 AIC를 수행하는 예를 보여준다.
도 7을 참조하면, S410 단계에서, 인터럽트 제어기(1133)는 적응 인터럽트 제어(AIC)가 활성화 되었는지를 판단한다. AIC 활성화 여부는 도 5의 S230 단계에서 설명한 바와 같이, CPU 유휴 상태 비율이 임계값보다 작은지 여부로 판단할 수 있다. 만약 적응 인터럽트 제어(AIC)가 활성화되어 있지 않으면, 인터럽트 제어기(1133)는 인터럽트 제어 명령(CTRL)을 저장 장치(1200)로 제공하지 않을 수 있다. 반면에, 적응 인터럽트 제어(AIC)가 활성화되어 있으면, 인터럽트 제어기(1133)는 S420 단계를 수행한다.
S420 단계에서, 인터럽트 제어기(1133)는 적응 인터럽트 제어(AIC)가 인에이블 되었는지를 판단한다. 인터럽트 제어기(1133)는 결정 메이커(1132)로부터 AIC 인에이블 정보를 입력받을 수 있다. AIC 인에이블 여부는 도 6에서 설명한 바와 같이, 인터럽트 제어 레벨(ICL)이 임계 레벨보다 큰지로 판단할 수 있다. 만약 적응 인터럽트 제어(AIC)가 인에이블 되어 있지 않으면, 인터럽트 제어기(1133)는 인터럽트 제어 명령(CTRL)을 저장 장치(1200)로 제공하지 않을 수 있다. 반면에, 적응 인터럽트 제어(AIC)가 인에이블 되어 있으면, 인터럽트 제어기(1133)는 S430 단계를 수행한다
S430 단계에서, 인터럽트 제어기(1133)는 저장 장치(1200)로 인터럽트 제어 명령(CTRL)을 제공한다. 인터럽트 제어기(1133)는 저장 장치(1200)에 인터럽트 제어 명령(CTRL)을 제공함으로, 인터럽트 발생 수를 조절할 수 있다.
도 7에 도시된 인터럽트 제어기(1133)의 동작 방법에 의하면, AIC 유닛(1130)은 CPU의 부하 상태 및 지연된 IO의 수를 기초로, 저장 장치(1200)의 인터럽트 발생을 적응적으로 제어할 수 있다. 본 발명은 저장 장치(1200)의 인터럽트 발생을 조절함으로, 컴퓨터 시스템(1000)의 성능 또는 처리 시간의 손실 없이, CPU 이득을 확보할 수 있다.
계속해서 도 8을 참조하면, 인터럽트 제어기(1130)는 CPU의 유휴 상태 비율을 고려하지 않고, 인터럽트 제어 레벨(ICL)을 기초로 저장 장치(1200)의 인터럽트 발생을 적응적으로 제어할 수 있다.
인터럽트 제어기(1133)는 적응 인터럽트 제어(AIC)가 인에이블 되었는지를 판단한다(S510). AIC 인에이블 여부는 인터럽트 제어 레벨(ICL)과 임계 레벨을 비교함으로 판단할 수 있다. 만약 적응 인터럽트 제어(AIC)가 인에이블 되어 있지 않으면, 인터럽트 제어기(1133)는 인터럽트 제어 명령(CTRL)을 저장 장치(1200)로 제공하지 않을 수 있다. 반면에, 적응 인터럽트 제어(AIC)가 인에이블 되어 있으면, 인터럽트 제어기(1133)는 저장 장치(1200)로 인터럽트 제어 명령(CTRL)을 제공한다(S520). 인터럽트 제어기(1133)는 저장 장치(1200)에 인터럽트 제어 명령(CTRL)을 제공함으로, 인터럽트 발생 수를 조절할 수 있다.
도 9는 도 4에 도시된 제출 큐(submission queue)와 완료 큐(completion queue)의 동작을 예시적으로 설명하기 위한 개념도이다. 도 9를 참조하면, 제출 큐(SQ, 1134)는 제 1 내지 제 m 제출 큐(SQ1~SQm)로 구성된다. 여기에서, 제 1 내지 제 m 제출 큐(SQ1~SQm)에는 중앙처리장치(CPU, 1110)로부터 제공받은 입출력 요청이 저장된다. 그리고 완료 큐(CQ, 1135)는 제 1 내지 제 n 완료 큐(CQ1~CQn)로 구성된다. 제 1 내지 제 n 완료 큐(CQ1~CQn)에는 저장 장치(1200)로부터 제공받은 완료 정보(completion information)가 저장된다. 지연된 IO 수는 제출 큐(SQ, 1134)와 완료 큐(CQ, 1135)를 통해 구할 수 있다.
결정 메이커(1132)는 지연된 IO 수를 기반으로, 인터럽트 제어 레벨(ICL)을 결정할 수 있다. 아래 수학식은 지연된 IO를 이용하여 인터럽트 제어 레벨(ICL)을 결정하는 과정을 예시적으로 보여준다. 제출 큐(IOsq)는 100(m=100)이고, 완료 큐(IOcq)는 10(n=10)이라고 가정하자.
Figure 112016048041716-pat00001
수학식 1은 제출 큐(SQ)와 완료 큐(CQ)의 차이(IOsq-IOcq)를 이용하여 지연된 IO 수(P1)를 계산하는 과정을 보여준다. 수학식 1에서, 지연된 IO 수(P1)는 90이다.
Figure 112016048041716-pat00002
수학식 2는 인터럽트 제어 레벨(ICL)을 구하기 위한 결정 함수를 보여준다. 수학식 2에 의하면, 결정 함수(P2)는 90/2이다. 즉, 인터럽트 제어 레벨(ICL)은 45이다. 인터럽트 제어 레벨(ICL)이 45이면, 저장 장치(1200)는 45번의 인터럽트 발생을 발생하지 않고, 한 번의 인터럽트만 발생한다.
Figure 112016048041716-pat00003
수학식 3은 모듈러 연산을 이용하여 인터럽트 제어 레벨(ICL)을 구하기 위한 결정 함수를 보여준다. 윈도우 크기는 24라고 가정하자. 결정 메이커(1132)는 수학식 2에서 구한 P2에 대한 모듈러 연산을 수행함으로, 인터럽트 제어 레벨(ICL)을 계산한다. 결정 메이커(1132)는 인터럽트 제어 레벨(ICL)을 통해 저장 장치(1200)의 인터럽트 발생을 줄일 수 있다. ,
저장 장치(1200)는 인터럽트 제어 명령(CTRL)을 입력받고, 인터럽트 발생을 조절할 수 있다. 저장 장치(1200)는 제출 큐(SQ, 1134)로부터 입출력 요청을 페치(fetch)하고, 입출력 요청을 실행(execute)한다. 저장 장치(1200)는 입출력 요청을 완료한 다음에, 인터럽트 제어 명령(CTRL)에 따라 인터럽트를 완료 큐(CQ, 1135)에 제공한다.
도 10은 도 9에 도시된 지연된 IO를 정의하는 예를 보여주는 도표이다. 도 10을 참조하면, 지연된 IO는 다양한 방법으로 정의할 수 있다. 제 1 지연된 IO는 제출 큐(SQ)의 수를 이용하여 정의할 수 있다. 도 9의 예에서, 제 1 지연된 IO는 m이라고 할 수 있다. 제 2 지연된 IO는 완료 큐(CQ)의 수를 이용하여 정의할 수 있다. 도 9의 예에서, 제 2 지연된 IO는 n이라고 할 수 있다. 제 3 지연된 IO는 제출 큐(SQ)와 완료 큐(CQ)의 합(IOsq+IOcq)을 이용하여 정의할 수 있다. 도 9의 예에서, 제 3 지연된 IO는 m+n이라고 할 수 있다. 제 4 지연된 IO는 제출 큐(SQ)와 완료 큐(CQ)의 차이(IOsq-IOcq)를 이용하여 정의할 수 있다. 도 9의 예에서, 제 4 지연된 IO는 m-n(단, m>n)이라고 할 수 있다.
도 11은 본 발명의 다른 실시 예에 따른 컴퓨터 시스템을 보여주는 블록도이다. 도 11을 참조하면, 컴퓨터 시스템(2000)은 호스트(2100)와 복수의 저장 장치(2210~2230)를 포함할 수 있다. 그리고 호스트(1100)는 복수의 중앙처리장치(2111~2113)와 복수의 적응 인터럽트 제어 유닛(2131~2133)을 포함할 수 있다.
제 1 AIC 유닛(2131)은 제 1 CPU(2111)의 부하 상태를 감지할 수 있다. 또한, 제 1 AIC 유닛(2131)은 호스트(2100)와 제 1 저장 장치(2210)의 지연된 IO 수를 기반으로 인터럽트 제어 레벨(ICL)을 결정할 수 있다. 제 1 AIC 유닛(2131)은 제 1 인터럽트 제어 명령(CTRL1)을 제 1 저장 장치(2210)로 제공할 수 있다. 제 1 저장 장치(2210)는 제 1 인터럽트 제어 명령(CTRL1)에 따라, 인터럽트 발생 수를 조절할 수 있다. 제 1 저장 장치(2210)는 제 1 AIC 유닛(2131)으로부터 제 1 IO 요청(REQ1)을 입력받을 수 있다. 제 1 저장 장치(2210)는 제 1 IO 요청(REQ1)을 완료한 다음에, 제 1 인터럽트 제어 명령(CTRL1)에 따라 제 1 인터럽트(INT1)를 제 1 AIC 유닛(2131)에 제공할 수 있다.
마찬가지로, 제 2 AIC 유닛(2132)은 제 2 인터럽트 제어 명령(CTRL2)을 제 2 저장 장치(2220)로 제공할 수 있다. 제 2 저장 장치(2220)는 제 2 IO 요청(REQ2)을 완료한 다음에, 제 2 인터럽트 제어 명령(CTRL2)에 따라 제 2 인터럽트(INT2)를 제 2 AIC 유닛(2132)에 제공할 수 있다. 제 3 저장 장치(2230)는 제 3 IO 요청(REQ3)을 완료한 다음에, 제 3 인터럽트 제어 명령(CTRL3)에 따라 제 3 인터럽트(INT3)를 제 3 AIC 유닛(2133)에 제공할 수 있다.
본 발명의 실시 예에 따른 컴퓨터 시스템(2000)은 호스트(2100)가 복수의 CPU를 포함하는 경우에도 적응 인터럽트 제어(AIC)를 수행할 수 있다. 본 발명의 실시 예에 따른 컴퓨터 시스템(2000)은 적응 인터럽트 제어(AIC)를 통해, 저장 장치의 인터럽트 발생 수를 효율적으로 줄일 수 있다.
도 12는 본 발명의 또 다른 실시 예에 따른 컴퓨터 시스템을 보여주는 블록도이다. 도 12를 참조하면, 컴퓨터 시스템(3000)은 호스트(3100)와 저장 장치(3200)를 포함한다. 호스트(3100)는 중앙처리장치(CPU, 3110), RAM(3120), 장치 드라이버(3130), 그리고 외부 메모리 인터페이스(3140)를 포함한다.
중앙처리장치(CPU, 3110)는 호스트(3100)의 전반적인 동작을 제어할 수 있다. 램(3120)은 응용 체계(operating system)이나 장치 드라이버(3130) 등을 구동하는 데 사용될 수 있다. 장치 드라이버(3130)는 저장 장치(3200)를 구동하기 위한 소프트웨어일 수 있다. 외부 메모리 인터페이스(3140)는 외부 버스(external bus)를 통해 저장 장치(3200)와 연결될 수 있다.
저장 장치(3200)는 플래시 메모리(3210), 메모리 컨트롤러(3220), 그리고 적응 인터럽트 제어기(3230)를 포함한다. 저장 장치(3200)는 플래시 메모리(3210)를 기반으로 하는 고속 저장 장치(high speed storage device)일 수 있다. 저장 장치(3200)가 고속으로 입출력 동작을 하면, 너무 많은 인터럽트로 인해 호스트(3100)에서 오버헤드(overhead)가 발생할 수 있다.
적응 인터럽트 제어기(3230)는 저장 장치(3200)의 인터럽트 발생을 조절할 수 있다. 적응 인터럽트 제어기(3230)는 호스트(3100)와 저장 장치(3200)의 입출력(IO) 동작 시에, 지연된 IO 수를 통해 인터럽트 발생을 조절할 수 있다. 적응 인터럽트 제어기(3230)는 도 4에 도시된 결정 메이커(1132)와 인터럽트 제어기(1133)를 포함할 수 있다.
적응 인터럽트 제어기(3230)는 제출 IO(IOsq)와 완료 IO(IOcq)를 이용하여 지연된 IO 수를 계산할 수 있다. 적응 인터럽트 제어기(3230)는 지연된 IO 수를 이용하여 인터럽트 제어 레벨(ICL)을 계산할 수 있다. 저장 장치(3200)는 인터럽트 제어 레벨(ICL)을 이용하여 인터럽트 발생을 적응적으로 제어할 수 있다. 도 12에 도시된 컴퓨터 시스템(3000)은 저장 장치(3200) 내부에 적응 인터럽트 제어기(3230)를 포함한다. 컴퓨터 시스템(3000)은 적응 인터럽트 제어기(3230)를 이용하여 인터럽트 발생을 조절함으로, 컴퓨터 시스템(3000)의 성능 또는 처리 시간의 손실 없이, CPU 이득을 확보할 수 있다.
한편, 도 12에 도시된 컴퓨터 시스템(3000)은 호스트(3130)의 장치 드라이버(3130)에 부하 감지기(도 4 참조, 1131)를 포함할 수 있다. 장치 드라이버(3130)는 주기적으로 CPU 부하 상태(load status)를 체크할 수 있다. 장치 드라이버(3130)는 CPU의 유휴 상태 비율(idle ratio)을 이용하여 적응 인터럽트 제어(AIC; adaptive interrupt control)를 활성화(activate)할 수 있다.
본 발명의 실시 예에 따른 컴퓨터 시스템(3000)은 적응 인터럽트 제어기(3230)를 저장 장치(3230)에 포함할 수 있다. 또한, 컴퓨터 시스템(3000)은 장치 드라이버(3130) 내에 부하 감지기를 포함할 수 있다. 컴퓨터 시스템(3000)은 CPU의 부하 상태 또는 지연된 IO의 수를 기초로, 저장 장치(3200)의 인터럽트 발생을 적응적으로 제어할 수 있다. 본 발명은 저장 장치(3200)의 인터럽트 발생을 조절함으로, 컴퓨터 시스템(3000)의 성능 또는 처리 시간의 손실 없이, CPU 이득을 확보할 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
1000, 2000, 3000: 컴퓨터 시스템
1100, 2100, 3100: 호스트
1200, 2200, 3200: 저장 장치
1130, 2131, 2132, 2133, 3230: 적응 인터럽트 제어 유닛
1131: 부하 감지기
1132: 결정 메이커
1133: 인터럽트 제어기

Claims (20)

  1. 입출력(IO) 요청을 입력받고, 상기 IO 요청을 완료한 다음에 IO 완료를 알리는 인터럽트를 제공하는 저장 장치; 및
    상기 IO 요청을 생성하고 상기 인터럽트를 제공받는 호스트를 포함하되,
    상기 호스트는,
    상기 호스트가 제공한 IO 요청 수와 상기 저장 장치가 완료한 IO 완료 수를 이용하여 지연된 IO 수를 결정하고,
    상기 지연된 IO 수를 이용하여 인터럽트 제어 레벨을 결정하고,
    상기 인터럽트 제어 레벨이 임계값보다 큰 경우 상기 인터럽트 제어 레벨에 기반하여 상기 저장 장치로 인터럽트 제어 명령을 선택적으로 제공하여 상기 저장 장치로부터의 상기 인터럽트의 빈도를 선택적으로 조정하는 컴퓨터 시스템.
  2. 제 1 항에 있어서,
    상기 호스트는 지연된 IO를 저장하기 위한 제출 큐(SQ)와 완료 큐(CQ)를 포함하고, 상기 제출 큐(SQ)에는 상기 저장 장치로 제공될 IO 요청 수가 저장되고, 상기 완료 큐(CQ)에는 상기 저장 장치로부터 제공된 IO 완료 수가 저장되는 컴퓨터 시스템.
  3. 삭제
  4. 삭제
  5. 제 2 항에 있어서,
    상기 호스트는 상기 제출 큐에 저장된 IO 요청 수와 상기 완료 큐에 저장된 IO 완료 수의 합으로서 상기 지연된 IO 수를 계산하는 컴퓨터 시스템.
  6. 제 2 항에 있어서,
    상기 호스트는 상기 제출 큐에 저장된 IO 요청 수와 상기 완료 큐에 저장된 IO 완료 수의 차로서 상기 지연된 IO 수를 계산하는 컴퓨터 시스템.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 호스트는 상기 인터럽트 제어 레벨이 상기 임계값보다 큰 경우 상기 저장 장치로 상기 인터럽트 제어 명령을 선택적으로 제공하고,
    상기 저장 장치는 상기 인터럽트 제어 명령에 응답하여 상기 인터럽트의 상기 빈도를 조절하는 컴퓨터 시스템.
  9. 제 1 항에 있어서,
    상기 호스트는 중앙처리장치의 부하 상태를 감지하고, 상기 감지된 부하 상태와 상기 지연된 IO 수를 이용하여, 상기 저장 장치로부터의 상기 인터럽트의 상기 빈도를 조절하는 컴퓨터 시스템.
  10. 제 9 항에 있어서,
    상기 호스트는 상기 중앙처리장치의 유휴 상태 비율과 미리 정의한 임계값을 비교하고, 비교 결과에 따라 상기 저장 장치의 적응 인터럽트 제어(adaptive interrupt control)를 활성화하는 컴퓨터 시스템.
  11. 제 9 항에 있어서,
    상기 호스트는 적응 인터럽트 제어 유닛을 포함하고,
    상기 적응 인터럽트 제어 유닛은,
    상기 지연된 IO 수를 구하고, 상기 지연된 IO 수를 이용하여 상기 인터럽트 제어 레벨을 결정하는 결정 메이커; 및
    상기 결정 메이커로부터 상기 인터럽트 제어 레벨을 입력받고, 상기 저장 장치로 상기 인터럽트 제어 명령을 제공하는 인터럽트 제어기를 포함하는 컴퓨터 시스템.
  12. 제 11 항에 있어서,
    상기 적응 인터럽트 제어 유닛은 상기 중앙처리장치의 상기 부하 상태를 감지하기 위한 부하 감지기를 더 포함하는 컴퓨터 시스템.
  13. 제 12 항에 있어서,
    상기 적응 인터럽트 제어 유닛은 상기 저장 장치를 구동하기 위한 장치 드라이버 내에 포함되는 컴퓨터 시스템.
  14. 제 1 및 제 2 중앙처리장치, 상기 제 1 중앙처리장치의 적응 인터럽트 제어를 수행하기 위한 제 1 적응 인터럽트 제어 유닛, 그리고 상기 제 2 중앙처리장치의 적응 인터럽트 제어를 수행하기 위한 제 2 인터럽트 제어 유닛을 포함하는 호스트;
    상기 제 1 적응 인터럽트 제어 유닛으로부터 제 1 입출력(IO) 요청을 입력받고, 제 1 IO 요청을 완료한 다음에 제 1 IO 완료를 알리는 제 1 인터럽트를 상기 호스트로 제공하는 제 1 저장 장치; 및
    상기 제 2 적응 인터럽트 제어 유닛으로부터 제 2 IO 요청을 입력받고, 제 2 IO 요청을 완료한 다음에 제 2 IO 완료를 알리는 제 2 인터럽트를 상기 호스트로 제공하는 제 2 저장 장치를 포함하되,
    상기 제 1 적응 인터럽트 제어 유닛은,
    상기 호스트가 제공한 상기 제 1 IO 요청 수와 상기 제 1 저장 장치가 완료한 제 1 IO 완료 수를 이용하여 제 1 지연된 IO 수를 결정하고,
    상기 제 1 지연된 IO 수를 이용하여 제 1 인터럽트 제어 레벨을 결정하고,
    상기 제 1 인터럽트 제어 레벨이 제 1 임계값보다 큰 경우 상기 제 1 인터럽트 제어 레벨에 기반하여 상기 제 1 저장 장치로 제 1 인터럽트 제어 명령을 선택적으로 제공하여 상기 제 1 저장 장치로부터의 상기 제 1 인터럽트의 빈도를 선택적으로 조정하고,
    상기 제 2 적응 인터럽트 제어 유닛은,
    상기 호스트가 제공한 상기 제 2 IO 요청 수와 상기 제 2 저장 장치가 완료한 제 2 IO 완료 수를 이용하여 제 2 지연된 IO 수를 결정하고,
    상기 제 2 지연된 IO 수를 이용하여 제 2 인터럽트 제어 레벨을 결정하고,
    상기 제 2 인터럽트 제어 레벨이 제 2 임계값보다 큰 경우 상기 제 2 인터럽트 제어 레벨에 기반하여 상기 제 2 저장 장치로 제 2 인터럽트 제어 명령을 선택적으로 제공하여 상기 제 2 저장 장치로부터의 상기 제 2 인터럽트의 빈도를 선택적으로 조정하는 컴퓨터 시스템.
  15. 제 14 항에 있어서,
    상기 제 1 적응 인터럽트 제어 유닛은,
    상기 제 1 지연된 IO 수를 구하고, 상기 제 1 지연된 IO 수를 이용하여 상기 제 1 인터럽트 제어 레벨을 결정하는 결정 메이커; 및
    상기 결정 메이커로부터 상기 제 1 인터럽트 제어 레벨을 입력받고, 상기 제 1 저장 장치로 상기 제 1 인터럽트 제어 명령을 제공하는 인터럽트 제어기를 포함하는 컴퓨터 시스템.
  16. 제 15 항에 있어서,
    상기 호스트는 상기 제 1 및 제 2 중앙처리장치의 부하 상태를 감지하기 위한 부하 감지기를 더 포함하는 컴퓨터 시스템.
  17. 제 16 항에 있어서,
    상기 부하 감지기는 상기 제 1 및 제 2 중앙처리장치의 유휴 상태 비율과 미리 정의한 임계값을 비교하고, 비교 결과에 따라 상기 제 1 및 제 2 저장 장치의 적응 인터럽트 제어를 활성화하는 컴퓨터 시스템.
  18. 호스트에 의한 저장 장치의 인터럽트를 제어하는 방법에 있어서,
    상기 저장 장치로 입출력(IO) 요청을 제공하는 단계;
    상기 저장 장치에 의해 상기 IO 요청이 완료된 다음에 상기 저장 장치로부터 IO 완료를 알리는 인터럽트를 제공받는 단계;
    상기 호스트가 제공한 IO 요청 수와 상기 저장 장치가 완료한 IO 완료 수를 이용하여 지연된 IO 수를 결정하는 단계;
    상기 지연된 IO 수를 이용하여 인터럽트 제어 레벨을 결정하는 단계;
    상기 인터럽트 제어 레벨이 임계값보다 큰 경우 상기 인터럽트 제어 레벨에 기반하여 상기 저장 장치로 인터럽트 제어 명령을 선택적으로 제공하여 상기 저장 장치로부터의 상기 인터럽트의 빈도를 선택적으로 조정하는 단계를 포함하는 저장 장치의 인터럽트 제어 방법.
  19. 삭제
  20. 제 18 항에 있어서,
    상기 호스트는,
    상기 호스트 내의 중앙처리장치의 부하 상태를 감지하고, 상기 감지된 부하 상태와 상기 지연된 IO 수를 이용하여 상기 저장 장치로부터의 상기 인터럽트의 상기 빈도를 조절하는 저장 장치의 인터럽트 제어 방법.

KR1020160061337A 2016-05-19 2016-05-19 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법 KR102649324B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020160061337A KR102649324B1 (ko) 2016-05-19 2016-05-19 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법
CN201710298925.2A CN107402894B (zh) 2016-05-19 2017-04-27 用于执行自适应中断控制的计算机系统及其控制中断的方法
US15/598,850 US10318174B2 (en) 2016-05-19 2017-05-18 Computer system for performing adaptive interrupt control and method for controlling interrupt thereof
US16/415,068 US11023137B2 (en) 2016-05-19 2019-05-17 Computer system for performing adaptive interrupt control and method for controlling interrupt thereof
US17/307,098 US11543968B2 (en) 2016-05-19 2021-05-04 Computer system for performing adaptive interrupt control and method for controlling interrupt thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160061337A KR102649324B1 (ko) 2016-05-19 2016-05-19 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법

Publications (2)

Publication Number Publication Date
KR20170131738A KR20170131738A (ko) 2017-11-30
KR102649324B1 true KR102649324B1 (ko) 2024-03-20

Family

ID=60330136

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160061337A KR102649324B1 (ko) 2016-05-19 2016-05-19 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법

Country Status (3)

Country Link
US (3) US10318174B2 (ko)
KR (1) KR102649324B1 (ko)
CN (1) CN107402894B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102278721B1 (ko) * 2016-07-22 2021-07-16 삼성전자주식회사 비휘발성 메모리 익스프레스(NVMe) 장치의 커맨드의 실행 조정을 위한 시스템 및 방법
US10452278B2 (en) * 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10423550B2 (en) 2017-10-25 2019-09-24 International Business Machines Corporation Managing efficient selection of a particular processor thread for handling an interrupt
US11144481B2 (en) * 2018-04-11 2021-10-12 Apple Inc. Techniques for dynamically adjusting the manner in which I/O requests are transmitted between a computing device and a storage device
KR102560251B1 (ko) 2018-06-20 2023-07-26 삼성전자주식회사 반도체 장치 및 반도체 시스템
CN109086232A (zh) * 2018-07-26 2018-12-25 郑州云海信息技术有限公司 一种事务处理的方法及装置
US10776289B2 (en) * 2018-09-21 2020-09-15 Microsoft Technology Licensing, Llc I/O completion polling for low latency storage device
CN109445996B (zh) * 2018-11-09 2022-02-18 郑州云海信息技术有限公司 一种分配io流的方法、系统及相关组件
US10635355B1 (en) 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives
CN111796915A (zh) * 2019-04-09 2020-10-20 上海宝存信息科技有限公司 中断优化的数据储存装置以及系统
JP2021056550A (ja) 2019-09-26 2021-04-08 キオクシア株式会社 メモリシステム、メモリシステムの制御方法、および情報処理システム
CN111221755B (zh) * 2019-12-28 2020-11-10 重庆秦嵩科技有限公司 一种FPGA2子模块的io中断控制方法
CN111857996B (zh) * 2020-06-30 2023-04-07 山东云海国创云计算装备产业创新中心有限公司 一种中断处理方法、系统、设备及计算机可读存储介质
KR102549360B1 (ko) * 2020-12-14 2023-06-28 재단법인대구경북과학기술원 인터럽트 제어 장치 및 방법
KR102625723B1 (ko) * 2020-12-30 2024-01-17 재단법인대구경북과학기술원 전자 장치 및 전자 장치의 제어 방법
KR102503579B1 (ko) * 2020-12-31 2023-02-24 재단법인 대구경북과학기술원 송신 큐에 기초하여 인터럽트를 제어하는 전자 장치 및 이의 제어 방법
JP2022107229A (ja) * 2021-01-08 2022-07-21 富士通株式会社 情報処理装置、制御方法及び制御プログラム
US20220374149A1 (en) * 2021-05-21 2022-11-24 Samsung Electronics Co., Ltd. Low latency multiple storage device system
US11789654B2 (en) * 2021-09-29 2023-10-17 Western Digital Technologies, Inc. Data storage device and method for file-based interrupt coalescing

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671365A (en) * 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
JP2910694B2 (ja) 1996-09-12 1999-06-23 日本電気株式会社 I/oコントローラ
US6434630B1 (en) * 1999-03-31 2002-08-13 Qlogic Corporation Host adapter for combining I/O completion reports and method of using the same
JP2001337838A (ja) 2000-05-29 2001-12-07 Seiko Epson Corp 中央処理装置への割込信号発生装置及び割込方法
JP2002055830A (ja) 2000-05-29 2002-02-20 Seiko Epson Corp 割込信号生成装置及び割込信号の生成方法
JP2003015888A (ja) 2001-07-02 2003-01-17 Nec Eng Ltd Cpu負荷計測方式
US6792483B2 (en) * 2001-09-28 2004-09-14 International Business Machines Corporation I/O generation responsive to a workload heuristics algorithm
US7054972B2 (en) * 2002-12-13 2006-05-30 Lsi Logic Corporation Apparatus and method for dynamically enabling and disabling interrupt coalescing in data processing system
EP1661001A2 (en) 2003-08-27 2006-05-31 Philips Intellectual Property & Standards GmbH Circuit arrangement and method for supporting and monitoring a microcontroller
JP4009608B2 (ja) 2004-03-25 2007-11-21 Necエンジニアリング株式会社 監視制御装置
JP2006252015A (ja) 2005-03-09 2006-09-21 Nec Engineering Ltd データ転送制御装置
CN100428209C (zh) * 2006-12-22 2008-10-22 清华大学 一种自适应的外部存储设备io性能优化方法
WO2008114323A1 (ja) * 2007-03-20 2008-09-25 Fujitsu Microelectronics Limited プロセッサ・システム最適化支援装置、および支援方法
JP2008262370A (ja) 2007-04-11 2008-10-30 Nec Saitama Ltd 情報処理装置及び情報処理装置の監視制御方法
US7617345B2 (en) * 2007-07-02 2009-11-10 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
JP2010055296A (ja) 2008-08-27 2010-03-11 Fujitsu Ltd 負荷分散プログラム及び負荷分散装置
US8635387B2 (en) * 2009-10-09 2014-01-21 Emulex Design & Manufacturing Corporation Enhanced I/O performance in a multi-processor system via interrupt affinity schemes
CN102063335B (zh) * 2009-11-13 2014-04-02 大唐移动通信设备有限公司 中断控制器以及多核处理器共享设备中断的处理方法
US8392635B2 (en) * 2010-12-22 2013-03-05 Western Digital Technologies, Inc. Selectively enabling a host transfer interrupt
WO2013069159A1 (ja) 2011-11-11 2013-05-16 富士通株式会社 電子計算機及び割り込み制御方法
WO2013162523A1 (en) 2012-04-24 2013-10-31 Intel Corporation Dynamic interrupt reconfiguration for effective power management
CN102799392B (zh) * 2012-06-16 2015-12-16 北京忆恒创源科技有限公司 存储设备及其中断控制方法
CN102789439B (zh) 2012-06-16 2016-02-10 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法与存储设备
CN102945214B (zh) * 2012-10-19 2016-02-10 北京忆恒创源科技有限公司 基于io延迟时间分布优化中断处理任务的方法
US9298652B2 (en) * 2013-03-15 2016-03-29 Microsoft Technology Licensing, Llc Moderated completion signaling
EP3014460A4 (en) 2013-06-28 2016-11-30 Intel Corp ADAPTIVE INTERRUPTION COALESCENCE FOR MOBILE PLATFORMS WITH LOW POWER CONSUMPTION

Also Published As

Publication number Publication date
US20170336988A1 (en) 2017-11-23
US11023137B2 (en) 2021-06-01
US20210255780A1 (en) 2021-08-19
US20190272107A1 (en) 2019-09-05
CN107402894B (zh) 2022-02-11
KR20170131738A (ko) 2017-11-30
US10318174B2 (en) 2019-06-11
US11543968B2 (en) 2023-01-03
CN107402894A (zh) 2017-11-28

Similar Documents

Publication Publication Date Title
KR102649324B1 (ko) 적응 인터럽트 제어를 수행하는 컴퓨터 시스템 및 그것의 인터럽트 제어 방법
US10824564B2 (en) Operation method of memory controller and operation method of storage device including the same
CN107203337B (zh) 用户可配置的被动后台操作
US8433833B2 (en) Dynamic reassignment for I/O transfers using a completion queue
KR102098246B1 (ko) 호스트, 저장 장치, 및 이를 포함하는 시스템의 동작 방법
US20150206569A1 (en) Dynamic temperature adjustments in spin transfer torque magnetoresistive random-access memory (stt-mram)
US20140325148A1 (en) Data storage devices which supply host with data processing latency information, and related data processing methods
KR102386174B1 (ko) 키-벨류 장치를 포함하는 컴퓨터 시스템 및 그것의 인터럽트 처리 제공 방법
KR101541132B1 (ko) 크로스 바운더리 하이브리드 및 다이나믹 저장 장치 및 메모리 상황 인식 캐시 시스템
KR20180092435A (ko) 데이터 저장 장치 및 그것의 동작 방법
TWI639921B (zh) 指令處理方法及使用所述方法的儲存控制器
US20170010992A1 (en) Power saving feature for storage subsystems
US9891846B2 (en) System and method for preventing solid state drive corruption after dirty shutdown power loss
US20140129751A1 (en) Hybrid interface to improve semiconductor memory based ssd performance
WO2021174698A1 (zh) 虚拟机快照创建方法、装置、存储介质及计算机设备
US11366770B2 (en) Storage controller managing completion timing, and operating method thereof
KR102634776B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN112214095A (zh) 一种控制硬盘功耗的方法和设备
CN107852373B (zh) 用于在热约束下实现最佳性能的输入/输出流量整形的系统和方法
CN105683992A (zh) 设备启动自动冻结锁定
US20150220126A1 (en) Computing subsystem hardware recovery via automated selective power cycling
CN104011682A (zh) 应用级推测性处理
US20120331209A1 (en) Semiconductor storage system
US9996390B2 (en) Method and system for performing adaptive context switching
US9245600B2 (en) Semiconductor device and operating method thereof

Legal Events

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