KR102365113B1 - 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템 - Google Patents

적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템 Download PDF

Info

Publication number
KR102365113B1
KR102365113B1 KR1020150073927A KR20150073927A KR102365113B1 KR 102365113 B1 KR102365113 B1 KR 102365113B1 KR 1020150073927 A KR1020150073927 A KR 1020150073927A KR 20150073927 A KR20150073927 A KR 20150073927A KR 102365113 B1 KR102365113 B1 KR 102365113B1
Authority
KR
South Korea
Prior art keywords
interrupt
masking
adaptive
submission
host
Prior art date
Application number
KR1020150073927A
Other languages
English (en)
Other versions
KR20160139299A (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 KR1020150073927A priority Critical patent/KR102365113B1/ko
Priority to US15/014,639 priority patent/US10102162B2/en
Priority to CN201610357449.2A priority patent/CN106201937B/zh
Publication of KR20160139299A publication Critical patent/KR20160139299A/ko
Application granted granted Critical
Publication of KR102365113B1 publication Critical patent/KR102365113B1/ko

Links

Images

Classifications

    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

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

Abstract

적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트 및 I/O 디바이스에 관하여 개시한다. 적응적 인터럽트 처리 방법은 시스템의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입하는 단계, 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리를 수행하는 단계 및, 상기 I/O 서브미션 이벤트를 발생시키는 스레드에서 상기 인터럽트 마스킹 처리에 따라서 미처리된 인터럽트에 대한 레스폰스를 처리하는 단계를 포함한다.

Description

적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, I/O 디바이스 및 시스템{Adaptive interrupt processing method and apparatus, and host, I/O device and system adopting the same}
본 발명은 인터럽트 처리 방법 및 장치에 관한 것으로서, 자세하게는 시스템 성능을 향상시키기 위한 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트 및 I/O 디바이스에 관한 것이다.
일반적으로, I/O 디바이스를 포함하는 시스템에서 I/O 디바이스로부터 너무 많은 인터럽트가 발생되면, 호스트에서는 인터럽트를 처리하는데 지나치게 많은 CPU 사이클(cycle)이 소비된다. 이로 인하여 시스템의 성능이 저하되거나 많은 에너지가 소비되는 인터럽트 스톰(Interrupt Storm) 현상이 발생되는 문제점이 있었다.
본 발명의 목적은 인터럽트 처리에 따른 호스트의 CPU 사이클 소비를 절감하면서도 I/O 레이턴시(latency)를 낮추는 인터럽트 처리 방법을 제공하는데 있다.
본 발명의 다른 목적은 인터럽트 처리에 따른 CPU 사이클 소비를 절감하면서도 I/O 레이턴시(latency)를 낮추는 인터럽트 처리 장치를 제공하는데 있다.
본 발명의 또 다른 목적은 인터럽트 처리에 따른 CPU 사이클 소비를 절감하면서도 I/O 레이턴시(latency)를 낮추는 인터럽트 처리를 수행하는 호스트를 제공하는데 있다.
본 발명의 또 다른 목적은 인터럽트 처리에 따른 CPU 사이클 소비를 절감하면서도 I/O 레이턴시(latency)를 낮추는 인터럽트 처리를 수행하는 I/O 디바이스를 제공하는데 있다.
본 발명의 또 다른 목적은 인터럽트 처리에 따른 CPU 사이클 소비를 절감하면서도 I/O 레이턴시(latency)를 낮추는 인터럽트 처리를 수행하는 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 적응적 인터럽트 처리 방법은 시스템의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입하는 단계, 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리를 수행하는 단계 및, 상기 I/O 서브미션 이벤트를 발생시키는 스레드에서 상기 인터럽트 마스킹 처리에 따라서 미처리된 인터럽트에 대한 레스폰스를 처리하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 적응적 마스킹 모드로 진입하는 단계는 단위 시간당 인터럽트 발생 회수가 제2임계 값을 초과하는 I/O 디바이스에 대하여 상기 적응적 마스킹 모드로 진입할 수 있다.
본 발명의 실시 예에 따르면, 상기 적응적 마스킹 모드로 진입하는 단계는 호스트에 접속된 I/O 디바이스 별로 단위 시간당 인터럽트 발생 회수를 산출하는 단계 및, 상기 산출된 단위 시간당 인터럽트 발생 회수가 상기 제2임계 값을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 적응적 마스킹 모드로 진입하는 단계는 상기 호스트에 접속된 하나 이상의I/O 디바이스 중에서 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 상기 제1임계 조건을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입할 수 있다.
본 발명의 실시 예에 따르면, 상기 인터럽트 마스킹 처리를 수행하는 단계는 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 상기 인터럽트 마스킹 처리를 스킵하는 인터럽트 마스킹 디스에이블 상태로 전환시키는 동작을 더 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 인터럽트 마스킹 처리를 수행하는 단계는 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에서 I/O 서브미션 이벤트 발생 시간 간격이 상기 제1임계 값 미만인 구간에 발생되는 인터럽트 신호에 응답하여 호스트에서의 인터럽트 컨텍스트로의 전환을 차단시킬 수 있다.
본 발명의 실시 예에 따르면, 상기 인터럽트 마스킹 처리를 수행하는 단계는 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에서 I/O 서브미션 이벤트 발생 시간 간격이 상기 제1임계 값 미만인 구간에 발생되는 인터럽트 신호가 호스트의 중앙 처리 장치로 출력되는 것을 차단할 수 있다.
본 발명의 실시 예에 따르면, 상기 인터럽트 마스킹 처리를 수행하는 단계는 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 단계, 상기 I/O 서브미션 이벤트가 발생될 때마다 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대한 인터럽트 타이머를 초기 설정 값에서 동작시키는 단계 및, 상기 인터럽트 타이머의 값이 타깃 값에 도달될 때 인터럽트 마스킹 디스에이블 상태로 전환시키는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 인터럽트 마스킹 처리를 수행하는 단계는 상기 적응적 마스킹 모드로 진입된 I/O 디바이스가 상기 인터럽트 마스킹 디스에이블 상태로 전환된 후 상기 적응적 마스킹 모드로 진입된 I/O 디바이스로의 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블 상태로 다시 전환시키는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 마스킹 인에이블 상태를 유지하는 I/O 디바이스에서 발생되는 인터럽트 신호는 호스트의 중앙 처리 장치로 전달되지 않거나 상기 호스트의 중앙 처리 장치에서 무시될 수 있다.
본 발명의 실시 예에 따르면, 상기 마스킹 디스에이블 상태를 유지하는 I/O 디바이스에서 발생되는 인터럽트 신호는 호스트의 중앙 처리 장치로 전달되고, 상기 인터럽트 신호에 기초하여 상기 호스트의 중앙 처리 장치에서 인터럽트 처리를 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 인터럽트 마스킹 처리에 따라서 미처리된 인터럽트에 대한 레스폰스를 처리하는 단계는 상기 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 상기 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크와 상기 인터럽트 마스킹 처리에 따라서 미처리된 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 레스폰스를 처리하는 단계는 상기 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 상기 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크를 수행한 후에 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 미처리 레스폰스를 처리하는 태스크를 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 적응적 마스킹 모드로 진입하고 나서 상기 시스템의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하는 I/O 디바이스에 대하여 적응적 마스킹 모드로부터 일반 모드로 전환시키는 단계를 더 포함하고, 상기 일반 모드에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호에 기초하여 상기 호스트에서 인터럽트 처리를 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 일반 모드로 전환시키는 단계는 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에서 단위 시간당 발생되는 인터럽트 회수가 제3임계 값 이하인 경우에 상기 적응적 마스킹 모드로 진입된 I/O 디바이스를 상기 일반 모드로 전환시킬 수 있다.
본 발명의 실시 예에 따르면, 상기 제3임계 값은 상기 적응적 마스킹 모드로의 진입을 판단하는 제2임계 값과 같거나 작게 설정할 수 있다.
본 발명의 실시 예에 따르면, 상기 일반 모드로 전환시키는 단계는 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 상기 제2임계 조건 이내로 진입되는 I/O 디바이스에 대하여 적응적 마스킹 모드로부터 일반 모드로 전환시킬 수 있다.
발명의 기술적 사상의 다른 면에 따른 적응적 인터럽트 처리 장치는 시스템의 워크로드에 관련된 적어도 하나의 인자 값에 기초하여 I/O 디바이스에 대한 적응적 마스킹 모드 온/오프 상태를 결정하는 모드 판정부, 상기 적응적 마스킹 모드 온 상태로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 간격이 임계 간격 범위 내에 있는지를 측정하는 타이머 회로, 상기 결정된 적응적 마스킹 모드 온 상태를 유지하는 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하고, 상기 임계 간격 범위 내에서 I/O 서브미션 이벤트가 발생되지 않을 때 인터럽트 마스킹 디스에이블 상태로 전환시키는 인터럽트 마스킹 관리부 및, 상기 인터럽트 마스킹 인에이블 상태에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 호스트의 중앙 처리 장치로 출력되는 것을 차단하고, 상기 인터럽트 마스킹 디스에이블 상태에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호가 호스트의 중앙 처리 장치로 출력되는 것을 허용하는 인터럽트 출력 처리부를 포함한다.
본 발명의 실시 예에 따르면, 상기 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 상기 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크와 상기 인터럽트 마스킹 인에이블 상태인 구간에서 미처리된 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행하는 I/O 서브미션 핸들러를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 상기 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 I/O 서브미션 핸들러와 상기 I/O 서브미션 핸들러에 의한 컴플리션 큐 스누핑 동작에 기초하여 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 미처리 레스폰스를 처리하는 I/O 컴플리션 핸들러를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 모드 판정부는 호스트에 접속된 I/O 디바이스 별로 단위 시간당 인터럽트 발생 회수를 산출하고, 상기 산출된 단위 시간당 인터럽트 발생 회수가 제1임계 값을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드 온 신호를 생성하고, 상기 산출된 단위 시간당 인터럽트 발생 회수가 제1임계 값을 이하인 I/O 디바이스에 대하여 적응적 마스킹 모드 오프 신호를 생성할 수 있다.
본 발명의 실시 예에 따르면, 상기 모드 판정부는 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나의 인자 값이 초기 설정된 임계 조건을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드 온 신호를 생성하고, 그렇지 않은 I/O 디바이스에 대하여 적응적 마스킹 모드 오프 신호를 생성할 수 있다.
본 발명의 실시 예에 따르면, 상기 타이머 회로는 상기 적응적 마스킹 모드 온 상태로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때마다 초기 설정 값부터 시간을 측정하는 타이머 및, 상기 타이머의 측정 시간이 타깃 값에 도달하는 경우에 마스킹 오프 제어신호를 생성하는 후처리부를 포함하고, 상기 마스킹 오프 제어신호에 기초하여 상기 인터럽트 마스킹 관리부에서 인터럽트 마스킹 디스에이블 상태로 전환시킬 수 있다.
본 발명의 기술적 사상의 또 다른 면에 따른 호스트는 I/O 서브미션 스레드 및 상기 I/O 디바이스로부터 수신되는 인터럽트 신호에 기초한 인터럽트 루틴을 수행하는 중앙 처리 장치 및, 시스템의 워크로드 상태에 기초하여 적응적 마스킹 모드를 결정하고, 상기 적응적 마스킹 모드로 결정된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 상기 적응적 마스킹 모드로 결정된 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 중앙 처리 장치로 전달되는 것을 차단하는 인터럽트 마스킹 모드를 수행하는 적응적 인터럽트 처리 모듈을 포함하고, 상기 인터럽트 마스킹 모드 수행 구간에서 미처리된 인터럽트에 대한 레스폰스를 상기 I/O 서브미션 스레드에서 처리하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 I/O 서브미션 스레드에 따라서 발행된 커맨드 정보를 저장하는 서브미션 큐, I/O 디바이스에서 실행이 완료된 커맨드 정보를 저장하는 컴플리션 큐 및, 상기 I/O 서브미션 스레드에서 발행된 커맨드 정보를 상기 서브미션 큐에 저장하고, 상기 인터럽트 마스킹 모드 수행 구간에서 상기 컴플리션 큐에 저장된 커맨드 정보에 대한 미처리 레스폰스를 처리하는 디바이스 드라이버를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 적응적 인터럽트 처리 모듈은 시스템의 워크로드에 관련된 적어도 하나의 인자 값에 기초하여 I/O 디바이스에 대한 적응적 마스킹 모드 온/오프 상태를 결정하는 모드 판정부, 상기 적응적 마스킹 모드 온 상태로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 간격이 임계 간격 범위 내에 있는지를 측정하는 타이머 회로, 상기 결정된 적응적 마스킹 모드 온 상태를 유지하는 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하고, 상기 임계 간격 범위 내에서 I/O 서브미션 이벤트가 발생되지 않을 때 인터럽트 마스킹 디스에이블 상태로 전환시키는 인터럽트 마스킹 관리부 및, 상기 인터럽트 마스킹 인에이블 상태에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 중앙 처리 장치로 출력되는 것을 차단하고, 상기 인터럽트 마스킹 디스에이블 상태에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 중앙 처리 장치로 출력되는 것을 허용하는 인터럽트 출력 처리부를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 모드 판정부는 호스트에 접속된 I/O 디바이스 별로 단위 시간당 인터럽트 발생 회수가 제1임계 값을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드를 온 상태로 결정하고, 상기 단위 시간당 인터럽트 발생 회수가 제1임계 값을 이하인 I/O 디바이스에 대하여 적응적 마스킹 모드를 오프 상태로 결정할 수 있다.
본 발명의 기술적 사상의 또 다른 면에 따른 I/O 디바이스는 메모리 디바이스, 호스트로부터 수신되는 I/O서브미션 이벤트에 따라서 상기 메모리 디바이스에 데이터를 라이트하거나 상기 메모리 디바이스로부터 데이터를 읽어내는 동작을 수행하고, 상기 I/O 서브미션 이벤트에 대한 오퍼레이션 수행을 완료한 후에 인터럽트 신호를 발생시키는 메모리 컨트롤러 및, 단위 시간당 상기 메모리 컨트롤러에서 발생되는 인터럽트 신호의 개수가 제1임계 값을 초과하는 경우에 적응적 마스킹 모드로 결정하고, 상기 적응적 마스킹 모드에서 상기 호스트로부터 수신되는 I/O 서브미션 이벤트의 발생 시간 간격이 제2임계 값 미만인 경우에 상기 인터럽트 신호가 상기 호스트로 출력되는 것을 차단하는 인터럽트 마스킹 모드를 수행하는 적응적 인터럽트 처리 모듈을 포함한다.
본 발명의 실시 예에 따르면, 상기 적응적 인터럽트 처리 모듈은 상기 적응적 마스킹 모드에서 상기 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하고, 상기 I/O 서브미션 이벤트가 수신된 시점부터 상기 제2임계 값 이내에 새로운 I/O 서브미션 이벤트가 수신되지 않을 때 인터럽트 마스킹 디스에이블 상태로 전환시키며, 상기 인터럽트 마스킹 인에이블 상태에서는 상기 메모리 컨트롤러에서 발생되는 인터럽트 신호가 상기 호스트로 출력되는 것을 차단하고, 상기 인터럽트 마스킹 디스에이블 상태에서는 상기 메모리 컨트롤러에서 발생되는 인터럽트 신호가 상기 호스트로 출력되는 것을 허용할 수 있다.
본 발명의 실시 예에 따르면, 상기 적응적 인터럽트 처리 모듈은 상기 적응적 마스킹 모드에서 상기 I/O 서브미션 이벤트가 수신될 때마다 초기 설정 값부터 시간을 측정하는 타이머 및, 상기 타이머의 측정 시간이 타깃 값에 도달하는 경우에 상기 인터럽트 인에이블 상태에서 상기 마스킹 디스에이블 상태로 천이시키는 후처리부를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 적응적 인터럽트 처리 모듈은 상기 단위 시간당 상기 메모리 컨트롤러에서 발생되는 인터럽트 신호의 개수가 제1임계 값 이하인 경우에 일반 모드로 결정하고, 상기 일반 모드에서는 상기 인터럽트 신호가 상기 호스트로 출력되는 것을 허용할 수 있다.
본 발명의 기술적 사상의 또 다른 면에 따른 시스템은 I/O 서브미션 이벤트를 I/O 디바이스로 전송하고, 상기 I/O 디바이스로부터 수신되는 인터럽트 신호에 기초한 인터럽트 처리를 수행하는 호스트 및, 상기 호스트로부터 수신되는 I/O서브미션 이벤트에 대한 오퍼레이션을 수행하고, 상기 I/O 서브미션 이벤트에 대한 오퍼레이션 수행을 완료한 후에 인터럽트 신호를 발생시키는 하나 이상의 I/O 디바이스를 포함하고, 시스템의 워크로드에 관련된 적어도 하나의 인자 값에 기초하여 I/O 디바이스에 대한 적응적 마스킹 모드 온/오프 상태를 결정하고, 상기 적응적 마스킹 모드로 결정된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 상기 적응적 마스킹 모드로 결정된 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 호스트의 중앙 처리 장치로 전달되는 것을 차단하는 인터럽트 마스킹 모드를 수행하는 적응적 인터럽트 처리 모듈을 더 포함하고, 상기 인터럽트 마스킹 모드 수행 구간에서 미처리된 인터럽트에 대한 레스폰스를 상기 호스트의 I/O 서브미션 컨텍스트에서 처리하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 적응적 인터럽트 처리 모듈은 상기 호스트 또는 상기 하나 이상의 I/O 디바이스 중의 어느 하나에 배치될 수 있다.
본 발명의 실시 예에 따르면, 상기 호스트는 상기 I/O 서브미션 스레드에 따라서 발행된 커맨드 정보를 저장하는 서브미션 큐, I/O 디바이스에서 실행이 완료된 커맨드 정보를 저장하는 컴플리션 큐 및, 상기 I/O 서브미션 스레드에서 발행된 커맨드 정보를 상기 서브미션 큐에 저장하고, 상기 인터럽트 마스킹 모드 수행 구간에서 상기 컴플리션 큐에 저장된 커맨드 정보에 대한 미처리 레스폰스를 처리하는 디바이스 드라이버를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 적응적 인터럽트 처리 모듈은 상기 적응적 마스킹 모드에서 상기 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하고, 상기 I/O 서브미션 이벤트가 발생된 시점부터 상기 제2임계 값 이내에 새로운 I/O 서브미션 이벤트가 발생되지 않을 때 인터럽트 마스킹 디스에이블 상태로 전환시키며, 상기 인터럽트 마스킹 인에이블 상태로 진입된 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 호스트의 중앙 처리 장치로 출력되는 것을 차단하고, 상기 인터럽트 마스킹 디스에이블 상태에서는 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 호스트의 중앙 처리 장치로 출력되는 것을 허용할 수 있다.
본 발명에 따르면 I/O 디바이스의 인터럽트 처리에 있어서 단위 시간당 인터럽트 처리 회수를 감소시킬 수 있는 효과가 발생된다.
또한, 인터럽트 처리에 따른 CPU 사이클 소비를 절감시키면서도 인터럽트 레이턴시를 낮출 수 있는 효과가 발생된다. 이에 따라서, 시스템의 I/O 레이턴시가 목표 값 이상 커지는 것을 방지할 수 있는 효과가 발생된다.
도 1은 본 발명의 실시 예에 따른 제1타입의 인터럽트 코어레싱 방식에 따른 인터럽트 신호의 발생 상태를 보여준다.
도 2는 본 발명의 실시 예에 따른 제2타입의 인터럽트 코어레싱 방식에 따른 인터럽트 신호의 발생 상태를 보여준다.
도 3은 본 발명의 실시 예에 따른 제3타입의 인터럽트 코어레싱 방식에 따른 인터럽트 신호의 발생 상태를 보여준다.
도 4는 본 발명의 실시 예에 따른 제1내지 제3타입의 인터럽트 코어레싱 방식에 따라서 발생되는 인터럽트 레이턴시의 예를 보여준다.
도 5는 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 일 예를 보여준다.
도 6은 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 다른 예를 보여준다.
도 7은 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 또 다른 예를 보여준다.
도 8은 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 또 다른 예를 보여준다.
도 9는 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 또 다른 예를 보여준다.
도 10은 도 5, 도7 및 도8에 도시된 I/O 디바이스 구성의 일 예를 보여준다.
도 11은 도 10에 도시된 메모리 컨트롤러의 세부 구성을 예시적으로 보여준다.
도 12는 도 6 및 도9에 도시된 I/O 디바이스 구성의 일 예를 보여준다.
도 13은 도 12에 도시된 메모리 컨트롤러 구성의 일 예를 보여준다.
도 14는 도 12에 도시된 메모리 컨트롤러 구성의 다른 예를 보여준다.
도 15는 도 10 및 도 12에 도시된 비휘발성 메모리 칩의 구성을 예시적으로 보여준다.
도 16은 도 15에 도시된 메모리 셀 어레이의 일 예를 나타낸다.
도 17은 도 15에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예를 나타내는 회로도이다.
도 18은 본 발명의 실시 예에 따른 적응적 인터럽트 처리 장치의 구성을 예시적으로 보여준다.
도 19는 본 발명의 실시 예에 따른 적응적 인터럽트 처리 장치를 적용하는 호스트의 주요 구성을 보여주는 도면이다.
도 20은 본 발명의 실시 예에 따른 시스템에서의 인터럽트 마스킹 인에이블 상태에서의 인터럽트 처리 과정을 보여주는 도면이다.
도 21은 본 발명의 실시 예에 따른 적응적 인터럽트 처리 동작을 설명하기 위한 주요 신호들에 대한 타이밍 차트이다.
도 22는 본 발명의 실시 예에 따른 적응적 인터럽트 처리 방법을 적용한 경우의 인터럽트 레이턴시의 사례를 보여준다.
도 23은 본 발명의 실시 예에 따른 적응적 인터럽트 처리 방법의 흐름도를 보여준다.
도 24는 도 23에 도시된 적응적 마스킹 모드 진입 처리 단계에 대한 세부 흐름도를 예시적으로 보여준다.
도 25는 도 23에 도시된 인터럽트 마스킹 처리 단계에 대한 세부 흐름도를 예시적으로 보여준다.
도 26은 도 23에 도시된 미처리 인터럽트에 대한 레스폰스 처리 단계에 대한 세부 흐름도를 예시적으로 보여준다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
호스트와 하나 이상의 I/O 디바이스로 구성되는 시스템에서 I/O 디바이스로부터 너무 많은 인터럽트가 발생되어 시스템 성능의 저하를 야기시키는 인터럽트 스톰(Interrupt Storm) 현상을 개선하기 위하여 본 발명에서 제안하는 몇 가지 타입의 인터럽트 코어레싱(Interrupt Coalescing) 방식의 개념에 대하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 제1타입의 인터럽트 코어레싱 방식에 따른 인터럽트 신호의 발생 상태를 보여준다.
제1타입의 인터럽트 코어레싱 방식은 인터럽트 회수에 따라서 여러 인터럽트를 모아서 한번의 인터럽트만 발생시키는 인터럽트 처리 방식이다. 세부적으로, 제1타입의 인터럽트 코어레싱 방식은 I/O 디바이스 내부의 인터럽트 발생 회수를 카운팅하여, 카운팅 값이 특정 값에 도달되면 호스트로 인터럽트 신호를 전달하는 방식이다.
예로서, 도 1에서는 I/O 디바이스 내부의 인터럽트를 10개씩 모아서 한 번의 외부 인터럽트 신호를 발생시켜 호스트로 전달하는 사례를 보여준다. 즉, I/O 디바이스 내부의 인터럽트 발생 회수가 10, 20, 30에 도달될 때마다 외부 인터럽트 신호를 발생시켜 호스트로 전달한다. 이에 따라서, 인터럽트 회수 절감 비율이 10:1이 된다.
제1타입의 인터럽트 코어레싱 방식은 내부 인터럽트 발생 빈도가 낮을 경우에 일부 내부 인터럽트와 외부 인터럽트 사이의 레이턴시(latency)가 커져서, 일부 인터럽트의 처리 지연이 커질 수 있는 단점이 있다.
도 2는 본 발명의 실시 예에 따른 제2타입의 인터럽트 코어레싱 방식에 따른 인터럽트 신호의 발생 상태를 보여준다.
제2타입의 인터럽트 코어레싱 방식은 일정 시간 단위(TX)로 여러 인터럽트를 모아서 한번의 인터럽트만 발생시키는 인터럽트 처리 방식이다. 즉, 첫 번째 내부 인터럽트 발생 시점부터 내부적으로 시간을 측정하고 있다가 특정 시간이 초과되면 외부에 인터럽트를 전달하는 방식이다.
예로서, 도 2에서는 첫 번째 내부 인터럽트 발생 시점부터 단위 시간(TX) 이후에 외부 인터럽트 신호를 발생시켜 호스트로 전달하는 사례를 보여준다.
제2타입의 인터럽트 코어레싱 방식은 내부 인터럽트 발생 빈도가 낮을 경우에 인터럽트 절감 효율이 낮아지는 단점이 있다. 또한, 내부 인터럽트와 외부 인터럽트 사이의 레이턴시(latency)가 일정 시간 단위까지 커져서, 일부 인터럽트의 처리 지연이 커질 수 있는 단점이 있다.
도 3은 본 발명의 실시 예에 따른 제3타입의 인터럽트 코어레싱 방식에 따른 인터럽트 신호의 발생 상태를 보여준다.
제3타입의 인터럽트 코어레싱 방식은 위의 제1,2타입의 인터럽트 코어레싱 방식을 혼용하는 하이브리드(hybrid) 방식이다.
예로서, 도 3에는 내부 인터럽트 회수에 따라서 10:1로 인터럽트 코어레싱을 수행하되, 첫 번째 내부 인터럽트 발생시점부터 단위 시간(TX)이 경과하면 내부 인터럽트 발생 회수와 상관없이 외부에 인터럽트를 발생시키는 사례를 보여준다.
이와 같은 제1타입 내지 제3타입의 인터럽트 코어레싱 방식들은 외부 인터럽트 발생 회수를 줄이는 측면에서는 효율적이나, 일부 내부 인터럽트의 레이턴시가 커질 수 있는 단점을 내포하고 있다.
도 4는 본 발명의 실시 예에 따른 제1내지 제3타입의 인터럽트 코어레싱 방식에 따라서 발생되는 인터럽트 레이턴시의 예를 보여준다. 도 4를 참조하면, 각각의 인터럽트 이벤트들에 대한 인터럽트 레이턴시 차가 크게 발생된다는 것을 알 수 있다.
본 발명에서는 위와 같은 제1내지 제3타입의 인터럽트 코어레싱 방식의 단점을 개선하기 위하여 다음과 같은 적응적 인터럽트 처리 방식을 제안한다.
본 발명에서 새로 제안하는 적응적 인터럽트 처리 방식은 기본적인 개념은 다음과 같다.
첫 번째, 인터럽트 발생 회수가 적은 경우에는 인터럽트에 의한 호스트의 CPU 사이클 소모가 낮아서 인터럽트 처리가 시스템에 미치는 부담이 적다. 따라서, 이러한 경우에는 인터럽트 레이턴시를 증가시키는 인터럽트 코어레싱 기법 자체를 사용하지 않는다.
두 번째, I/O 디바이스의 인터럽트 발생 회수가 많은 이유는 호스트에서 I/O 커맨드 서브미션(command submission)을 빈번하게 발생했기 때문이다. I/O 디바이스는 수동적인(passive) 디바이스로서 호스트로부터 커맨드가 많이 들어와야 인터럽트 이벤트를 많이 발생시킨다. 따라서, I/O 커맨드 서브미션(command submission)의 발생 시간 간격에 기초하여 인터럽트 마스킹 제어를 수행한다.
세 번째, 호스트에서 인터럽트 처리 작업은 반드시 인터럽트 핸들러 컨텍스트(interrupt handler context)에서 처리될 필요가 없다. 이에 따라서, I/O 커맨드 서브미션을 수행하는 스레드 컨텍스트(thread context)에서 인터럽트 처리 작업을 수행한다. 예를 들어, PCIe SSD 표준인 NVMe 표준에 따르면 I/O 서브미션은 서브미션 큐(submission queue; SQ)에 커맨드를 삽입하는 작업으로 수행되고, 인터럽트 처리, 즉 response 처리는 컴플리션 큐(completion queue; CQ)에서 관련 레스폰스를 디큐(dequeue)하여 처리하는 작업으로 수행된다. 따라서, 본 발명에서 제안하는 적응적 인터럽트 처리 방식에서는 I/O 서브미션을 수행하는 스레드에서 서브미션 큐에 커맨드를 삽입한 다음에, 컨텍스트의 스위칭 없이 같은 컨텍스트에서 컴플리션 큐에 있는 미처리 레스폰스를 처리한다.
그러면, 이와 같은 적응적 인터럽트 처리 방식에 대하여 상세히 설명하기로 한다.
도 5는 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 일 예(1000A)를 보여준다.
도 5에 도시된 바와 같이, 컴퓨팅 시스템(1000A)은 호스트(100A) 및 I/O 디바이스(200A)를 포함한다.
예로서, 컴퓨팅 시스템(1000A)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치, 스마트 카드 시스템 등이 될 수도 있다. 그리고, I/O 디바이스(200A)는 메모리 디바이스, SSD(Solid State Drive), 스마트 카드 등이 될 수 있다.
호스트(100A)와 I/O 디바이스(200A)는 전기적으로 연결되어 있다. 호스트(100A)와 I/O 디바이스(200A) 사이에서 이용되는 인터페이스 다양한 인터페이스 규격이 적용될 수 있다. 예로서, UFS(Universal Flash Storage) 인터페이스, eMMC(embedded Multi-Media Card) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, SATAe(Serial Advanced Technology Attachment express) 인터페이스, SCSI(Small Computer System Interface), SCSIe(Small Computer System Interface express), NVMe(Non-Volatile Memory express) 인터페이스, PCI(Peripheral Component Interconnect) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스 등이 적용될 수 있다.
호스트(100A)는 수행하고자 하는 태스크에 기초하여 발행되는 커맨드(CMD)를 I/O 디바이스(200A)로 전송한다. 예로서, 호스트(100A)에서 발행되는 커맨드(CMD)는 라이트 커맨드 또는 리드 커맨드가 포함될 수 있다. 그리고, 호스트(100A)는 I/O 디바이스(200A)에 저장할 데이터(DATA)를 전송하거나, I/O 디바이스(200A)로부터 읽어낸 데이터(DATA)를 수신한다. I/O 디바이스(200A)는 호스트(100A)로부터 수신된 커맨드에 대한 실행을 완료한 후에는 인터럽트 신호(INT)를 호스트(100A)로 전송한다.
호스트(100A)는 적응적 인터럽트 처리 모듈(AIPM; 101)을 포함한다. 적응적 인터럽트 처리 모듈(110)은 예로서, 도 23 내지 도 26의 흐름도를 수행하기 위한 소프트웨어 또는 하드웨어를 포함할 수 있다.
적응적 인터럽트 처리 모듈(101)은 컴퓨팅 시스템(1000A)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 I/O 디바이스(200A)에 대하여 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션, 적응적 마스킹 모드로 진입된 I/O 디바이스(200A)에 대하여 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션을 지원한다.
예로서, 적응적 인터럽트 처리 모듈(101)은 단위 시간당 I/O 디바이스(200A)로부터 수신된 인터럽트 신호(INT)의 발생 회수가 제2임계 값을 초과하는 경우에, 해당 I/O 디바이스(200A)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(101)은 호스트(100A)의 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 제1임계 조건을 초과하는 I/O 디바이스(200A)에 대하여 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(101)은 적응적 마스킹 모드로 진입된 I/O 디바이스(200A)에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블(interrupt masking enable) 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 오퍼레이션을 수행한다. 그리고, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 인터럽트 마스킹 처리를 스킵(skip)하는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태로 전환시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(101)은 적응적 마스킹 모드로 진입된 I/O 디바이스(200A)에서 인터럽트 마스킹 디스에이블 상태로 전환된 후 호스트(100B)에서 I/O 디바이스(200A)에 대한 I/O 서브미션 이벤트가 발생될 때 I/O 디바이스(200A)를 인터럽트 마스킹 인에이블 상태로 다시 전환시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(101)은 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스(200A)로부터 수신되는 인터럽트 신호(INT)를 무시한다. 즉, 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스(200A)로부터 수신되는 인터럽트 신호(INT)에 응답하여 호스트(100A)에서 인터럽트 컨텍스트로 전환되는 것을 차단한다.
예로서, 적응적 인터럽트 처리 모듈(101)은 마스킹 디스에이블 상태를 유지하는 I/O 디바이스(200A)에서 발생되는 인터럽트 신호(INT)에 대해서는 호스트에서 정상적으로 인터럽트 처리를 하는 오퍼레이션을 수행한다. 즉, 호스트(100A)는 인터럽트 마스킹 디스에이블 상태에 있는 I/O 디바이스(200A)로부터 수신되는 인터럽트 신호(INT)에 응답하여 인터럽트 컨텍스트로 전환되어 인터럽트 처리 루틴을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(101)은 적응적 마스킹 모드로 진입된 후에 호스트(100A)의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하면 적응적 마스킹 모드로부터 일반 모드로 전환시키는 오퍼레이션을 수행한다. 세부적으로, 적응적 마스킹 모드로 진입된 I/O 디바이스(200A)에서 단위 시간당 발생되는 인터럽트 회수가 제3임계 값 이하인 경우에 적응적 마스킹 모드로 진입된 I/O 디바이스(200A)를 일반 모드로 전환시킨다. 여기에서, 일반 모드는 인터럽트 신호에 대하여 마스킹 처리를 하지 않는 언마스킹 모드(unmasking mode)에 해당된다.
호스트(100A)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크와 인터럽트 마스킹 처리에 따라서 미처리된 I/O 디바이스(200A)의 내부 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행하는 기능을 지원한다. 예로서, 호스트(100A)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크를 수행한 후에, 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 I/O 디바이스(200A)의 내부 인터럽트에 대한 미처리 레스폰스를 처리하는 태스크를 수행한다.
예로서, 일반 모드에서 적응적 마스킹 모드로의 천이를 판정하는데 사용되는 제2임계 값과 적응적 마스킹 모드에서 일반 모드로의 천이를 판정하는 사용되는 제3임계 값을 같게 설정할 수 있다.
다른 예로서, 제3임계 값을 제2임계 값보다 작게 설정할 수도 있다. 이와 같이, 제3임계 값을 제2임계 값보다 작게 설정하는 이유는 I/O 디바이스(200A)에서 단위 시간당 발생되는 인터럽트 회수가 제2임계 값을 약간 초과하거나 미만으로 변동되는 경우에 적응적 마스킹 모드와 일반 모드가 자주 스위칭 되는 것을 방지하기 위함이다.
도 6은 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 다른 예(1000B)를 보여준다.
도 6에 도시된 바와 같이, 컴퓨팅 시스템(1000B)는 호스트(100B) 및 I/O 디바이스(200B)를 포함한다.
참고적으로, 도 5에 도시된 컴퓨터 시스템(1000A)에서는 적응적 인터럽트 처리 모듈(101)이 호스트(100A)에 배치되는데 비하여, 도 6에 도시된 컴퓨터 시스템(1000B)에서는 적응적 인터럽트 처리 모듈(201)이 I/O 디바이스(200B)에 배치된다.
예로서, 컴퓨팅 시스템(1000B)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치, 스마트 카드 시스템 등이 될 수도 있다. 그리고, I/O 디바이스(200B)는 메모리 디바이스, SSD(Solid State Drive), 스마트 카드 등이 될 수 있다.
호스트(100B)와 I/O 디바이스(200B)는 전기적으로 연결되어 있다. 호스트(100A)와 I/O 디바이스(200A) 사이에서 이용되는 인터페이스 다양한 인터페이스 규격이 적용될 수 있다. 예로서, UFS(Universal Flash Storage) 인터페이스, eMMC(embedded Multi-Media Card) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, SATAe(Serial Advanced Technology Attachment express) 인터페이스, SCSI(Small Computer System Interface), SCSIe(Small Computer System Interface express), NVMe(Non-Volatile Memory express) 인터페이스, PCI(Peripheral Component Interconnect) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스 등이 적용될 수 있다.
호스트(100B)는 수행하고자 하는 태스크에 기초하여 발행되는 커맨드(CMD)를 I/O 디바이스(200B)로 전송한다. 예로서, 호스트(100B)에서 발행되는 커맨드(CMD)는 라이트 커맨드 또는 리드 커맨드가 포함될 수 있다. 그리고, 호스트(100A)는 I/O 디바이스(200A)에 저장할 데이터(DATA)를 전송하거나, I/O 디바이스(200A)로부터 읽어낸 데이터(DATA)를 수신한다. I/O 디바이스(200B)는 호스트(100B)로부터 수신된 커맨드에 대한 실행을 완료한 후에는 인터럽트 신호(INT)를 호스트(100B)로 전송한다.
I/O 디바이스(200B)는 적응적 인터럽트 처리 모듈(AIPM; 201)을 포함한다. 적응적 인터럽트 처리 모듈(201)은 예로서, 도 23 내지 도 26의 흐름도를 수행하기 위한 소프트웨어 또는 하드웨어를 포함할 수 있다.
예로서, 적응적 인터럽트 처리 모듈(201)은 컴퓨팅 시스템(1000B)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 I/O 디바이스(200B)에 대하여 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션, 적응적 마스킹 모드로 진입된 I/O 디바이스(200B)에 대한 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션을 지원한다. 다른 예로서, 적응적 인터럽트 처리 모듈(201)은 컴퓨팅 시스템(1000B)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 I/O 디바이스(200B)에 대하여 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션 및 적응적 마스킹 모드로 진입된 I/O 디바이스(200B)에 대한 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션을 지원하도록 설계한다. 그리고, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션은 호스트(100B)에서 지원하도록 설계할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(201)은 단위 시간당 I/O 디바이스(200B)에서 처리된 이벤트에 따른 내부 인터럽트 신호(INT_IN)의 발생 회수가 제2임계 값을 초과하는 경우에, I/O 디바이스(200B)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(201)은 호스트(100B)의 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 제1임계 조건을 초과하는 경우에, I/O 디바이스(200B)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(201)은 적응적 마스킹 모드로 진입된 I/O 디바이스(200B)로 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블(interrupt masking enable) 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 오퍼레이션을 수행한다. 그리고, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트가 수신되는 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 수신되지 않으면, 인터럽트 마스킹 처리를 스킵(skip)하는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태로 전환시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(201)은 적응적 마스킹 모드로 진입된 I/O 디바이스(200B)가 인터럽트 마스킹 디스에이블 상태로 전환된 후 호스트(100B)로부터 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블 상태로 다시 전환시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(201)은 인터럽트 마스킹 인에이블 상태에서는 I/O 디바이스(200B)에서 발생되는 내부 인터럽트 신호(INT_IN)가 호스트(100B)로 출력되는 것을 차단한다. 그리고, 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태에서는 I/O 디바이스(200B)에서 발생되는 내부 인터럽트 신호(INT_IN)가 호스트(100B)로 출력되는 것을 허용한다. 즉, I/O 디바이스(200B)로부터 호스트(100B)로 출력되는 외부 인터럽트 신호(INT_EX)는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태에서 I/O 디바이스(200B)에서 발생되는 내부 인터럽트 신호(INT_IN)가 된다.
예로서, 적응적 인터럽트 처리 모듈(201)은 적응적 마스킹 모드로 진입된 후에 호스트(100B)의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하면 I/O 디바이스(200B)를 적응적 마스킹 모드로부터 일반 모드로 전환시키는 오퍼레이션을 수행한다. 세부적으로, 적응적 마스킹 모드로 진입된 I/O 디바이스(200B)에서 단위 시간당 발생되는 내부 인터럽트(INT_IN) 회수가 제3임계 값 이하인 경우에 적응적 마스킹 모드로 진입된 I/O 디바이스(200B)를 일반 모드로 전환시킨다.
호스트(100B)는 I/O 디바이스(200B)로부터 수신되는 인터럽트 신호(INT)에 기초하여 인터럽트 처리를 하는 오퍼레이션을 수행한다. I/O 디바이스(200B)로부터 수신되는 인터럽트 신호(INT)는 위에서 언급한 바와 같이, 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태에서 I/O 디바이스(200B)에서 출력되는 외부 인터럽트 신호(INT_EX)이다. 예로서, 호스트(100B)는 인터럽트 신호(INT)가 수신되면, 현재 수행 중인 컨텍스트를 중단하고 인터럽트 컨텍스트로 전환하여 인터럽트 처리 루틴을 수행한다.
호스트(100B)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크와 인터럽트 마스킹 처리에 따라서 미처리된 I/O 디바이스(200B)의 내부 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행하는 기능을 지원한다. 예로서, 호스트(100B)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크를 수행한 후에, 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 I/O 디바이스(200B)의 내부 인터럽트에 대한 미처리 레스폰스를 처리하는 태스크를 수행한다.
도 7은 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 또 다른 예(2000A)를 보여준다.
도 7에 도시된 바와 같이, 컴퓨팅 시스템(2000A)는 호스트(2100A)와 I/O 디바이스 블록(2200A)을 구비한다.
호스트(2100A)는 프로세서(2110A), 메모리(2120A), I/O 제어기(2130A), I/O 브리지(2140A), 호스트 버스(2150A) 및 I/O 버스(2160A)를 포함한다. I/O 디바이스 블록(2200A)에는 복수개의 I/O 디바이스들(2210-1 ~ 2210-M)이 포함되어 있다.
예로서, 컴퓨팅 시스템(2000A)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치, 스마트 카드 시스템, 서버 시스템 등이 될 수도 있다. 그리고, I/O 디바이스 블록(2200A)에 포함된 I/O 디바이스들(2210-1 ~ 2210-M)은 메모리 디바이스, SSD(Solid State Drive), 스마트 카드 등이 포함될 될 수 있다.
프로세서(2110A)는 컴퓨팅 시스템(2000A)의 구성 수단들의 동작들의 제어를 수행하기 위한 회로, 인터페이스들 또는 프로그램 코드를 포함할 수 있다. 예로서, 프로세서(2110A)는 CPU, ARM, 또는 주문형 반도체(ASIC: application specific integrated circuit)를 포함할 수 있다.
메모리(2120A)는 컴퓨팅 시스템(2000A)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM을 포함할 수 있다. 또한, 비휘발성 메모리를 포함할 수도 있다. 메모리(2120A)에는 도 23 내지 도 26의 흐름도에 따른 적응적 인터럽트 처리 방법을 수행하기 위한 소프트웨어 프로그램 (AIPM_SW; 2120A-1)이 저장되어 있다.
프로세서(2110A)는 메모리(2120A)에 저장된 프로그램들을 구동시켜서 컴퓨팅 시스템(2000A)의 구성 수단들의 동작을 제어할 수 있다. 예로서, 프로세서(2110A)는 메모리(2120A)에 저장된 프로그램(AIPM_SW; 2120A-1)을 구동시켜서 도 23 내지 도 26의 흐름도를 따른 적응적 인터럽트 처리를 수행할 수 있다.
I/O 제어기(2130A)는 I/O 디바이스 블록(2200A)의 I/O 디바이스들(2210-1 ~ 2210-M)을 제어하는 동작을 수행한다. I/O 제어기(2130A)는 프로세서(2110A)로부터 I/O 커맨드를 수신하고, 수신된 I/O 커맨드에 기초하여 I/O 디바이스들(2210-1 ~ 2210-M)을 제어한다. 그리고, I/O 제어기(2130A)는 I/O 디바이스들(2210-1 ~ 2210-M)로부터 수신된 인터럽트 신호를 프로세서(2110A)로 전달한다.
호스트 버스(2150A)에는 호스트(2100A) 구성 수단들이 전기적으로 접속되어 있다. 호스트 버스(2150A)를 통하여 호스트(2100A) 구성 수단들 간의 데이터 및 신호들을 주고 받을 수 있다.
I/O 브리지(2140A)는 호스트(2100A)와 I/O 디바이스들(2210-1 ~ 2210-M) 간의 데이터 통신을 위한 채널을 제어하는 동작을 수행한다. I/O 버스(2160A)는 I/O 디바이스들(2210-1 ~ 2210-M)이 전기적으로 접속되어 있다. 예로서, I/O 브리지(2140A) 및 I/O 버스(2160A)는 각각 PCIe 브리지 및 PCIe 버스로 구현할 수 있다.
I/O 버스(2160A)를 통하여 호스트(2100A)와 I/O 디바이스들(2210-1 ~ 2210-M) 간에 데이터 및 신호들을 주고 받을 수 있다. 예로서, 호스트(2100A)는 I/O 버스(2160A)를 통하여 I/O 디바이스들(2210-1 ~ 2210-M)로부터 인터럽트 신호를 수신할 수 있다.
I/O 디바이스들(2210-1 ~ 2210-M)은 호스트(2100A)로부터 수신된 I/O 커맨드 처리를 마친 후에 인터럽트 신호를 호스트(2100A)로 전송한다.
I/O 디바이스들(2210-1 ~ 2210-M)로부터 수신되는 인터럽트 신호는 I/O 브리지(2140A) 및 I/O 제어기(2130A)를 통하여 프로세서(2110A)로 전달된다.
프로세서(2110A)는 메모리(2120A)에 저장된 프로그램(AIPM_SW; 2120A-1)을 구동시켜서 다음과 같은 적응적 인터럽트 처리를 수행한다.
프로세서(2110A)는 호스트(2100A)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션, 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션을 수행한다.
예로서, 프로세서(2110A)는 단위 시간당 I/O 디바이스들(2210-1 ~ 2210-M) 각각으로부터 수신된 인터럽트 신호(INT)의 발생 회수와 제2임계 값을 비교하고, 단위 시간당 인터럽트 신호(INT)의 발생 회수가 제2임계 값을 초과하는 I/O 디바이스(2210-K)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행한다. 다른 예로서, 프로세서(2110A)는 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 제1임계 조건을 초과하는 I/O 디바이스(2210-K)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행할 수도 있다.
예로서, 프로세서(2110A)는 적응적 마스킹 모드로 진입된 I/O 디바이스(2210-K)에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블(interrupt masking enable) 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 오퍼레이션을 수행한다. 그리고, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, I/O 디바이스(2210-K)에 대하여 인터럽트 마스킹 처리를 스킵(skip)하는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태로 전환시키는 오퍼레이션을 수행한다.
예로서, 프로세서(2110A)는 적응적 마스킹 모드로 진입된 I/O 디바이스(2210-K)에서 인터럽트 마스킹 디스에이블 상태로 전환된 후 I/O 디바이스(2210-K)에 대한 I/O 서브미션 이벤트가 발생될 때, I/O 디바이스(2210-K)를 인터럽트 마스킹 인에이블 상태로 다시 전환시키는 오퍼레이션을 수행한다.
예로서, 프로세서(2110A)는 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스(2210-K)로부터 수신되는 인터럽트 신호(INT)를 무시한다. 즉, 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스(2210-K)로부터 수신되는 인터럽트 신호(INT)에 응답하여 인터럽트 컨텍스트로 전환되는 것을 차단한다.
예로서, 프로세서(2110A)는 마스킹 디스에이블 상태를 유지하는 I/O 디바이스(2210-K)에서 발생되는 인터럽트 신호(INT)에 대해서는 정상적으로 인터럽트 처리를 수행한다. 즉, 프로세서(2110A)는 인터럽트 마스킹 디스에이블 상태에 있는 I/O 디바이스(2210-K)로부터 수신되는 인터럽트 신호(INT)에 응답하여 인터럽트 컨텍스트로 전환되어 인터럽트 처리 루틴을 수행한다.
예로서, 프로세서(2110A)는 I/O 디바이스(2210-K)가 적응적 마스킹 모드로 진입된 후에 호스트(2100A)의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하면, I/O 디바이스(2210-K)를 적응적 마스킹 모드로부터 일반 모드로 전환시키는 오퍼레이션을 수행한다. 세부적으로, 적응적 마스킹 모드로 진입된 I/O 디바이스(2210-K)에서 단위 시간당 발생되는 인터럽트 회수가 제3임계 값 이하인 경우에 I/O 디바이스(2210-K)를 일반 모드로 전환시킨다.
그리고, 프로세서(2110A)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크와 인터럽트 마스킹 처리에 따라서 미처리된 I/O 디바이스(2210-K)의 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행한다. 예로서, 프로세서(2110A)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크를 수행한 후에, 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 I/O 디바이스(2210-K)의 인터럽트에 대한 미처리 레스폰스를 처리하는 태스크를 수행한다.
도 8은 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 또 다른 예(2000B)를 보여준다.
도 8에 도시된 바와 같이, 컴퓨팅 시스템(2000B)는 호스트(2100B)와 I/O 디바이스 블록(2200B)을 구비한다.
호스트(2100B)는 프로세서(2110B), 메모리(2120B), I/O 제어기(2130B), I/O 브리지(2140B), 호스트 버스(2150B) 및 I/O 버스(2160B)를 포함한다. I/O 디바이스 블록(2200B)에는 복수개의 I/O 디바이스들(2210-1 ~ 2210-M)이 포함되어 있다.
도 8에 도시된 컴퓨팅 시스템(2000B)에서는 I/O 제어기(2130B)에 적응적 인터럽트 처리 모듈(AIPM; 2130B-1)을 배치하였다. 참고적으로, 도 7에 도시된 컴퓨팅 시스템(2000A)에서는 메모리(2120A)에 저장된 프로그램(AIPM_SW; 2120A-1)을 이용하여 적응적 인터럽트 처리를 수행한다.
그러면, 도 7에 도시된 컴퓨팅 시스템(2000A)의 구성에 비하여 차이가 나는 프로세서(2110B) 및 I/O 제어기(2130B)를 중심으로 설명하기로 한다.
I/O 제어기(2130B)에 배치된 적응적 인터럽트 처리 모듈(2130B-1)은 도 23 내지 도 26의 흐름도를 수행하기 위한 소프트웨어 또는 하드웨어를 포함할 수 있다.
예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 호스트(2100B)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션, 적응적 마스킹 모드로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션을 수행한다. 다른 예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 호스트(2100B)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우에 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션 및 적응적 마스킹 모드로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션을 수행한다. 그리고, 프로세서(2110B)에 의하여 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션을 수행할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 단위 시간당 I/O 디바이스들(2210-1 ~ 2210-M) 각각으로부터 수신된 인터럽트 신호(INT)의 발생 회수와 제2임계 값을 비교하고, 단위 시간당 인터럽트 신호(INT)의 발생 회수가 제2임계 값을 초과하는 I/O 디바이스(2210-K)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행한다. 다른 예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 제1임계 조건을 초과하는 I/O 디바이스(2210-K)를 적응적 마스킹 모드로 진입시킬 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 적응적 마스킹 모드로 진입된 I/O 디바이스(2210-K)에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블(interrupt masking enable) 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 오퍼레이션을 수행한다. 그리고, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, I/O 디바이스(2210-K)에 대하여 인터럽트 마스킹 처리를 스킵(skip)하는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태로 전환시킨다.
예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 적응적 마스킹 모드로 진입된 I/O 디바이스(2210-K)에서 인터럽트 마스킹 디스에이블 상태로 전환된 후 프로세서(2100B)로부터 I/O 디바이스(2210-K)에 대한 I/O 서브미션 이벤트가 수신될 때, I/O 디바이스(2210-K)를 인터럽트 마스킹 인에이블 상태로 다시 전환시킨다.
예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스(2210-K)로부터 수신되는 인터럽트 신호(INT)를 마스킹 처리한다. 즉, 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스(2210-K)로부터 수신되는 인터럽트 신호(INT)가 프로세서(2110B)로 출력되는 것을 차단한다.
예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 마스킹 디스에이블 상태를 유지하는 I/O 디바이스(2210-K)에서 발생되는 인터럽트 신호(INT)를 프로세서(2110B)로 전달한다. 이에 따라서, 프로세서(2110B)는 인터럽트 마스킹 디스에이블 상태에 있는 I/O 디바이스(2210-K)로부터 수신되는 인터럽트 신호(INT)에 응답하여 인터럽트 컨텍스트로 전환되어 인터럽트 처리 루틴을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(2130B-1)은 I/O 디바이스(2210-K)가 적응적 마스킹 모드로 진입된 후에 호스트(2100B)의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하면, I/O 디바이스(2210-K)를 적응적 마스킹 모드로부터 일반 모드로 전환시키는 오퍼레이션을 수행한다. 세부적으로, 적응적 마스킹 모드로 진입된 I/O 디바이스(2210-K)에서 단위 시간당 발생되는 인터럽트 회수가 제3임계 값 이하인 경우에 I/O 디바이스(2210-K)를 일반 모드로 전환시킨다.
그리고, 적응적 인터럽트 처리 모듈(2130B-1)은 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크와 인터럽트 마스킹 처리에 따라서 미처리된 I/O 디바이스(2210-K)의 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행한다. 다른 예로서, 프로세서(2110B)가 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크를 수행한 후에, 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 I/O 디바이스(2210-K)의 인터럽트에 대한 미처리 레스폰스를 처리하는 태스크를 수행할 수도 있다.
도 9는 발명의 실시 예에 따른 컴퓨팅 시스템 구성의 또 다른 예(2000C)를 보여준다.
도 9에 도시된 바와 같이, 컴퓨팅 시스템(2000C)는 호스트(2100C)와 I/O 디바이스 블록(2200C)을 구비한다.
호스트(2100C)는 프로세서(2110C), 메모리(2120C), I/O 제어기(2130C), I/O 브리지(2140C), 호스트 버스(2150C) 및 I/O 버스(2160C)를 포함한다. I/O 디바이스 블록(2200C)에는 복수개의 I/O 디바이스들(2210-1 ~ 2210-M)이 포함되어 있다.
도 7 및 도 8에 도시된 컴퓨팅 시스템들(2000A, 2000B)에서는 적응적 인터럽트 처리를 수행하기 위한 프로그램(AIPM_SW; 2120A-1) 또는 적응적 인터럽트 처리 모듈(AIPM; 2130B-1)을 호스트(2100A, 2100B)에 배치하였다. 이에 비하여, 도 9에 도시된 컴퓨팅 시스템(2000C)에서는 I/O 디바이스들(2210-1 ~ 2210-M) 각각에 적응적 인터럽트 처리 모듈들(AIPM-1 ~ AIPM-M; 2211-1 ~ 2211-M)을 배치하였다.
도 9에 도시된 호스트(2100C)를 구성하는 구성 요소들에 대한 기본적인 동작은 도 7 및 8과 동일하므로 중복적인 설명은 피하기로 한다.
우선, I/O 디바이스들(2210-1 ~ 2210-M) 각각에 배치된 적응적 인터럽트 처리 모듈들(2211-1 ~ 2211-N) 각각은 다음과 같이 동작한다.
설명의 편의를 위하여 I/O 디바이스(2210-K)의 적응적 인터럽트 처리 모듈(AIPM-K; 2211-K)에서 수행되는 동작에 대하여 설명하기로 한다.
적응적 인터럽트 처리 모듈(2211-K)은 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우에 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션, 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션을 지원한다. 다른 예로서, 적응적 인터럽트 처리 모듈(2211-K)은 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우에 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션 및 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션을 지원하도록 설계한다. 그리고, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션은 호스트(2100C)의 프로세서(2110C)에서 지원하도록 설계할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(2211-K)은 단위 시간당 I/O 디바이스(2210-K)에서 처리된 이벤트에 따른 내부 인터럽트 신호(INT_IN)의 발생 회수가 제2임계 값을 초과하는 경우에, I/O 디바이스(2210-K)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(2211-K)은 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 제1임계 조건을 초과하는 경우에, I/O 디바이스(2210-K)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(2211-K)은 적응적 마스킹 모드로 진입된 후에 호스트(2100C)로부터 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블(interrupt masking enable) 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 오퍼레이션을 수행한다. 그리고, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트가 수신되는 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 수신되지 않으면, 인터럽트 마스킹 처리를 스킵(skip)하는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태로 전환시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(2211-K)은 적응적 마스킹 모드로 진입된 구간에서 인터럽트 마스킹 디스에이블 상태로 전환된 후 호스트(2100C)로부터 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블 상태로 다시 전환시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(2211-K)은 인터럽트 마스킹 인에이블 상태에서는 I/O 디바이스(2210-K)에서 발생되는 내부 인터럽트 신호(INT_IN)가 호스트(2100C)로 출력되는 것을 차단한다. 그리고, 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태에서는 I/O 디바이스(2210-K)에서 발생되는 내부 인터럽트 신호(INT_IN)가 호스트(2100C)로 출력되는 것을 허용한다. 즉, I/O 디바이스(2210-K)로부터 호스트(2100C)로 출력되는 외부 인터럽트 신호(INT_EX)는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태에서 I/O 디바이스(2210-K)에서 발생되는 내부 인터럽트 신호(INT_IN)가 된다.
예로서, 적응적 인터럽트 처리 모듈(2211-K)은 적응적 마스킹 모드로 진입된 후에 호스트(2100C)의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하면 I/O 디바이스(2210-K)를 적응적 마스킹 모드로부터 일반 모드로 전환시키는 오퍼레이션을 수행한다. 세부적으로, 적응적 마스킹 모드로 진입된 I/O 디바이스(2210-K)에서 단위 시간당 발생되는 내부 인터럽트(INT_IN) 회수가 제3임계 값 이하인 경우에 적응적 마스킹 모드로 진입된 I/O 디바이스(2210- K)를 일반 모드로 전환시킨다.
호스트(2100C)는 I/O 디바이스(2210-K)로부터 수신되는 인터럽트 신호(INT)에 기초하여 인터럽트 처리를 하는 오퍼레이션을 수행한다. I/O 디바이스(2210-K)로부터 수신되는 인터럽트 신호(INT)는 위에서 언급한 바와 같이, 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태에서 I/O 디바이스(2200-K)로부터 출력되는 외부 인터럽트 신호(INT_EX)이다. 예로서, 호스트(2100C)의 프로세서(2110C)는 인터럽트 신호(INT)가 수신되면, 현재 수행 중인 컨텍스트를 중단하고 인터럽트 컨텍스트로 전환하여 인터럽트 처리 루틴을 수행한다.
그리고, 프로세서(2110C)는 적응적 마스킹 모드에 진입한 I/O 디바이스(2210-K)에 대한 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크와 인터럽트 마스킹 처리에 따라서 미처리된 I/O 디바이스(2210-K)의 내부 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행하는 기능을 지원한다. 예로서, 호스트(2100C)는 I/O 디바이스(2210-K)에 대한 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크를 수행한 후에, 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 I/O 디바이스(2210-K)의 내부 인터럽트에 대한 미처리 레스폰스를 처리하는 태스크를 수행한다.
도 10은 도 5, 도 7 및 도 8에 도시된 I/O 디바이스(200A 또는 2210-1 ~ 2210-M) 구성의 일 예를 보여준다.
도 10은 도 5, 도 7 및 도 8에 도시된 I/O 디바이스(200A 또는 2210-1 ~ 2210-M)의 일 예가 될 수 있는 SSD(Solid State Drive; 200A-1)의 블록 구성도에 해당된다.
도 10을 참조하면, SSD(200A-1)는 메모리 컨트롤러(210A) 및 메모리 장치(220)를 포함한다.
메모리 컨트롤러(210A)는 호스트로부터 수신되는 커맨드에 기초하여 메모리 장치(220)에 대한 제어 동작을 수행할 수 있다. 메모리 컨트롤러(210A)는 호스트로부터 수신되는 커맨드에 따라서 복수의 채널들(CH1 ~CHM)을 통하여 접속된 메모리 장치(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어한다. 그리고, 메모리 컨트롤러(210A)는 호스트로부터 수신된 커맨드에 대한 오퍼레이션을 완료한 후에는 인터럽트 신호를 호스트로 전송한다. 즉, 호스트로부터 수신된 커맨드에 따른 SSD(200A-1)에서의 내부 이벤트에 대한 동작을 완료한 후에 이를 알리기 위한 인터럽트 신호를 호스트로 전송한다.
메모리 장치(220)는 하나 이상의 비휘발성 메모리 칩(NVM; 220-1)로 구성될 수 있다. 예로서, 메모리 장치(220)에 적용되는 비휘발성 메모리 칩(220-1)은 플래시 메모리 칩뿐만 아니라 PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 칩 등으로 구성될 수 있다. 다른 예로서, 메모리 장치(220)는 적어도 하나 이상의 비휘발성 메모리 칩(들)와 적어도 하나 이상의 휘발성 메모리 칩(들)가 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 칩들이 혼합된 형태로 구성될 수도 있다.
도 11은 도 10에 도시된 메모리 컨트롤러(210A)의 세부 구성을 예시적으로 보여준다.
도 11에 도시된 바와 같이, 메모리 컨트롤러(210A)는 프로세서(211A), RAM(Random Access Memory; 212A), 호스트 인터페이스(213A), 메모리 인터페이스(214A) 및 버스(215A)를 구비한다.
메모리 컨트롤러(210A)의 구성요소들은 버스(215A)를 통하여 전기적으로 연결된다.
프로세서(211A)는 RAM(212A)에 저장된 프로그램 코드 및 데이터들을 이용하여 SSD(200A-1)의 동작을 전반적으로 제어할 수 있다. SSD(200A-1)가 초기화될 때 프로세서(211A)는 메모리 장치(220)에 저장된 SSD(200A-1)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(212A)에 로딩시킬 수 있다.
프로세서(211A)는 호스트로부터 수신된 커맨드에 따른 리드 오퍼레이션 또는 라이트 오퍼레이션을 수행한다. 그리고, 프로세서(211A)는 호스트로부터 수신된 커맨드에 따른 리드 오퍼레이션 또는 라이트 오퍼레이션을 완료한 후에 내부 인터럽트 신호를 발생시킨다. 내부 인터럽트 신호는 호스트 인터페이스(213A)를 통하여 호스트로 전달된다. 이에 따라서, SSD(200A-1)에서 호스트로 출력되는 외부 인터럽트 신호는 내부 인터럽트 신호와 같게 된다.
RAM(212A)에는 호스트 인터페이스(213A)를 통하여 호스트로부터 수신되는 데이터 또는 메모리 인터페이스(214A)를 통하여 메모리 장치(220)로부터 수신되는 데이터가 저장된다. 또한, 프로세서(211A)에서 처리된 데이터가 저장될 수도 있다.
호스트 인터페이스(213A)는 메모리 컨트롤러(210A)에 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 컨트롤러(210A)와 호스트 사이의 인터페이스를 수행한다. 호스트 인터페이스(213A)는 예로서 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Universal Flash Storage) 인터페이스, PCI(Peripheral Component Interconnect) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 호스트 인터페이스(213A)는 프로세서(211A)의 제어에 따라서 호스트로부터 커맨드 및 데이터를 수신하거나, 호스트로 데이터를 전송할 수 있다. 또한, 호스트 인터페이스(213A)는 프로세서(211A)의 제어에 따라서 인터럽트 신호를 호스트로 전송할 수 있다.
메모리 인터페이스(214A)는 메모리 장치(220)와 전기적으로 연결되어 있다. 메모리 인터페이스(214A)는 프로세서(211A)의 제어에 따라서 메모리 장치(220)로 커맨드, 어드레스 및 데이터를 전송하거나, 메모리 장치(220)로부터 데이터를 수신할 수 있다. 메모리 인터페이스(214A)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(214A)는 복수 개의 채널들을 통하여 소프트웨어 또는 하드웨어 인터리브 동작들이 수행되도록 구성될 수도 있다.
도 12는 도 6 및 도 9에 도시된 I/O 디바이스 구성의 일 예를 보여준다.
도 12는 도 6 및 도 9에 도시된 I/O 디바이스(200B 또는 2210-1 ~ 2210-M)의 일 예가 될 수 있는 SSD(Solid State Drive; 200B-1)의 블록 구성도에 해당된다.
도 12를 참조하면, SSD(200B-1)는 메모리 컨트롤러(210B) 및 메모리 장치(220)를 포함한다.
메모리 컨트롤러(210B)는 호스트로부터 수신되는 커맨드에 기초하여 메모리 장치(220)에 대한 제어 동작을 수행할 수 있다. 메모리 컨트롤러(210B)는 호스트로부터 수신되는 커맨드에 따라서 복수의 채널들(CH1 ~CHM)을 통하여 접속된 메모리 장치(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어한다.
메모리 컨트롤러(210B)는 적응적 인터럽트 처리 모듈(AIPM; 201-1)을 포함한다. 적응적 인터럽트 처리 모듈(201-1)은 예로서, 도 23 내지 도 26의 흐름도를 수행하기 위한 소프트웨어 또는 하드웨어를 포함할 수 있다.
메모리 컨트롤러(210B)는 적응적 인터럽트 처리 모듈(AIPM; 201-1)에 기초하여 다음과 같은 동작을 수행할 수 있다.
예로서, 적응적 인터럽트 처리 모듈(201-1)은 SSD(200B-1)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우에 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션, 적응적 마스킹 모드로 진입된 구간에서 SSD(200B-1)로 수신되는 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션을 지원한다. 다른 예로서, 적응적 인터럽트 처리 모듈(201-1)은 SSD(200B-1)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우에 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션 및 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션을 지원하도록 설계한다. 그리고, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션은 호스트에서 지원하도록 설계할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(201-1)은 단위 시간당 SSD(200B-1)에서 처리된 이벤트에 따른 내부 인터럽트 신호(INT_IN)의 발생 회수가 제2임계 값을 초과하는 경우에, SSD(200B-1)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(201-1)은 SSD(200B-1)의 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 제1임계 조건을 초과하는 경우에, SSD(200B-1)를 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(201-1)은 적응적 마스킹 모드로 진입된 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블(interrupt masking enable) 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 오퍼레이션을 수행한다. 그리고, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트가 수신되는 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 수신되지 않으면, 인터럽트 마스킹 처리를 스킵(skip)하는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태로 전환시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(201-1)은 적응적 마스킹 모드로 진입된 구간에서 인터럽트 마스킹 디스에이블 상태로 전환된 후 호스트로부터 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블 상태로 다시 전환시키는 오퍼레이션을 수행한다. 여기에서, 호스트로부터 I/O 서브미션 이벤트가 수신된다는 것은 호스트로부터 커맨드가 수신되는 것과 동등한 의미이다.
예로서, 적응적 인터럽트 처리 모듈(201-1)은 인터럽트 마스킹 인에이블 상태의 구간에서는 SSD(200B-1)에서 발생되는 내부 인터럽트 신호(INT_IN)가 호스트로 출력되는 것을 차단한다. 그리고, 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태의 구간에서는 SSD(200B-1)에서 발생되는 내부 인터럽트 신호(INT_IN)가 호스트로 출력되는 것을 허용한다. 즉, SSD(200B-1)에서 호스트(100B)로 출력되는 외부 인터럽트 신호(INT_EX)는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태의 구간에서는 SSD(200B-1)에서 발생되는 내부 인터럽트 신호(INT_IN)가 된다. 여기에서, 내부 인터럽트 신호(INT_IN)는 호스트로부터 수신된 커맨드에 대한 동작을 SSD(200B-1)에서 완료한 후에 발생된다.
예로서, 적응적 인터럽트 처리 모듈(201-1)은 적응적 마스킹 모드로 진입된 후에 SSD(200B-1)의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하면 SSD(200B-1)를 적응적 마스킹 모드로부터 일반 모드로 전환시키는 오퍼레이션을 수행한다. 세부적으로, 적응적 마스킹 모드로 진입된 SSD(200B-1)에서 단위 시간당 발생되는 내부 인터럽트(INT_IN) 회수가 제3임계 값 이하인 경우에 적응적 마스킹 모드로 진입된 SSD(200B-1)를 일반 모드로 전환시킨다.
메모리 장치(220)는 도 10에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
도 13은 도 12에 도시된 메모리 컨트롤러 구성의 일 예(210B)를 보여준다.
도 13에 도시된 바와 같이, 메모리 컨트롤러(210B)는 프로세서(211B), RAM(Random Access Memory; 212B), 호스트 인터페이스(213B), 메모리 인터페이스(214B) 및 버스(215B)를 구비한다.
메모리 컨트롤러(210B)의 구성요소들은 버스(215B)를 통하여 전기적으로 연결된다.
프로세서(211B)는 RAM(212B)에 저장된 프로그램 코드 및 데이터들을 이용하여 SSD(200B-1)의 동작을 전반적으로 제어할 수 있다. SSD(200B-1)가 초기화될 때 프로세서(211B)는 메모리 장치(220)에 저장된 SSD(200B-1)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(212B)에 로딩시킬 수 있다. 특히, RAM(212B)에는 적응적 인터럽트 처리 방법을 수행하기 위한 소프트웨어 프로그램(AIPM_SW; 212B-1)이 저장된다.
RAM(212B)에는 호스트 인터페이스(213B)를 통하여 호스트로부터 수신되는 데이터 또는 메모리 인터페이스(214B)를 통하여 메모리 장치(220)로부터 수신되는 데이터가 저장된다. 또한, 프로세서(211B)에서 처리된 데이터가 저장될 수도 있다.
프로세서(211B)는 RAM(212B)에 저장된 프로그램(AIPM_SW; 212B-1)을 구동시켜서 다음과 같은 적응적 인터럽트 처리를 수행한다.
프로세서(211B)는 SSD(200B-1)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우에 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션, 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션, 인터럽트 마스킹 처리된 구간 동안에 미처리된 인터럽트에 대한 레스폰스를 I/O 서브미션 이벤트를 발생시키는 스레드에서 처리하는 오퍼레이션을 수행한다.
예로서, 프로세서(211B)는 단위 시간당 인터럽트 신호(INT)의 발생 회수가 제2임계 값을 초과하는 경우에 적응적 마스킹 모드로 진입시킨다. 다른 예로서, 프로세서(211B)는 SSD(200B-1)의 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 제1임계 조건을 초과하는 경우에 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행할 수도 있다.
예로서, 프로세서(211B)는 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블(interrupt masking enable) 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 오퍼레이션을 수행한다. 그리고, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 인터럽트 마스킹 처리를 스킵(skip)하는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태로 전환시키는 오퍼레이션을 수행한다.
예로서, 프로세서(211B)는 적응적 마스킹 모드로 진입된 구간에서 인터럽트 마스킹 디스에이블 상태로 전환된 후 I/O 서브미션 이벤트가 수신될 때, 인터럽트 마스킹 인에이블 상태로 다시 전환시키는 오퍼레이션을 수행한다.
프로세서(211B)는 인터럽트 마스킹 인에이블 상태에 있는 구간 동안에 인터럽트 신호가 호스트로 출력되는 것을 차단한다. 그리고, 프로세서(211B)는 마스킹 디스에이블 상태를 유지하는 구간 동안에 발생되는 인터럽트 신호가 호스트로 출력되는 것을 허용한다.
프로세서(211B)는 적응적 마스킹 모드로 진입된 후에 SSD(200B-1)의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하면, 적응적 마스킹 모드로부터 일반 모드로 전환시키는 오퍼레이션을 수행한다. 세부적으로, 적응적 마스킹 모드로 진입된 후에 단위 시간당 발생되는 인터럽트 회수가 제3임계 값 이하인 경우에는 일반 모드로 전환시킨다.
호스트 인터페이스(213B) 및 메모리 인터페이스(214B)는 도 11에서 설명한 호스트 인터페이스(213BA) 및 메모리 인터페이스(214A)와 실질적으로 동일하므로, 중복적인 설명은 피하기로 한다.
도 14는 도 12에 도시된 메모리 컨트롤러 구성의 다른 예(210B”)를 보여준다.
도 14에 도시된 바와 같이, 메모리 컨트롤러(210B”)는 프로세서(211B”), RAM(Random Access Memory; 212B”), 호스트 인터페이스(213B”), 메모리 인터페이스(214B”), 버스(215B”) 및 적응적 인터럽트 처리 모듈(AIPM; 2116B”)을 구비한다.
메모리 컨트롤러(210B”)의 구성요소들은 버스(215B”)를 통하여 전기적으로 연결된다.
프로세서(211B”)는 RAM(212B”)에 저장된 프로그램 코드 및 데이터들을 이용하여 SSD(200B-1)의 동작을 전반적으로 제어할 수 있다. SSD(200B-1)가 초기화될 때 프로세서(211B”)는 메모리 장치(220)에 저장된 SSD(200B-1)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(212B”)에 로딩시킬 수 있다.
RAM(212B”)에는 호스트 인터페이스(213B”)를 통하여 호스트로부터 수신되는 데이터 또는 메모리 인터페이스(214B”)를 통하여 메모리 장치(220)로부터 수신되는 데이터가 저장된다. 또한, 프로세서(211B”)에서 처리된 데이터가 저장될 수도 있다.
적응적 인터럽트 처리 모듈(AIPM; 2116B”)은 다음과 같은 적응적 인터럽트 처리 동작을 수행하는 하드웨어 또는 소프트웨어를 포함할 수 있다. 예로서, 적응적 인터럽트 처리 모듈(AIPM; 2116B”)에는 도 18에 도시된 적응적 인터럽트 처리 장치(10)가 포함될 수 있다.
적응적 인터럽트 처리 모듈(2116B”)은 SSD(200B-1)의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우에 적응적 마스킹 모드로 진입하도록 처리하는 오퍼레이션, 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리하는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(2116B")은 프로세서(211B")에서의 단위 시간당 인터럽트 신호(INT)의 발생 회수가 제2임계 값을 초과하는 경우에 적응적 마스킹 모드로 진입시킨다. 다른 예로서, 적응적 인터럽트 처리 모듈(2116B")은 SSD(200B-1)의 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 제1임계 조건을 초과하는 경우에 적응적 마스킹 모드로 진입시키는 오퍼레이션을 수행할 수도 있다.
예로서, 적응적 인터럽트 처리 모듈(2116B”)은 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블(interrupt masking enable) 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 오퍼레이션을 수행한다. 그리고, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 인터럽트 마스킹 처리를 스킵(skip)하는 인터럽트 마스킹 디스에이블(interrupt masking disable) 상태로 전환시키는 오퍼레이션을 수행한다.
예로서, 적응적 인터럽트 처리 모듈(2116B")은 적응적 마스킹 모드로 진입된 구간에서 인터럽트 마스킹 디스에이블 상태로 전환된 후 I/O 서브미션 이벤트가 수신될 때, 인터럽트 마스킹 인에이블 상태로 다시 전환시키는 오퍼레이션을 수행한다.
적응적 인터럽트 처리 모듈(2116B”)은 인터럽트 마스킹 인에이블 상태에 있는 구간 동안에 인터럽트 신호가 호스트로 출력되는 것을 차단한다. 그리고, 적응적 인터럽트 처리 모듈(2116B”)은 마스킹 디스에이블 상태를 유지하는 구간 동안에 발생되는 인터럽트 신호가 호스트로 출력되는 것을 허용한다.
적응적 인터럽트 처리 모듈(2116B")은 적응적 마스킹 모드로 진입된 후에 SSD(200B-1)의 워크로드에 관련된 하나 이상의 인자 값들이 초기 설정된 제2임계 조건 이내로 진입하면, 적응적 마스킹 모드로부터 일반 모드로 전환시키는 오퍼레이션을 수행한다. 세부적으로, 적응적 마스킹 모드로 진입된 후에 단위 시간당 발생되는 인터럽트 회수가 제3임계 값 이하인 경우에는 일반 모드로 전환시킨다.
호스트 인터페이스(213B”) 및 메모리 인터페이스(214B”)는 도 11에서 설명한 호스트 인터페이스(213BA) 및 메모리 인터페이스(214A)와 실질적으로 동일하므로, 중복적인 설명은 피하기로 한다.
도 15는 도 10 및 도 12에 도시된 비휘발성 메모리 칩(220-1)의 구성을 예시적으로 보여준다.
도 15를 참조하면, 비휘발성 메모리 칩(220-1)은 메모리 셀 어레이(221), 제어 로직(control logic; 222), 전압 생성부(223), 로우 디코더(224) 및 페이지 버퍼(225)를 포함할 수 있다. 이하에서는, 비휘발성 메모리 칩(220-1)에 포함된 구성 요소들에 대하여 상술하기로 한다.
메모리 셀 어레이(221)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 하나 이상의 접지 선택 라인(GSL)에 연결될 수 있으며, 또한 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(221)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(도 17의 MC)을 포함할 수 있다.
메모리 셀 어레이(221)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(221)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압에 따라 구분되는 소거 상태 및 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있다.
여기서, n은 2 이상의 자연수일 수 있다. 예를 들어, 메모리 셀(MC)이 2 비트 레벨 셀인 경우 n은 3일 수 있다. 다른 예에서, 메모리 셀(MC)이 3 비트 레벨 셀인 경우 n은 7일 수 있다. 또 다른 예에서, 메모리 셀(MC)이 4 비트 레벨 셀인 경우 n은 15일 수 있다. 이와 같이, 복수의 메모리 셀들(MC)은 멀티 레벨 셀들을 포함할 수 있다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않고, 복수의 메모리 셀들(MC)은 싱글 레벨 셀들을 포함할 수도 있다.
제어 로직(222)은 메모리 컨트롤러로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(221)에 데이터를 기입하거나 메모리 셀 어레이(221)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이로써, 제어 로직(222)은 비휘발성 메모리 칩(220-1) 내의 각종 동작을 전반적으로 제어할 수 있다.
제어 로직(222)에서 출력된 각종 제어 신호는 전압 생성부(223), 로우 디코더(224) 및 페이지 버퍼(225)에 제공될 수 있다. 구체적으로, 제어 로직(222)은 전압 생성부(223)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(224)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼(225)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다.
전압 생성부(223)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(221)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(223)는 복수의 워드 라인들(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 라운드 선택 라인들(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다.
이때, 제1 구동 전압(VWL)은 프로그램 전압(또는 기입 전압), 독출 전압, 소거 전압, 패스 전압 또는 프로그램 검증 전압일 수 있다. 또한, 제2 구동 전압(VSSL)은 스트링 선택 전압, 즉, 온(on) 전압 또는 오프(off) 전압일 수 있다. 나아가, 제3 구동 전압(VGSL)은 그라운드 선택 전압, 즉, 온 전압 또는 오프 전압일 수 있다.
로우 디코더(224)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(221)에 연결되고, 제어 로직(222)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(224)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
한편, 프로그램 동작 시에 로우 디코더(224)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
페이지 버퍼(225)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(221)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(225)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(221)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(225)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(221)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다.
도 16은 도 15에 도시된 메모리 셀 어레이(221)의 일 예를 나타낸다.
도 16을 참조하면, 메모리 셀 어레이(221)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(221)는 a(a는 2 이상의 정수)개의 메모리 블록들(BLK1 내지 BLKa)을 포함하고, 각 메모리 블록(BLK1 내지 BLKa)은 b(b는 2이상의 정수)개의 페이지들(PAGE1 내지 PAGEb)을 포함하며, 각 페이지들(PAGE1 내지 PAGEb)은 c(c는 2 이상의 정수)개의 섹터들(SEC1 내지 SECc)을 포함할 수 있다. 도 16에서는 도시의 편의를 위해, 메모리 블록 BLK1에 대하여만 페이지들(PAGE0 내지 PAGEb) 및 섹터들(SEC1 내지 SECc)을 도시하였으나, 다른 메모리 블록들(BLK2 내지 BLKa)도 블록 BLK1과 동일한 구조를 가질 수 있다.
도 17은 도 16에 도시된 메모리 셀 어레이(221)에 포함된 제1메모리 블록의 일 예(BLK1a)를 나타내는 회로도이다.
도 17을 참조하면, 제1 메모리 블록(BLK1a)은 수직 구조의 낸드 플래시 메모리일 수 있다. 이때, 도 16에 도시된 각 블록들(BLK1 내지 BLKa)은 도 17과 같이 구현될 수 있다. 도 17에서, 제1 방향은 x 방향으로, 제2 방향은 y 방향으로, 제3 방향은 z 방향으로 지칭하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 제1 내지 제3 방향은 변경될 수도 있다.
제1 메모리 블록(BLK1a)은 복수의 셀 스트링들(CST), 복수의 워드 라인들(WL), 복수의 비트 라인들(BL), 복수의 그라운드 선택 라인들(GSL1, GSL2), 복수의 스트링 선택 라인들(SSL1, SSL2) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 셀 스트링들(CST)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수, 그라운드 선택 라인들(GSL1, GSL2)의 개수 및 스트링 선택 라인들(SSL1, SSL2)의 개수는 실시 예에 따라 다양하게 변경될 수 있다.
셀 스트링(CST)은 대응되는 비트 라인(BL)과 공통 소스 라인(CSL) 사이에 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시 예에서, 셀 스트링(CST)은 적어도 하나의 더미 셀을 더 포함할 수 있다. 또 다른 실시 예에서, 셀 스트링(CST)은 적어도 두 개의 스트링 선택 트랜지스터들 또는 적어도 두 개의 그라운드 선택 트랜지스터들을 포함할 수도 있다.
또한, 셀 스트링(CST)은 제3 방향(z 방향)으로 신장될 수 있는데, 구체적으로, 기판 상에 수직 방향(z 방향)으로 신장될 수 있다. 따라서, 셀 스트링(CST)을 포함하는 메모리 블록(BLK1a)을 수직 방향의 낸드 플래시 메모리라고 지칭할 수 있다. 이와 같이, 셀 스트링(CST)을 기판 상에 수직 방향(z)으로 신장시킴으로써, 메모리 셀 어레이(221)의 집적도를 향상시킬 수 있다.
복수의 워드 라인들(WL)은 제1 방향(x) 및 제2 방향(y)으로 연장되고, 각 워드 라인(WL)은 대응되는 메모리 셀들(MC)과 연결될 수 있다. 이에 따라, 동일 층에서 제1 방향(x) 및 제2 방향(y)을 따라 이웃하게 배열된 복수의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결될 수 있다. 구체적으로, 각 워드 라인(WL)은 메모리 셀(MC)의 게이트에 연결되어 메모리 셀(MC)을 제어할 수 있다. 이때, 복수의 메모리 셀들(MC)은 데이터를 저장할 수 있으며, 연결된 워드 라인(WL)의 제어에 따라 프로그램, 독출 또는 소거될 수 있다.
복수의 비트 라인들(BL)은 제1 방향(x)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제1 방향(x)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 비트 라인(BL)에 연결될 수 있다. 구체적으로, 각 비트 라인(BL)은 스트링 선택 트랜지스터(SST)의 드레인에 연결될 수 있다.
복수의 스트링 선택 라인들(SSL1, SSL2)은 제2 방향(y)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 연결될 수 있다. 구체적으로, 각 스트링 선택 라인(SSL1 또는 SSL2)은 스트링 선택 트랜지스터(SST)의 게이트에 연결되어 스트링 선택 트랜지스터(SST)를 제어할 수 있다.
복수의 그라운드 선택 라인들(GSL1, GSL2)은 제2 방향(y)으로 연장되고, 그라운드 선택 트랜지스터(GST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 그라운드 선택 트랜지스터들(GST)은 동일한 그라운드 선택 라인(GSL1 또는 GSL2)에 연결될 수 있다. 구체적으로, 각 그라운드 선택 라인(GSL1 또는 GSL2)은 그라운드 선택 트랜지스터(GST)의 게이트에 연결되어 그라운드 선택 트랜지스터(GST)를 제어할 수 있다.
또한, 각 셀 스트링(CST)에 포함된 그라운드 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 구체적으로, 공통 소스 라인(CSL)은 그라운드 선택 트랜지스터(GST)의 소스에 연결될 수 있다.
여기서, 동일한 워드 라인(WL) 및 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 공통으로 연결되고, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 페이지(PAGE)라고 지칭할 수 있다. 예를 들어, 제1 워드 라인(WL1)에 공통으로 연결되고, 제1 스트링 선택 라인(SSL1)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제1 페이지(PAGE1)라고 지칭할 수 있다. 또한, 제1 워드 라인(WL1)에 공통으로 연결되고, 제2 스트링 선택 라인(SSL2)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제2 페이지(PAGE2)라고 지칭할 수 있다.
메모리 셀(MC)에 대한 프로그램 동작을 수행하기 위해서는, 비트 라인(BL)에 0V를 인가하고, 스트링 선택 라인(SSL)에 온(on) 전압을 인가하고, 그라운드 선택 라인(GSL)에 오프(off) 전압을 인가할 수 있다. 온 전압은 스트링 선택 트랜지스터(SST)를 턴-온(turn-on) 시키도록 그 문턱 전압보다 크거나 같을 수 있고, 오프 전압은 그라운드 선택 트랜지스터들(GST)을 턴-오프(turn-off) 시키도록 그 문턱 전압보다 작을 수 있다. 또한, 메모리 셀들(MC) 중 선택 메모리 셀에는 프로그램 전압을 인가하고, 나머지 메모리 셀들에는 패스 전압을 인가할 수 있다. 프로그램 전압이 인가되면, F-N 터널링에 의해 메모리 셀들(MC) 내로 전하가 주입될 수 있다. 패스 전압은 메모리 셀들(MC)의 문턱 전압보다 클 수 있다.
메모리 셀(MC)에 대한 소거 동작을 수행하기 위해서는, 메모리 셀들(MC)의 바디(body)에 소거 전압을 인가하고, 워드 라인들(WL)에 0V를 인가할 수 있다. 이에 따라, 메모리 셀들(MC)의 데이터가 일시에 소거될 수 있다.
도 18은 본 발명의 실시 예에 따른 적응적 인터럽트 처리 장치(10)의 구성을 예시적으로 보여준다.
도 18에 도시된 적응적 인터럽트 처리 장치(10)는 도 5, 6, 8, 9에 도시된 컴퓨팅 시스템의 호스트 또는 I/O 디바이스에 배치된 적응적 인터럽트 처리 모듈(110, 210, 2130-1, 또는 2211-1 ~ 2211-N)에 포함되는 장치의 블록 구성을 보여준다.
도 18에 도시된 바와 같이, 적응적 인터럽트 처리 장치(10)는 모드 판정부(11), 타이머 회로(12), 인터럽트 마스킹 관리부(13) 및 인터럽트 출력 처리부(14)를 포함한다.
모드 판정부(11)는 시스템의 워크로드에 관련된 적어도 하나의 인자 값(f1 ~ fi)에 기초하여 I/O 디바이스에 대한 적응적 마스킹 모드 온/오프 상태를 결정한다.
예로서, 모드 판정부(11)는 호스트에 접속된 I/O 디바이스 별로 단위 시간당 인터럽트 발생 회수를 산출하고, 산출된 단위 시간당 인터럽트 발생 회수가 제1임계 값을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드 온 신호를 생성하고, 산출된 단위 시간당 인터럽트 발생 회수가 제1임계 값을 이하인 I/O 디바이스에 대하여 적응적 마스킹 모드 오프 신호를 생성할 수 있다. 예로서, 모드 판정부(11)는 시스템의 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나의 인자 값이 초기 설정된 임계 조건을 초과하는 경우에 적응적 마스킹 모드를 온 상태로 결정하는 모드 판정신호(S1)를 생성하고, 그렇지 않은 경우에는 적응적 마스킹 모드를 오프 상태로 결정하는 모드 판정신호(S1)를 생성할 수도 있다. 적응적 마스킹 모드 오프 상태는 언마스킹 모드(unmasking mode)로서 일반 모드에 해당된다. 도 21을 참조하면, PO 및 P2 구간이 언마스킹 모드에 해당되고, P1 구간이 적응적 마스킹 모드에 해당된다.
타이머 회로(12)는 타이머(12-1) 및 후처리부(12-2)를 구비한다.
타이머(12-1)는 적응적 마스킹 모드 온 상태로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때마다 초기 설정 값(T_st)부터 시간을 측정한다.
후처리부(12-2)는 타이머(12-1)의 측정 시간이 타깃 값(T_tar)에 도달하는 경우 마스킹 오프 제어신호(S2)를 생성한다. 이에 따라서, 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점(T_st)부터 임계 시간(T_tar)까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면 마스킹 오프 제어신호(S2)를 생성한다.
이와 같은 동작에 의하여, 타이머 회로(12)는 적응적 마스킹 모드 온 상태로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 간격이 임계 간격 범위 내에 있는지를 측정하는 동작을 수행할 수 있게 된다.
인터럽트 마스킹 관리부(13)는 모드 판정부(11)로부터 수신되는 모드 판정신호(S1)에 기초하여 적응적 마스킹 모드 온 상태로 결정된 I/O 디바이스에 대하여 I/O 서브미션 이벤트 신호가 수신될 때 인터럽트 마스킹 디스에이블 상태에 있으면 인터럽트 마스킹 인에이블 상태로 전환시키는 마스킹 신호(S3)를 생성하고, 인터럽트 마스킹 인에이블 상태에 있으면 인터럽트 마스킹 인에이블 상태를 그대로 유지시키는 마스킹 신호(S3)를 생성시킨다.
인터럽트 마스킹 관리부(13)는 타이머 회로(12)로부터 마스킹 오프 제어신호(S2)가 수신될 때, 해당 I/O 디바이스를 인터럽트 마스킹 인에이블 상태로부터 인터럽트 마스킹 디스에이블 상태로 전환시키는 마스킹 신호(S3)를 생성시킨다. 예로서, 인터럽트 마스킹 관리부(13)는 타이머 회로(12)로부터 I/O 디바이스(2210-K)에 대한 마스킹 오프 제어신호(S2)가 수신될 때, I/O 디바이스(2210-K)를 마스킹 인에이블 상태로부터 인터럽트 마스킹 디스에이블 상태로 전환시키는 마스킹 신호(S3)를 생성시킨다.
도 21을 참조하면, 적응적 마스킹 모드의 P1 구간 중에서 마스킹 신호(S3)에 의하여 인터럽트 마스킹 인에이블 상태를 갖거나 인터럽트 마스킹 디스에이블 상태를 갖는다. 예로서, N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점(T_st)부터 임계 시간(T_tar)까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않을 때 인터럽트 마스킹 디스에이블 상태로 천이된다. 도 21에서 도시된 타임아웃 시간(T0)는 (T_tar - T_st)에 해당된다.
인터럽트 출력 처리부(14)는 인터럽트 마스킹 관리부(13)에서 생성되는 I/O 디바이스 별 마스킹 신호(S3)에 기초하여 I/O 디바이스 별로 발생되는 인터럽트 신호(INT_IN)를 선택적으로 출력한다. 세부적으로, 인터럽트 출력 처리부(14)는 I/O 디바이스 별로 발생되는 인터럽트 신호(INT_IN)를 마스킹 신호(S3)가 인터럽트 마스킹 인에이블 상태에 있는 구간에서는 호스트의 중앙 처리 장치(또는 프로세서)로 출력되는 것을 차단한다. 그리고, 인터럽트 출력 처리부(14)는 I/O 디바이스 별로 발생되는 인터럽트 신호(INT_IN)를 마스킹 신호(S3)가 인터럽트 마스킹 디스에이블 상태에 있는 구간에서는 호스트의 중앙 처리 장치(또는 프로세서)로 출력되는 것을 허용한다.
따라서, 인터럽트 출력 처리부(14)에서 출력되는 인터럽트 신호(INT_EX)는 마스킹 신호(S3)가 인터럽트 마스킹 디스에이블 상태에 있는 구간 동안에 입력되는 인터럽트 신호(INT_IN)가 된다.
도 21을 참조하면, 마스킹 인에이블 상태를 나타내는 마스킹 인에이블드(Masking enabled) 상태 하이(HIGH) 구간에서 I/O 디바이스에서 발생되는 내부 인터럽트 신호가 출력되는 것을 차단된다. 내부 인터럽트 신호는 내부 이벤트(Internal Event) 신호와 같은 의미를 갖는다. 즉, 마스킹 인에이블 상태를 나타내는 마스킹 인에이블드(Masking enabled) 상태 하이(HIGH) 구간에서는 내부 인터럽트 신호가 발생되더라도 외부 인터럽트 신호(External Int.)가 출력되지 않는다. 그리고, 마스킹 디스에이블 상태를 나타내는 마스킹 인에이블드(Masking enabled) 상태 로우(LOW) 구간에서는 내부 인터럽트 신호가 외부 인터럽트 신호(External Int.)로서 출력된다.
도 19는 본 발명의 실시 예에 따른 적응적 인터럽트 처리 장치(10)를 적용하는 호스트(100)의 주요 구성을 보여주는 도면이다.
호스트(100)는 I/O 제어기(101), I/O 컴플리션 핸들러(102), 컴플리션 큐(CQ; 103), I/O 서브미션 핸들러(104) 및 서브미션 큐(SQ; 105)를 포함한다. 예로서, I/O 제어기(101)에 적응적 인터럽트 처리 장치(AIPU; 10)가 포함될 수 있다.
I/O 제어기(101)는 적응적 인터럽트 처리 장치(10)를 이용하여 호스트(100)에 접속된 I/O 디바이스들 각각으로부터 수신되는 인터럽트 신호(INT_I/O(1) ~ INT_I/O(M))를 마스킹 인에이블 상태의 구간에서는 차단한다. 즉, I/O 제어기(101)에서 출력되는 각각의 I/O 디바이스들에 대한 인터럽트 신호(INT_EX(1) ~ INT_EX(M))은 마스킹 디스에이블 상태의 구간 동안에 I/O 디바이스들 각각으로부터 수신되는 인터럽트 신호(INT_I/O(1) ~ INT_I/O(M))가 된다.
호스트(100)는 I/O 제어기(101)에서 출력되는 인터럽트 신호(INT_EX(1) ~ INT_EX(M))에 기초하여 인터럽트 처리를 수행할 수 있다. 예로서, 호스트(100)는 인터럽트 신호(INT_EX(1) ~ INT_EX(M))에 기초하여 인터럽트 핸들러 컨텍스트에서 인터럽트 처리를 수행할 수 있다.
그리고, 호스트(100)는 적응적 마스킹 모드에서 I/O 서브미션 핸들러(104)를 이용하여 다음과 같이 마스킹 인에이블 상태에 의하여 미처리된 인터럽트에 대한 레스폰스 처리를 수행한다.
서브미션 큐(SQ; 105)에는 I/O 서브미션 스레드(thread)에 따라서 I/O 디바이스로 발행된 커맨드 정보가 삽입된다. 즉, 서브미션 큐(SQ; 105)에는 I/O 디바이스로 발행된 커맨드 정보가 저장되어 있다.
그리고, 컴플리션 큐(CQ; 103)에는 I/O 디바이스에서 실행이 완료된 커맨드 정보가 저장된다. 예로서, I/O 컴플리션 핸들러(102)는 I/O 제어기(101)를 통하여 I/O 디바이스에서의 커맨드 수행이 완료된 커맨드 정보를 제공받아 컴플리션 큐(CQ; 103)에 저장할 수 있다.
I/O 서브미션 핸들러(104)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 상기 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐(105)에 삽입하는 태스크와 인터럽트 마스킹 인에이블 상태인 구간에서 미처리된 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행한다.
예로서, I/O 서브미션 핸들러(104)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐(105)에 삽입하는 태스크를 수행한 후에, 같은 컨텍스트에서 컴플리션 큐(103)에 저장되어 있는 미처리 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행한다. 세부적으로, I/O 서브미션 핸들러(104)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 컴플리션 큐(103) 스누핑(snooping) 동작을 수행하여, 컴플리션 큐(103)에 저장되어 있는 인터럽트 마스킹 인에이블 상태로 인하여 미처리된 인터럽트 이벤트에 대한 레스폰스 처리를 수행한다.
다른 예로서, I/O 서브미션 핸들러(104)는 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 컴플리션 핸들러(102)를 통하여 컴플리션 큐(103) 스누핑(snooping) 동작을 수행할 수 있다. 이 경우에는 컴플리션 큐(103)에 저장되어 있는 인터럽트 마스킹 인에이블 상태로 인하여 미처리된 인터럽트 이벤트에 대한 레스폰스 처리를 I/O 컴플리션 핸들러(102)에서 수행할 수 있다.
이에 따라서, I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 인터럽트 마스킹 인에이블 상태로 인하여 미처리된 인터럽트 이벤트에 대한 레스폰스 처리를 수행할 수 있게 된다.
도 21을 참조하면, 마스킹 인에이블드(Masking enabled) 상태 하이(HIGH) 구간에서 외부 인터럽트 신호(External Int.)가 발생되지 않아서 처리되지 못한 내부 이벤트(Internal Event)를 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 처리하는 것을 보여준다. 참고적으로, 외부 인터럽트 신호(External Int.)가 발생되지 않아서 처리되지 못한 내부 이벤트(Internal Event)는 컴플리션 큐(103)에 저장되어 있다.
도 20은 본 발명의 실시 예에 따른 시스템(100”)에서의 인터럽트 마스킹 인에이블 상태에서의 인터럽트 처리 과정을 보여주는 도면이다.
도 20을 참조하면, 시스템(100”)은 유저(User) 영역, 커널(Kernel) 영역, 하드웨어(Hardware) 영역으로 나누어질 수 있다.
유저 영역에는 실행 중인 컨텍스트들(Context_1 ~ Context_J)이 포함되고, 커널 영역에는 I/O 서브미션 핸들러(123-1) 및 I/O 컴플리션 핸들러(123-2)가 포함되고, 하드웨어에는 복수의 I/O 디바이스들(124-1 ~ 124-M)이 포함된다. 예로서, I/O 서브미션 핸들러(123-1) 및 I/O 컴플리션 핸들러(123-2)는 디바이스 드라이버(device driver; 123) 프로그램에 포함될 수 있다.
예로서, 유저 영역의 컨텍스트(Context_1)에서 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스(124-1)로 I/O 서브미션 스레드가 발생되면, 커널(Kernel) 영역에 있는 I/O 서브미션 핸들러(123-1)는 하드웨어 영역의 I/O 디바이스(124-1)에 대하여 I/O 서브미션 오퍼레이션을 수행한다. 그리고, 컨텍스트의 스위칭 동작 없이 I/O 서브미션 핸들러(123-1)는 I/O 컴플리션 핸들러(123-2)를 통한 I/O 디바이스(124-1)에 대한 컴플리션 큐 스누핑(snooping) 동작을 수행한다. 만일, I/O 디바이스(124-1)에 대한 컴플리션 큐에 미처리된 이벤트가 존재하면 I/O 컴플리션 핸들러(123-2)를 통하여 미처리된 이벤트에 대한 레스폰스 처리를 수행한다.
도 21은 본 발명의 실시 예에 따른 적응적 인터럽트 처리 동작을 설명하기 위한 주요 신호들에 대한 타이밍 차트이다.
도 21을 참조하면, 적응적 마스킹 모드로 진입한 후에 4개의 내부 이벤트가 I/O 서브미션 컨텍스트에서 처리되었다. 결과적으로, 4개의 내부 이벤트는 외부 인터럽트로 생성되지 않았음을 알 수 있다. 이후 적응적 마스킹 모드 진입 후의 5번째 내부 이벤트에 대해서는 임계 시간 간격(T0) 이내에 다음 I/O 서브미션이 이루어지지 않아서 I/O 서브미션 컨텍스트에서 5번째의 내부 이벤트는 처리 되지 않았다. 이에 따라서, 임계 시간 간격(T0)에 도달한 시점에 타임아웃 되어 외부 인터럽트를 발생시켜 호스트의 인터럽트 컨텍스트에서 해당 인터럽트를 처리하게 된다.
도 21에서 괄호(
Figure 112015050860111-pat00001
) 표시로 마스킹된 내부 이벤트 처리에 지연 시간을 표시하였다. 모든 내부 이벤트들 각각에 대한 지연 처리 시간이 T0을 초과하지 않는다는 사실을 알 수 있다.
도 22는 본 발명의 실시 예에 따른 적응적 인터럽트 처리 방법을 적용한 경우의 인터럽트 레이턴시의 사례를 보여준다.
도 22에서는 마스킹된 내부 이벤트 처리의 지연시간 관련해서 나쁜 사례 중의 하나를 보여준다. 왜냐하면, 두 번째 I/O 서브미션이 발생한 후에 바로 첫 번째 I/O 서브미션에 대한 완료를 나타내는 내부 이벤트가 발생하였기 때문이다. 하지만, 이 경우조차도 타임아웃 시간(T0) 이상 지연시간이 발생되지 않게 된다.
다음으로, 도 5 내지 도 9에 도시된 본 발명의 실시 예들을 포함하는 다양한 방식의 컴퓨팅 시스템에서 수행되는 적응적 인터럽트 처리 방법에 대하여 도 23 내지 도 26의 흐름도를 참조하여 설명하기로 한다
도 23은 본 발명의 실시 예에 따른 적응적 인터럽트 처리 방법의 흐름도를 보여준다.
우선, 시스템은 시스템의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입시킨다(S110). 예로서, 시스템은 단위 시간당 인터럽트 발생 회수가 제2임계 값을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입시킬 수 있다.
다음으로, 시스템은 적응적 마스킹 모드로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리를 수행한다(S120). 예로서, 시스템은 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 인터럽트 마스킹 처리를 스킵하는 인터럽트 마스킹 디스에이블 상태로 전환시킨다. 그리고, 시스템은 적응적 마스킹 모드로 진입된 I/O 디바이스가 인터럽트 마스킹 디스에이블 상태로 전환된 후, 해당 I/O 디바이스로 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블 상태로 다시 전환시킨다.
다음으로, 시스템은 I/O 서브미션 이벤트를 발생시키는 스레드에서 인터럽트 마스킹 처리에 따라서 미처리된 인터럽트에 대한 레스폰스를 처리하는 수행한다(S130). 예로서, 시스템은 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크와 인터럽트 마스킹 처리에 따라서 미처리된 인터럽트에 대한 레스폰스를 처리하는 태스크를 수행할 수 있다.
도 24는 도 23에 도시된 적응적 마스킹 모드 진입 처리 단계(S110)에 대한 세부 흐름도를 예시적으로 보여준다.
시스템은 워크로드에 관련된 하나 이상의 인자 값들을 수집하는 동작을 수행한다(S111). 예로서, 시스템에 포함된 I/O 디바이스들 각각에 대한 워크로드, 소비 전력 또는 감지 온도 중의 적어도 하나의 인자 값들을 수집할 수 있다. 다른 예로서, 시스템에 포함된 I/O 디바이스들 각각에 대한 단위 시간당 인터럽트 발생 회수를 수집할 수도 있다. 이는 단위 시간당 인터럽트 발생 회수로 I/O 디바이스의 워크로드를 평가할 수 있기 때문이다.
시스템은 수집된 인자 값들에 기초하여 I/O 디바이스 별로 적응적 마스킹 모드 진입 조건을 충족시키는지를 판단한다(S112). 예로서, 시스템에 포함된 I/O 디바이스들 중에서 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 임계 조건을 초과하는 I/O 디바이스가 있는지를 판단할 수 있다. 다른 예로서, 시스템에 포함된 I/O 디바이스들 중에서 단위 시간당 인터럽트 발생 회수가 제2임계 값을 초과하는 I/O 디바이스가 있는지를 판단할 수도 있다.
시스템은 적응적 마스킹 모드 진입 조건을 충족시키는 I/O 디바이스에 대하여 적응적 마스킹 모드로 결정한다(S113). 시스템에 포함된 I/O 디바이스들 중에서 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 임계 조건을 초과하는 I/O 디바이스를 적응적 마스킹 모드로 결정할 수 있다. 다른 예로서, 시스템에 포함된 I/O 디바이스들 중에서 단위 시간당 인터럽트 발생 회수가 제2임계 값을 초과하는 I/O 디바이스를 적응적 마스킹 모드로 결정할 수도 있다.
시스템은 적응적 마스킹 모드 진입 조건을 충족시키지 못하는 I/O 디바이스에 대하여 일반 모드로 결정한다(S114). 여기에서, 일반 모드는 언마스킹 모드(unmasking mode)를 의미한다.
도 25는 도 23에 도시된 인터럽트 마스킹 처리 단계(S120)에 대한 세부 흐름도를 예시적으로 보여준다.
시스템은 적응적 마스킹 모드에서 I/O 서브미션 이벤트가 발생되었는지를 판단한다(S121). 세부적으로, 적응적 마스킹 모드로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트가 발생되었는지를 판단한다.
시스템은 오퍼레이션 S121의 판단 결과 적응적 마스킹 모드로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트가 발생된 경우에, 해당 I/O 디바이스가 인터럽트 마스킹 인에이블 상태에 있는지를 판단한다(S122).
시스템은 오퍼레이션 S122의 판단 결과 적응적 마스킹 모드로 진입된 I/O 디바이스가 인터럽트 마스킹 인에이블 상태에 있지 않은 경우에, 해당 I/O 디바이스를 인터럽트 마스킹 인에이블 상태로 전환시킨다(S123). 이에 따라서, 적응적 마스킹 모드로 진입된 I/O 디바이스는 I/O 서브미션 이벤트의 발생에 의하여 인터럽트 마스킹 인에이블 상태로 전환된다.
시스템은 오퍼레이션 S12의 판단 결과 적응적 마스킹 모드로 진입된 I/O 디바이스가 인터럽트 마스킹 인에이블 상태에 있는 경우에는 오퍼레이션 S125를 수행한다.
또한, 시스템은 오퍼레이션 S121의 판단 결과 적응적 마스킹 모드로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트가 발생된 경우에, 해당 I/O 디바이스에 대응되는 타이머를 초기 설정 값인 T_st부터 동작시킨다(S124).
시스템은 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트에 기초하여 타이머의 동작 시작 및 인터럽트 마스킹 인에이블 상태로의 전환 처리를 수행하고 나서, 타이머가 타깃 값인 T_tar에 도달하였는지를 판단한다(S125).
시스템은 오퍼레이션 S125의 판단 결과 타이머가 T_tar에 도달한 I/O 디바이스에 대하여 인터럽트 마스킹 디스에이블 상태로 전환시킨다(S126). 이는 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이(T0)의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않았기 때문에 인터럽트 마스킹 디스에이블 상태로 전환된다는 것을 의미한다. 여기에서, 임계 시간 길이(T0)는 (T_tar - T_st)에 해당된다.
시스템은 오퍼레이션 S125의 판단 결과 타이머가 T_tar에 도달하지 않은 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스에 대해서는 인터럽트 마스킹 인에이블 상태를 그대로 유지한다(S127). 이는 상기 적응적 마스킹 모드로 진입된 구간에서 I/O 서브미션 이벤트 발생 시간 간격이 임계 시간 길이(T0) 미만인 경우에 인터럽트 마스킹 인에이블 상태를 그대로 유지한다.
도 26은 도 23에 도시된 미처리 인터럽트에 대한 레스폰스 처리 단계(S130)에 대한 세부 흐름도를 예시적으로 보여준다.
시스템은 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스로 I/O 서브미션 이벤트가 발생되는지를 판단한다(S131).
시스템은 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스로 I/O 서브미션 이벤트가 발생된 경우에, I/O 서브미션 핸들러에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 동작을 수행한다(S132).
다음으로, 시스템은 I/O 서브미션 핸들러에서의 컴플리션 큐 스누핑 및 미처리 인터럽트에 대한 레스폰스 처리를 수행하는 동작을 수행한다(S133).
이에 따라서, 인터럽트 마스킹 인에이블 상태에 있는 I/O 디바이스로 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크를 수행한 후에 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 미처리 레스폰스를 처리하는 태스크를 수행할 수 있게 된다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000A, 1000B, 2000A, 2000B, 2000C; 컴퓨팅 시스템
100A, 100B, 2100A, 2100B, 2100C; 호스트
200A, 200B, 2200A, 2200B, 2200C; 스토리지 디바이스
101, 201, 2130B-1, 2211-1 ~ 2211-K, 2116B”; 적응적 인터럽트 처리 모듈
2110A, 2110B, 2110C, 211A, 211B, 211B”; 프로세서
2120A, 2120B, 2120C; 메모리
2130A, 2130B, 2130C; I/O 제어기
2140A, 2140B, 2140C; I/O 브리지
2150A, 2150B, 2150C; 호스트 버스
2160A, 2160B, 2160C; I/O 버스
2200A, 2200B, 2200C; I/O 디바이스 블록
2210-1 ~ 2210-M, 2210-1 ~ 2210-M; I/O 디바이스
200A-1, 200B-1; SSD
210A, 210B, 210B, 210B”; 메모리 컨트롤러 220; 메모리 장치
212A, 212B, 212B”; RAM 213A, 213B, 213B”; 호스트 인터페이스
214A, 214B, 214B”; 메모리 인터페이스
215A, 215B, 215B”; 버스
221: 메모리 셀 어레이 222: 제어 로직
223: 전압 생성부 224: 로우 디코더
225: 페이지 버퍼

Claims (20)

  1. 시스템의 워크로드에 관련된 적어도 하나의 인자 값이 초기 설정된 제1임계 조건을 초과하는 경우 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입하는 단계;
    상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 인터럽트 마스킹 처리를 수행하는 단계; 및
    상기 I/O 서브미션 이벤트를 발생시키는 스레드에서 상기 인터럽트 마스킹 처리에 따라서 미처리된 인터럽트에 대한 레스폰스를 처리하는 단계를 포함하고,
    상기 인터럽트 마스킹 처리를 수행하는 단계는,
    상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 상기 인터럽트 마스킹 처리를 스킵하는 인터럽트 마스킹 디스에이블 상태로 전환시키는 단계; 및
    상기 I/O 디바이스에서 I/O 서브미션 이벤트 발생 시간 간격이 상기 제1임계 값 미만인 구간에 발생되는 인터럽트 신호에 응답하여 호스트에서의 인터럽트 컨텍스트로의 전환을 차단하는 단계를 더 포함하는 것을 특징으로 하는 적응적 인터럽트 처리 방법.
  2. 제1항에 있어서, 상기 적응적 마스킹 모드로 진입하는 단계는 단위 시간당 인터럽트 발생 회수가 제2임계 값을 초과하는 I/O 디바이스에 대하여 상기 적응적 마스킹 모드로 진입하는 것을 특징으로 하는 적응적 인터럽트 처리 방법.
  3. 제1항에 있어서, 상기 적응적 마스킹 모드로 진입하는 단계는 상기 호스트에 접속된 하나 이상의I/O 디바이스 중에서 워크로드, 소비 전력, 또는 감지 온도 중의 적어도 하나가 상기 제1임계 조건을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드로 진입하는 것을 특징으로 하는 적응적 인터럽트 처리 방법.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서, 상기 인터럽트 마스킹 처리를 수행하는 단계는 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에서 I/O 서브미션 이벤트 발생 시간 간격이 상기 제1임계 값 미만인 구간에 발생되는 인터럽트 신호가 호스트의 중앙 처리 장치로 출력되는 것을 차단하는 것을 특징으로 하는 적응적 인터럽트 처리 방법.
  7. 제1항에 있어서, 상기 인터럽트 마스킹 처리를 수행하는 단계는
    상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하는 단계;
    상기 I/O 서브미션 이벤트가 발생될 때마다 상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대한 인터럽트 타이머를 초기 설정 값에서 동작시키는 단계; 및
    상기 인터럽트 타이머의 값이 타깃 값에 도달될 때 인터럽트 마스킹 디스에이블 상태로 전환시키는 단계를 포함함을 특징으로 하는 적응적 인터럽트 처리 방법.
  8. 제1항에 있어서, 상기 레스폰스를 처리하는 단계는 상기 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 상기 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 태스크를 수행한 후에 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 미처리 레스폰스를 처리하는 태스크를 수행하는 것을 특징으로 하는 적응적 인터럽트 처리 방법.
  9. 시스템의 워크로드에 관련된 적어도 하나의 인자 값에 기초하여 I/O 디바이스에 대한 적응적 마스킹 모드 온/오프 상태를 결정하는 모드 판정부;
    상기 적응적 마스킹 모드 온 상태로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 간격이 임계 간격 범위 내에 있는지를 측정하는 타이머 회로;
    상기 결정된 적응적 마스킹 모드 온 상태를 유지하는 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하고, 상기 임계 간격 범위 내에서 I/O 서브미션 이벤트가 발생되지 않을 때 인터럽트 마스킹 디스에이블 상태로 전환시키는 인터럽트 마스킹 관리부; 및
    상기 인터럽트 마스킹 인에이블 상태에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호가 호스트의 중앙 처리 장치로 출력되는 것을 차단하고, 상기 인터럽트 마스킹 디스에이블 상태에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호가 호스트의 중앙 처리 장치로 출력되는 것을 허용하는 인터럽트 출력 처리부를 포함하고,
    상기 인터럽트 마스킹 관리부는,
    상기 적응적 마스킹 모드로 진입된 상기 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 인터럽트 마스킹 처리를 스킵하는 상기 인터럽트 마스킹 디스에이블 상태로 전환시키고, 상기 I/O 서브미션 이벤트의 발생 시간 간격이 제1임계 값 미만인 구간에 발생되는 인터럽트 신호에 응답하여 상기 호스트에서의 인터럽트 컨텍스트로의 전환을 차단하는 것을 특징으로 하는 적응적 인터럽트 처리 장치.
  10. 제9항에 있어서, 상기 I/O 서브미션 이벤트를 발생시키는 스레드 컨텍스트에서 상기 I/O 서브미션 이벤트에 따른 커맨드를 서브미션 큐에 삽입하는 I/O 서브미션 핸들러와 상기 I/O 서브미션 핸들러에 의한 컴플리션 큐 스누핑 동작에 기초하여 같은 컨텍스트에서 컴플리션 큐에 저장되어 있는 미처리 레스폰스를 처리하는 I/O 컴플리션 핸들러를 더 포함함을 특징으로 하는 적응적 인터럽트 처리 장치.
  11. 제9항에 있어서, 상기 모드 판정부는 호스트에 접속된 I/O 디바이스 별로 단위 시간당 인터럽트 발생 회수를 산출하고, 상기 산출된 단위 시간당 인터럽트 발생 회수가 상기 제1임계 값을 초과하는 I/O 디바이스에 대하여 적응적 마스킹 모드 온 신호를 생성하고, 상기 산출된 단위 시간당 인터럽트 발생 회수가 초기 설정된 상기 제1임계 값 이하인 I/O 디바이스에 대하여 적응적 마스킹 모드 오프 신호를 생성하는 것을 특징으로 하는 적응적 인터럽트 처리 장치.
  12. 제9항에 있어서, 상기 타이머 회로는
    상기 적응적 마스킹 모드 온 상태로 진입된 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때마다 초기 설정 값부터 시간을 측정하는 타이머; 및
    상기 타이머의 측정 시간이 타깃 값에 도달하는 경우에 마스킹 오프 제어신호를 생성하는 후처리부를 포함하고,
    상기 마스킹 오프 제어신호에 기초하여 상기 인터럽트 마스킹 관리부에서 인터럽트 마스킹 디스에이블 상태로 전환시키는 것을 특징으로 하는 적응적 인터럽트 처리 장치.
  13. I/O 서브미션 스레드 및 I/O 디바이스로부터 수신되는 인터럽트 신호에 기초한 인터럽트 루틴을 수행하는 중앙 처리 장치; 및
    시스템의 워크로드 상태에 기초하여 적응적 마스킹 모드를 결정하고, 상기 적응적 마스킹 모드로 결정된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 시간 간격이 초기 설정된 제1임계 값 미만인 경우에 상기 적응적 마스킹 모드로 결정된 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 중앙 처리 장치로 전달되는 것을 차단하는 인터럽트 마스킹 모드를 수행하는 적응적 인터럽트 처리 모듈을 포함하고,
    상기 인터럽트 마스킹 모드의 수행 구간에서 미처리된 인터럽트에 대한 레스폰스를 상기 I/O 서브미션 스레드에서 처리하고,
    상기 적응적 인터럽트 처리 모듈은,
    상기 적응적 마스킹 모드로 진입된 상기 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 인터럽트 마스킹 처리를 스킵하는 인터럽트 마스킹 디스에이블 상태로 전환시키고, 상기 I/O 서브미션 이벤트의 발생 시간 간격이 상기 제1임계 값 미만인 구간에 발생되는 인터럽트 신호에 응답하여 호스트에서의 인터럽트 컨텍스트로의 전환을 차단하는 것을 특징으로 하는 호스트.
  14. 제13항에 있어서,
    상기 I/O 서브미션 스레드에 따라서 발행된 커맨드 정보를 저장하는 서브미션 큐;
    상기 I/O 디바이스에서 실행이 완료된 커맨드 정보를 저장하는 컴플리션 큐; 및
    상기 I/O 서브미션 스레드에서 발행된 커맨드 정보를 상기 서브미션 큐에 저장하고, 상기 인터럽트 마스킹 모드의 수행 구간에서 상기 컴플리션 큐에 저장된 커맨드 정보에 대한 미처리 레스폰스를 처리하는 디바이스 드라이버를 더 포함함을 특징으로 하는 호스트.
  15. 제13항에 있어서, 상기 적응적 인터럽트 처리 모듈은
    시스템의 워크로드에 관련된 적어도 하나의 인자 값에 기초하여 I/O 디바이스에 대한 적응적 마스킹 모드 온/오프 상태를 결정하는 모드 판정부;
    상기 적응적 마스킹 모드 온 상태로 진입된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 간격이 임계 간격 범위 내에 있는지를 측정하는 타이머 회로;
    상기 결정된 적응적 마스킹 모드 온 상태를 유지하는 I/O 디바이스에 대하여 I/O 서브미션 이벤트가 발생될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하고, 상기 임계 간격 범위 내에서 I/O 서브미션 이벤트가 발생되지 않을 때 인터럽트 마스킹 디스에이블 상태로 전환시키는 인터럽트 마스킹 관리부; 및
    상기 인터럽트 마스킹 인에이블 상태에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 중앙 처리 장치로 출력되는 것을 차단하고, 상기 인터럽트 마스킹 디스에이블 상태에서는 상기 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 중앙 처리 장치로 출력되는 것을 허용하는 인터럽트 출력 처리부를 포함함을 특징으로 하는 호스트.
  16. 메모리 디바이스;
    호스트로부터 수신되는 I/O 서브미션 이벤트에 따라서 상기 메모리 디바이스에 데이터를 라이트하거나 상기 메모리 디바이스로부터 데이터를 읽어내는 동작을 수행하고, 상기 I/O 서브미션 이벤트에 대한 오퍼레이션 수행을 완료한 후에 인터럽트 신호를 발생시키는 메모리 컨트롤러; 및
    단위 시간당 상기 메모리 컨트롤러에서 발생되는 인터럽트 신호의 개수가 제1임계 값을 초과하는 경우에 적응적 마스킹 모드로 결정하고, 상기 적응적 마스킹 모드에서 상기 호스트로부터 수신되는 I/O 서브미션 이벤트의 발생 시간 간격이 제2임계 값 미만인 경우에 상기 인터럽트 신호가 상기 호스트로 출력되는 것을 차단하는 인터럽트 마스킹 모드를 수행하는 적응적 인터럽트 처리 모듈을 포함하고,
    상기 적응적 인터럽트 처리 모듈은,
    상기 적응적 마스킹 모드로 진입된 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 인터럽트 마스킹 처리를 스킵하는 인터럽트 마스킹 디스에이블 상태로 전환시키고, 상기 I/O 서브미션 이벤트의 발생 시간 간격이 상기 제1임계 값 미만인 구간에 발생되는 인터럽트 신호에 응답하여 상기 호스트에서의 인터럽트 컨텍스트로의 전환을 차단하는 것을 특징으로 하는 I/O 디바이스.
  17. 제16항에 있어서, 상기 적응적 인터럽트 처리 모듈은
    상기 적응적 마스킹 모드에서 상기 I/O 서브미션 이벤트가 수신될 때 인터럽트 마스킹 인에이블 상태로 전환시키거나 인터럽트 마스킹 인에이블 상태를 유지하고, 상기 I/O 서브미션 이벤트가 수신된 시점부터 상기 제2임계 값 이내에 새로운 I/O 서브미션 이벤트가 수신되지 않을 때 상기 인터럽트 마스킹 디스에이블 상태로 전환시키며,
    상기 인터럽트 마스킹 인에이블 상태에서는 상기 메모리 컨트롤러에서 발생되는 인터럽트 신호가 상기 호스트로 출력되는 것을 차단하고, 상기 인터럽트 마스킹 디스에이블 상태에서는 상기 메모리 컨트롤러에서 발생되는 인터럽트 신호가 상기 호스트로 출력되는 것을 허용하는 것을 특징으로 하는 I/O 디바이스.
  18. 제17항에 있어서, 상기 적응적 인터럽트 처리 모듈은
    상기 적응적 마스킹 모드에서 상기 I/O 서브미션 이벤트가 수신될 때마다 초기 설정 값부터 시간을 측정하는 타이머; 및
    상기 타이머의 측정 시간이 타깃 값에 도달하는 경우에 상기 인터럽트 마스킹 인에이블 상태에서 상기 인터럽트 마스킹 디스에이블 상태로 천이시키는 후처리부를 포함함을 특징으로 하는 I/O 디바이스.
  19. I/O 서브미션 이벤트를 I/O 디바이스로 전송하고, 상기 I/O 디바이스로부터 수신되는 인터럽트 신호에 기초한 인터럽트 처리를 수행하는 호스트; 및
    상기 호스트로부터 수신되는 I/O 서브미션 이벤트에 대한 오퍼레이션을 수행하고, 상기 I/O 서브미션 이벤트에 대한 오퍼레이션 수행을 완료한 후에 인터럽트 신호를 발생시키는 하나 이상의 I/O 디바이스를 포함하고,
    시스템의 워크로드에 관련된 적어도 하나의 인자 값에 기초하여 I/O 디바이스에 대한 적응적 마스킹 모드 온/오프 상태를 결정하고, 상기 적응적 마스킹 모드로 결정된 I/O 디바이스에 대한 I/O 서브미션 이벤트 발생 시간 간격이 제1임계 값 미만인 경우에 상기 적응적 마스킹 모드로 결정된 I/O 디바이스에서 발생되는 인터럽트 신호가 상기 호스트의 중앙 처리 장치로 전달되는 것을 차단하는 인터럽트 마스킹 모드를 수행하는 적응적 인터럽트 처리 모듈을 더 포함하고,
    상기 인터럽트 마스킹 모드의 수행 구간에서 미처리된 인터럽트에 대한 레스폰스를 상기 호스트의 I/O 서브미션 컨텍스트에서 처리하고,
    상기 적응적 인터럽트 처리 모듈은,
    상기 적응적 마스킹 모드로 진입된 상기 I/O 디바이스에 대하여 N(N은 1 이상의 정수)번째 I/O 서브미션 이벤트 발생 시점부터 임계 시간 길이의 구간까지 (N+1)번째 I/O 서브미션 이벤트가 발생되지 않으면, 인터럽트 마스킹 처리를 스킵하는 인터럽트 마스킹 디스에이블 상태로 전환시키고, 상기 I/O 서브미션 이벤트의 발생 시간 간격이 상기 제1임계 값 미만인 구간에 발생되는 인터럽트 신호에 응답하여 상기 호스트에서의 인터럽트 컨텍스트로의 전환을 차단하는 것을 특징으로 하는 시스템.
  20. 제19항에 있어서, 상기 호스트는
    I/O 서브미션 스레드에 따라서 발행된 커맨드 정보를 저장하는 서브미션 큐;
    상기 I/O 디바이스에서 실행이 완료된 커맨드 정보를 저장하는 컴플리션 큐; 및
    상기 I/O 서브미션 스레드에서 발행된 커맨드 정보를 상기 서브미션 큐에 저장하고, 상기 인터럽트 마스킹 모드의 수행 구간에서 상기 컴플리션 큐에 저장된 커맨드 정보에 대한 미처리 레스폰스를 처리하는 디바이스 드라이버를 더 포함함을 특징으로 하는 시스템.
KR1020150073927A 2015-05-27 2015-05-27 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템 KR102365113B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150073927A KR102365113B1 (ko) 2015-05-27 2015-05-27 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템
US15/014,639 US10102162B2 (en) 2015-05-27 2016-02-03 Method and apparatus for processing adaptive interrupt, host employing the same, I/O device and system
CN201610357449.2A CN106201937B (zh) 2015-05-27 2016-05-26 处理自适应中断的方法和装置、主机、i/o设备和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150073927A KR102365113B1 (ko) 2015-05-27 2015-05-27 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템

Publications (2)

Publication Number Publication Date
KR20160139299A KR20160139299A (ko) 2016-12-07
KR102365113B1 true KR102365113B1 (ko) 2022-02-18

Family

ID=57398673

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150073927A KR102365113B1 (ko) 2015-05-27 2015-05-27 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템

Country Status (3)

Country Link
US (1) US10102162B2 (ko)
KR (1) KR102365113B1 (ko)
CN (1) CN106201937B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102560251B1 (ko) * 2018-06-20 2023-07-26 삼성전자주식회사 반도체 장치 및 반도체 시스템
JP2021056550A (ja) 2019-09-26 2021-04-08 キオクシア株式会社 メモリシステム、メモリシステムの制御方法、および情報処理システム
US11068422B1 (en) * 2020-02-28 2021-07-20 Vmware, Inc. Software-controlled interrupts for I/O devices
US20230236994A1 (en) * 2022-01-27 2023-07-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for queue management with a coherent interface

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282697B1 (en) * 1998-09-18 2001-08-28 Wylci Fables Computer processing and programming method using autonomous data handlers
US6189065B1 (en) * 1998-09-28 2001-02-13 International Business Machines Corporation Method and apparatus for interrupt load balancing for powerPC processors
US6189066B1 (en) 1999-01-26 2001-02-13 3Com Corporation System and method for dynamically selecting interrupt time interval threshold parameters
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
JPWO2004059914A1 (ja) * 2002-12-26 2006-05-11 松下電器産業株式会社 ネットワーク端末装置、通信過負荷回避方法およびプログラム
US7478186B1 (en) * 2004-06-03 2009-01-13 Integrated Device Technology, Inc. Interrupt coalescer for DMA channel
US7634589B2 (en) * 2004-09-23 2009-12-15 International Business Machines Corporation Method for controlling peripheral adapter interrupt frequency by estimating processor load in the peripheral adapter
US8510491B1 (en) 2005-04-05 2013-08-13 Oracle America, Inc. Method and apparatus for efficient interrupt event notification for a scalable input/output device
EP1727024A1 (en) * 2005-05-27 2006-11-29 Sony Ericsson Mobile Communications AB Automatic language selection for text input in messaging context
US7702889B2 (en) * 2005-10-18 2010-04-20 Qualcomm Incorporated Shared interrupt control method and system for a digital signal processor
US7984281B2 (en) * 2005-10-18 2011-07-19 Qualcomm Incorporated Shared interrupt controller for a multi-threaded processor
US7987307B2 (en) * 2006-09-22 2011-07-26 Intel Corporation Interrupt coalescing control scheme
US7788434B2 (en) 2006-12-15 2010-08-31 Microchip Technology Incorporated Interrupt controller handling interrupts with and without coalescing
US8259576B2 (en) 2007-03-23 2012-09-04 Intel Corporation Method and apparatus for performing interrupt coalescing
US7788435B2 (en) 2008-01-09 2010-08-31 Microsoft Corporation Interrupt redirection with coalescing
CN101452406B (zh) * 2008-12-23 2011-05-18 北京航空航天大学 一种对操作系统透明的机群负载平衡方法
US8478924B2 (en) * 2009-04-24 2013-07-02 Vmware, Inc. Interrupt coalescing for outstanding input/output completions
US8244946B2 (en) 2009-10-16 2012-08-14 Brocade Communications Systems, Inc. Interrupt moderation
CN102906717B (zh) * 2010-05-28 2016-05-04 惠普发展公司,有限责任合伙企业 对管理控制器的存储器子系统进行初始化
US9009367B2 (en) * 2012-08-03 2015-04-14 Intel Corporation Adaptive interrupt moderation
US9164935B2 (en) 2013-01-04 2015-10-20 International Business Machines Corporation Determining when to throttle interrupts to limit interrupt processing to an interrupt processing time period
US9697149B2 (en) * 2013-04-11 2017-07-04 Said Bshara Low latency interrupt with existence of interrupt moderation
US9829949B2 (en) * 2013-06-28 2017-11-28 Intel Corporation Adaptive interrupt coalescing for energy efficient mobile platforms
US10380047B2 (en) * 2014-04-07 2019-08-13 Mellanox Technologies, Ltd. Traffic-dependent adaptive interrupt moderation
US20160124874A1 (en) * 2014-10-30 2016-05-05 Sandisk Technologies Inc. Method and apparatus for interrupt coalescing

Also Published As

Publication number Publication date
US10102162B2 (en) 2018-10-16
CN106201937A (zh) 2016-12-07
KR20160139299A (ko) 2016-12-07
CN106201937B (zh) 2021-12-14
US20160350242A1 (en) 2016-12-01

Similar Documents

Publication Publication Date Title
US9223514B2 (en) Erase suspend/resume for memory
US9021158B2 (en) Program suspend/resume for memory
US9741441B2 (en) Nonvolatile memory system including nonvolatile memory device and memory controller and operating method of memory controller
US8243525B1 (en) Refreshing non-volatile semiconductor memory by reading without rewriting
US8254172B1 (en) Wear leveling non-volatile semiconductor memory based on erase times and program times
US8305817B2 (en) Nonvolatile memory devices and program methods thereof in which a target verify operation and a pre-pass verify operation are performed simultaneously using a common verify voltage
KR102317786B1 (ko) 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스
KR102462385B1 (ko) 메모리 시스템 및 그것의 동작 방법
US8441856B2 (en) Method of providing an operating voltage in a memory device and a memory controller for the memory device
US9286990B1 (en) Storage device, nonvolatile memory and method operating same
KR102603245B1 (ko) 메모리 시스템 및 그것의 동작 방법
US11301388B2 (en) Storage device using buffer memory in read reclaim operation
US8902666B2 (en) Programming method for nonvolatile memory device
KR102365113B1 (ko) 적응적 인터럽트 처리 방법 및 장치와 이를 적용하는 호스트, i/o 디바이스 및 시스템
KR101967368B1 (ko) 반도체 메모리 장치 및 이의 동작 방법
US20110035536A1 (en) Non-volatile memory device generating wear-leveling information and method of operating the same
US9679638B2 (en) Semiconductor device and method of operating the same
US11081187B2 (en) Erase suspend scheme in a storage device
US20150046638A1 (en) Multi-bit memory device and on-chip buffered program method thereof
KR20140028714A (ko) 반도체 메모리 장치 및 이의 동작 방법
US10388395B2 (en) Storage device and bad block assigning method thereof
CN111105828A (zh) Nand读取命令的动态延迟
KR20160096969A (ko) 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템
KR20160025577A (ko) 메모리 디바이스 작동 관리
US20220171533A1 (en) Memorye system 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