KR101154800B1 - 스토리지 컨트롤러에서 인터럽트들의 우선순위화 - Google Patents

스토리지 컨트롤러에서 인터럽트들의 우선순위화 Download PDF

Info

Publication number
KR101154800B1
KR101154800B1 KR1020107000830A KR20107000830A KR101154800B1 KR 101154800 B1 KR101154800 B1 KR 101154800B1 KR 1020107000830 A KR1020107000830 A KR 1020107000830A KR 20107000830 A KR20107000830 A KR 20107000830A KR 101154800 B1 KR101154800 B1 KR 101154800B1
Authority
KR
South Korea
Prior art keywords
interrupts
host
storage controller
storage
interrupt control
Prior art date
Application number
KR1020107000830A
Other languages
English (en)
Other versions
KR20100037099A (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
Priority claimed from US11/772,742 external-priority patent/US7613860B2/en
Priority claimed from US11/772,734 external-priority patent/US7617345B2/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20100037099A publication Critical patent/KR20100037099A/ko
Application granted granted Critical
Publication of KR101154800B1 publication Critical patent/KR101154800B1/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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/24Interrupt
    • G06F2213/2404Generation of an interrupt or a group of interrupts after a predetermined number of interrupts

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

스토리지 컨트롤러는 호스트로부터 인터럽트 컨트롤 지시를 수신한다. 스토리지 컨트롤러에 결합된 적어도 하나의 스토리지 디바이스에 대한 호스트로부터 수신된 접근 요청들에 응답하여, 스토리지 컨트롤러는 제1의 복수의 인터럽트들을 발생시킨다. 여기서 제1의 복수의 인터럽트들은 적어도 하나의 스토리지 디바이스로의 접근이 그 호스트에게 허용되는지의 여부를 표시한다. 스토리지 컨트롤러는 제2의 복수의 인터럽트들을 발생시킨다. 여기서 제2의 복수의 인터럽트들은 제1의 복수의 인터럽트들과는 다른 그 호스트가 요청하지 않은 인터럽트들을 포함한다. 스토리지 컨트롤러는 수신된 인터럽트 컨트롤 지시에 기초하여 제1의 복수의 인터럽트들 중 몇 개 그리고 제2의 복수의 인터럽트들 중 몇 개를 송신할지를 컨트롤한다.

Description

스토리지 컨트롤러에서 인터럽트들의 우선순위화{PRIORITIZATION OF INTERRUPTS IN A STORAGE CONTROLLER}
본 발명은 호스트들로부터 수신된 인터럽트 컨트롤 지시들(interrupt control directives)에 기초하는 스토리지 컨트롤러(storage controller)에서의 인터럽트들(interrupts)의 우선순위화(prioritization)와 관련된다.
어떤 정보 기술 스토리지 시스템들은 복수의 호스트들 및 복수의 스토리지 디바이스들에 결합되는 스토리지 컨트롤러를 포함할 수 있다. 스토리지 컨트롤러는 스토리지 디바이스들에 대응하는 논리적 락들(logical locks)을 유지함으로써 복수의 스토리지 디바이스들로의 호스트들의 접근(access)을 컨트롤한다. 하나의 스토리지 디바이스에 접근하기 위해 하나의 호스트가 스토리지 컨트롤러에 명령을 보낼 때, 스토리지 컨트롤러는 그 스토리지 디바이스가 또 다른 호스트에 의한 접근을 위해 이미 락(lock)되어 있는지의 여부를 결정한다. 만약 그렇다면, 스토리지 컨트롤러는 그 스토리지 디바이스에 접근하기 위해서는 그 호스트를 대기시킬 수 있다. 그 호스트에게 상황(status)을 표시하기 위해, 스토리지 컨트롤러는 명령에 대응하는 하나의 인터럽트를 보낼 수 있다. 여기서 상기 인터럽트는 "접근 요청에 대응하는 인터럽트(interrupt responsive to an access request)" 또는 "주의 인터럽트(attention interrupt)"로 일컬어질 수 있다. 예를 들어, 만약 스토리지 컨트롤러가, 그 스토리지 디바이스가 또 다른 호스트에 의한 접근을 위해 더 이상 락되어 있지 않다고 결정하면, 스토리지 컨트롤러는 복수의 대기 중인 호스트들 중 어느 것이 현재 그 스토리지 디바이스에 접근할 수 있는지를 결정할 수 있다. 그런 다음 스토리지 컨트롤러는 접근 요청에 대응하는 인터럽트를 결정된 호스트로 보낼 수 있다. 여기서 상기 접근 요청에 대응하는 인터럽트는, 그 스토리지 디바이스로의 접근이 그 결정된 호스트에 의해 수행될 수 있다는 것을 그 결정된 호스트에게 표시한다. 또한, 만약 스토리지 컨트롤러가, 또 다른 호스트에 의한 접근을 위해 그 스토리지 디바이스가 락되어 있다고 결정하면, 스토리지 컨트롤러는 락을 설정(set)하기 위한 명령이 그 명령에 대한 응답으로서 성공적이지 않았다는 것을 그 호스트에게 표시할 수 있다.
어떤 시스템들에서, 호스트가 호스트 명령을 통해 락을 확보하고자 할 때, 그 호스트 명령에 대한 스토리지 컨트롤러로부터의 응답은 그 호스트가 락을 확보했다는 것을 그 호스트에게 표시한다. 만약 그 호스트가 락을 확보할 수 없다면, 그 호스트 명령에 대한 스토리지 컨트롤러로부터의 응답은 그 호스트가 락을 확보하지 않았다는 것을 그 호스트에게 표시한다. 그 호스트가 확보할 수 없었던 락을 위해 그 호스트가 대기하는 동안, 락의 상태는 변할 수 있고 스토리지 컨트롤러는 락이 승인되었다는 것을 그 호스트에게 전달하기 위해 그 호스트에 대한 하나의 주의 인터럽트를 발생시킬 수 있다. 그 주의 인터럽트를 받는 즉시, 그 호스트는 "읽기 메시지(read message)" 명령을 보낼 수 있고, 대응하여 "락 승인(rock granted)" 메시지가 제공받을 수 있다. 또한, 만약 락을 유지(hold)하는 호스트가 락을 위한 어떤 잠재적인 충돌 주의들(contention attentions)을 그 호스트가 통지받도록 요청했다면, 또 다른 호스트가 락을 확보할 수 없을 때 락을 유지하는 그 호스트는 "충돌" 주의를 제공받을 수 있다. 여기서 상기 충돌 주의는 주의 인터럽트 및 읽기 메시지 메커니즘들을 통해 제공될 수 있다.
어떤 상황들에서는, 스토리지 컨트롤러는 복수의 호스트들에 다른 인터럽트들을 비동기식으로(asynchronously) 보낼 수 있다. 이들 다른 인터럽트들은 호스트들에 의해 분명하게 요청됨이 없이 스토리지 컨트롤러에 의해 발생되기 때문에, 그것들은 요청하지 않은 인터럽트들(unsolicited interrupts)로 일컬어질 수 있다. 예를 들어, 스토리지 컨트롤러는 호스트들에게 상태 변경 인터럽트들(state change interrupts)을 보낼 수 있다. 또한 다른 요청하지 않은 인터럽트들 - 예를 들어, 스토리지 컨트롤러에 의해 수행 중인 카피 동작들의 상황을 표시하는 인터럽트들 - 이 스토리지 컨트롤러에 의해 호스트들로 보내질 수 있다.
발명의 일 측면에 따라 스토리지 컨트롤러는 호스트로부터 인터럽트 컨트롤 지시(interrupt control directive)를 수신한다. 상기 스토리지 컨트롤러는, 상기 스토리지 컨트롤러에 결합된 적어도 하나의 스토리지 디바이스에 대한 상기 호스트로부터 수신된 접근 요청들(access requests)에 응답하여, 제1의 복수의 인터럽트들을 발생시킨다. 상기 제1의 복수의 인터럽트들은 상기 적어도 하나의 스토리지 디바이스로의 접근이 상기 호스트에게 허용되는지의 여부를 표시(indicate)한다. 상기 스토리지 컨트롤러는 제2의 복수의 인터럽트들을 발생시킨다. 상기 제2의 복수의 인터럽트들은 상기 제1의 복수의 인터럽트들과는 다른 상기 호스트가 요청하지 않은 인터럽트들(unsolicited interrupts)을 포함한다. 상기 스토리지 컨트롤러는, 상기 수신된 인터럽트 컨트롤 지시에 기초하여, 상기 제1의 복수의 인터럽트들 중 몇 개 그리고 상기 제2의 복수의 인터럽트들 중 몇 개를 상기 호스트로 송신할지를 컨트롤한다.
특정 실시예들에서, 하나의 주기 동안(during a period of time) 상기 호스트로 송신될 상기 제1의 복수의 인터럽트들과 상기 제2의 복수의 인터럽트들의 미리결정된 비(ratio)는 상기 수신된 인터럽트 컨트롤 지시에 표시된다. 또한 특정 실시예들에서, 상기 제2의 복수의 인터럽트들은 상태 변경 인터럽트들(state change interrupts)을 포함한다.
다른 실시예들에서, 상기 수신된 인터럽트 컨트롤은 상기 스토리지 컨트롤러에 의해 처리되어, 상기 제1의 복수의 인터럽트들 중 몇 개가 상기 호스트로 송신되기 위해 대기 중인지를 결정하고, 그리고 상기 제2의 복수의 인터럽트들 중 몇 개가 상기 호스트로 송신되기 위해 대기 중인지를 결정한다. 상기 호스트로 송신되기 위해 대기 중인 상기 제1의 복수의 인터럽트들의 제1의 미리결정된 퍼센티지는 상기 호스트로 송신된다. 상기 호스트로 송신되기 위해 대기 중인 상기 제2의 복수의 인터럽트들의 제2의 미리결정된 퍼센티지는 상기 호스트로 송신된다. 여기서 상기 제1의 미리결정된 퍼센티지 및 상기 제2의 미리결정된 퍼센티지는 상기 인터럽트 컨트롤 지시에 표시된다. 특정 실시예들에서, 상기 제1의 미리결정된 퍼센티지 및 상기 제2의 미리결정된 퍼센티지는 상기 스토리지 컨트롤러에 의해 상기 호스트로부터 수신되는 상기 인터럽트 컨트롤 지시에 상기 호스트에 의해 표시된다.
또 다른 실시예들에서, 상기 호스트를 포함하는 복수의 호스트들은 상기 스토리지 컨트롤러에 결합되고, 적어도 하나의 스토리지 디바이스를 포함하는 복수의 스토리지 디바이스들은 상기 스토리지 컨트롤러에 결합된다. 복수의 락들은 상기 복수의 호스트들에 의해 상기 복수의 스토리지 디바이스들로의 접근을 컨트롤하기 위해 상기 스토리지 컨트롤러에 의해 유지된다. 여기서 상기 복수의 호스트들 중 선택된 호스트는 상기 선택된 스토리지 디바이스로의 접근을 컨트롤하는 상기 복수의 락들 중 선택된 락에 기초하여 상기 복수의 스토리지 디바이스들 중 선택된 스토리지 디바이스에 접근하도록 허용된다.
특정 실시예들에서, 상기 인터럽트 컨트롤 지시는 상기 호스트에서 갱신(update)된다. 상기 갱신된 인터럽트 컨트롤 지시는 상기 호스트에 의해 상기 스토리지 컨트롤러로 송신된다. 상기 스토리지 컨트롤러는 상기 갱신된 인터럽트 컨트롤 지시들에 기초하여, 상기 제1의 복수의 인터럽트들 중 몇 개 그리고 상기 제2의 복수의 인터럽트들 중 몇 개를 호스트로 송신할지를 컨트롤한다.
이제 발명의 실시예들은 단지 예로 첨부되는 도면들을 참조하여 기술된다.
도 1은 본 발명에 따른 컴퓨팅 환경의 블록도를 도시한다.
도 2는 본 발명에 따라 컴퓨팅 환경의 스토리지 컨트롤러 및 예시적 호스트에서 구현되는 어플리케이션들 및 데이터 구조들을 보여주는 블록도를 도시한다.
도 3은 본 발명에 따라 호스트들로부터 수신된 인터럽트 컨트롤 명령들에 기초한 스토리지 컨트롤러에서의 인터럽트들의 우선순위화를 위한 동작들을 도시한다.
도 4는 본 발명에 따라 호스트로 송신하기 위한 접근 요청들에 대응하는 인터럽트들 대 다른 요청하지 않은 인터럽트들의 비(ratio)를 선택하기 위한 동작들을 도시한다.
도 5는 본 발명에 따라 호스트로 인터럽트들을 송신하기 위한 동작들 - 여기서 스토리지 컨트롤러에서 대기 중인 접근 요청들에 대응하는 인터럽트들의 특정 퍼센티지는 상기 호스트로 송신되고, 스토리지 컨트롤러에서 대기 중인 다른 요청하지 않은 인터럽트들의 특정 퍼센티지는 상기 호스트로 송신됨 - 을 도시한다.
도 6은 본 발명의 어떤 기술된 측면들이 구현되는 컴퓨터 구조의 블록도를 도시한다.
이하의 설명에서, 본 명세서의 일부를 이루고 몇몇 실시예들을 설명하는 첨부되는 도면들이 참조된다. 그러나, 다른 실시예들이 이용될 수 있고 구조적 및 동작적인 변경들이 이뤄질 수 있다는 것이 이해되어야 한다.
도 1은 본 발명의 특정 실시예에 따른 컴퓨팅 환경(100)의 블록도를 도시한다. 컴퓨팅 환경(100)에서, 스토리지 컨트롤러(102)는 복수의 호스트들(104a, 104b, ..., 104n) 및 복수의 스토리지 디바이스들(106a, 106b, ..., 106m)에 결합된다. 호스트들(104a, ..., 104n)과 스토리지 컨트롤러(102) 간의 결합 및 스토리지 디바이스들(106a, ..., 106m)과 스토리지 컨트롤러(102) 간의 결합은 직접적으로 이뤄지거나 기술 분야에서 알려진 적절한 네트워크(예를 들어, SAN(storage area network), LAN(local area network), 인터넷, WAN(wide area network) 등)를 통해 이뤄질 수 있다.
스토리지 컨트롤러(102) 및 호스트들(104a, ..., 104n)은 기술분야에서 알려진 적절한 컴퓨테이셔널 디바이스(computational device)(예를 들어, 서버, 개인용 컴퓨터, 워크스테이션, 메인프레임 컴퓨터, 전화 디바이스(telephony device), 또는 그 밖의 다른 적절한 컴퓨테이셔널 디바이스 등)를 포함할 수 있다. 특정 실시예들에서, 스토리지 컨트롤러(102)는 제1의 컴퓨테이셔널 디바이스이고 호스트(104a)와 같은 예시적 호스트는 제2의 컴퓨테이셔널 디바이스를 포함할 수 있다. 스토리지 디바이스들(106a, ..., 106m)은 기술 분야에서 알려진 어떤 적절한 디바이스(예를 들어, 직접 접근 스토리지 디바이스들(direct access storage devices), 하드 디스크들, 테이프 드라이브들 등)를 포함할 수 있다.
스토리지 컨트롤러(102)는 락 관리 어플리케이션(rock management application(108) 및 인터럽트 관리 어플리케이션(interrupt management application)(109)를 포함한다. 이러한 어플리케이션들은 소프트웨어, 하드웨어, 펌웨어 또는 이들의 조합으로 구현된 어떤 적절한 어플리케이션들을 포함한다. 락 관리 어플리케이션(108)은 복수의 락들(110a, 110b, ..., 110r)을 사용하여 호스트들(104a, ..., 104n)이 스토리지 디바이스들(106a, ..., 106m)로 접근하는 것을 컨트롤한다. 예를 들어, 만약 호스트(104a)가 락 관리 어플리케이션(108)에 의해 스토리지 디바이스(106b)에 접근하도록 허용된다면, 락(110b)의 존재는 스토리지 디바이스(106b)가 락되어 있다는 것을 표시할 수 있다. 락(110b)이 스토리지 디바이스(106b)에 대해 유지되는 한 그 호스트(104a) 이외의 다른 호스트들은 그 스토리지 디바이스(106b)에 접근하도록 허용되지 않는다.
스토리지 컨트롤러(102)는 다른 유형의 인터럽트들을 발생시킬 수 있다. 이러한 발생된 인터럽트들은 호스트들(104a, ..., 104n)로 송신되거나 호스트들(104a, ..., 104n)로 송신되기 위해 대기할 수 있다. 제1 유형의 인터럽트는 접근 요청들에 대응하는 인터럽트들(110)로 일컬어질 수 있다. 이 접근 요청들에 대응하는 인터럽트들(110)은, 호스트들(104a, ..., 104n)로부터 수신된 스토리지 디바이스들(106a, ..., 106m)에 대한 접근 요청들에 응답하여 스토리지 컨트롤러(102)에 의해 발생된다. 제2 유형의 인터럽트는 다른 요청하지 않은 인터럽트들(112)로 일컬어질 수 있다. 이 다른 요청하지 않은 인터럽트들(112)은 상태 변경들, 특정 태스크들의 완료, 특정 이벤트들의 발생 등과 같은 이벤트들을 호스트들(104a, ..., 104n)에게 표시하기 위해 스토리지 컨트롤러(102)에 의해 발생될 수 있다. 다른 요청하지 않은 인터럽트들(112)은 호스트들(104a, ..., 104n)에 의해 명확하게 요청되지 않은 특정 인터럽트를 포함할 수 있는데, 이들은 호스트들(104a, ..., 104n)로 송신하기 위해 스토리지 컨트롤러(102)에 의해 발생된 것들이다.
스토리지 컨트롤러(102)는 호스트들(104a, ..., 104n)로부터 수신된 인터럽트 컨트롤 지시들(114)을 포함할 수 있다. 인터럽트 컨트롤 지시들(114)에 포함된 정보는 호스트들(104a, ..., 104n)의 사용자들에 의해 생성 또는 갱신되어 호스트들(104a, ..., 104n)로부터 스토리지 컨트롤러(102)로 송신될 수 있다. 호스트(104a)와 같은 선택된 호스트에 대한 인터럽트 컨트롤 지시들(114)은, 스토리지 컨트롤러(102)로부터 선택된 호스트에 대한 인터럽트들의 다양한 유형의 흐름(flow)을 컨트롤하는 방법에 관한 정보를 포함할 수 있다. 예를 들어, 선택된 호스트에 대응하는 인터럽트 컨트롤 지시들은, 스토리지 컨트롤러(102)로부터 그 선택된 호스트로 송신되는 접근 요청들에 대응하는 인터럽트들(110)과 다른 요청하지 않은 인터럽트들(112) 간에 특정 비(ratio)가 유지되어야 한다는 것을 나타낼 수 있다.
선택된 호스트에 의해 만들어진 스토리지 디바이스들에 대한 접근 요청들에 응답하여, 만약 그 선택된 호스트가 특정 주기 동안 접근 요청들에 대응하는 인터럽트들(110)을 수신하지 않는다면, 그 선택된 호스트의 호스트 어플리케이션들은 프리즈(freeze)되는 한편 그 호스트 어플리케이션들은 그 스토리지 디바이스들에 접근하기 위해 대기한다. 그러한 상황의 발생을 방지하기 위해, 그 선택된 호스트는 스토리지 컨트롤러(102)로 인터럽트 컨트롤 지시들(114)에 포함된 정보를 송신할 수 있다. 특정 실시예들에서, 인터럽트 관리 어플리케이션(109)은 인터럽트 컨트롤 지시들(114)을 사용하여, 접근 요청들에 대응하는 인터럽트들(110) 및 다른 요청하지 않은 인터럽트들(112)의 호스트들(104a, ..., 104n)로의 흐름을 컨트롤한다.
도 2는 본 발명의 특정 실시예들에 따라 컴퓨팅 환경(100)의 예시적 호스트(104a)와 스토리지 컨트롤러(102)에서 구현되는 어플리케이션들 및 데이터 구조들을 보여주는 블록도를 도시한다. 도 2는 예시적 호스트는 호스트(104a)를 보여주지만, 그 예시적 호스트는 도 1에 도시된 다른 호스트들(104a, ..., 104n) 중 어떤 것에 대응할 수 있다.
예시적 호스트(104a)는 호스트 어플리케이션(200), 접근 요청 명령들(202), 및 인터럽트 컨트롤 지시들(204)을 포함한다. 호스트 어플리케이션(200)은 스토리지 디바이스들(106a, ..., 106m)에 접근하기 위해 스토리지 컨트롤러(102)에 접근 요청 명령들(202)을 송신할 수 있다. 호스트(104a)에 유지되는 인터럽트 컨트롤 지시들(204)은 호스트(104a)의 사용자에 의해 생성될 수 있고 호스트(104a)의 사용자에 의해 주기적으로 갱신될 수 있다. 예를 들어, 특정 실시예들에서 특정 인터럽트 컨트롤 지시들(204)이 사용자에 의해 생성된 후, 그 사용자는 호스트(104a)에서의 인터럽트들의 수신과 관련된 새로운 요구사항(requirement)을 반영하기 위해 인터럽트 컨트롤 장차(at a future time) 인터럽트 컨트롤 지시들(204)을 갱신할 수 있다. 인터럽트 컨트롤 지시들(204)은 처음에 호스트(104a)로부터 스토리지 컨트롤러(102)로 송신되고, 인터럽트 컨트롤 지시들(204)에 대한 갱신들은 호스트(104a)로부터 스토리지 컨트롤러(102)로 전파(propagate)된다.
스토리지 컨트롤러(102)는 예시적 호스트(102a)에 대응하는 정보(206)를 유지한다. 다른 호스트들(102b, ..., 102n)은 스토리지 컨트롤러(102)에 그들과 연관된 대응하는 정보를 갖는다. 정보(205)는 접근 요청들에 대응하는 인터럽트(208)(이는 또한 제1의 복수의 인터럽트들로 일컬어짐), 및 다른 요청하지 않은 인터럽트들(210)(이는 또한 제2의 복수의 인터럽트들로 일컬어짐)을 포함할 수 있다. 또한 예시적 호스트(102a)에 대한 정보(206)는 스토리지 컨트롤러(102)에서 수신된 예시적 호스트(104)의 현재의 인터럽트 컨트롤 지시들(212)을 포함할 수 있다.
스토리지 컨트롤러(102)의 인터럽트 관리 어플리케이션(109)은 스토리지 컨트롤러(102)에서 호스트(104a)로부터의 인터럽트 컨트롤 지시(204)를 수신하여, 그 인터럽트 컨트롤 지시(204)를 현재의 인터럽트 컨트롤 지시들(212)에 저장한다. 스토리지 컨트롤러(102)는 스토리지 컨트롤러(102)에 결합된 적어도 하나의 스토리지 디바이스에 대해 호스트(104a)로부터 수신된 접근 요청들(202)에 응답하여 제1의 복수의 인터럽트들(206)을 발생시킨다. 여기서 제1의 복수의 인터럽트들(206)은 적어도 하나의 스토리지 디바이스로의 접근이 호스트(104a)에게 허용되는지의 여부를 표시한다. 스토리지 컨트롤러(102)는 제2의 복수의 인터럽트들(210)을 발생시킨다. 여기서 제2의 복수의 인터럽트들(210)은 호스트(104a)에 대해 요청하지 않은 인터럽트들을 포함한다. 스토리지 컨트롤러(102)에서의 인터럽트 관리 어플리케이션(109)은, 수신된 인터럽트 컨트롤 지시(212)에 기초하여, 제1의 복수의 인터럽트들(208) 중 몇 개 그리고 제2의 복수의 인터럽트들(210) 중 몇 개가 호스트(104a)로 송신될지를 컨트롤한다.
도 3은 본 발명의 특정 실시예들에 따라 호스트들로부터 수신된 인터럽트 컨트롤 지시들에 기초하여 스토리지 컨트롤러(102)에서 인터럽트들의 우선순위화(prioritization)를 위한 동작들을 도시한다. 도 3에 도시된 동작들은 컴퓨팅 환경(100)의 호스트들(104a, ..., 104n) 및 스토리지 컨트롤러(102)에서 구현될 수 있다.
컨트롤은 블록 300에서 시작한다. 여기서 호스트(104a)는 호스트(104a)에 대한 다른 유형의 인터럽트들의 흐름을 컨트롤하기 위해 스토리지 컨트롤러(102)에 의해 사용될 수 있는 인터럽트 컨트롤 지시(204)를 유지한다. 호스트는 스토리지 컨트롤러(102)로 인터럽트 컨트롤 지시(204)를 송신하고(블록 302에서), 그런 다음 스토리지 디바이스들(106a, ..., 106m)에 포함된 적어도 하나의 스토리지 디바이스에 대한 접근 요청들(202)을 스토리지 컨트롤러(102)로 송신한다(블록 304에서).
블록 306에서, 스토리지 컨트롤러(102)는 호스트(104a)로부터 인터럽트 컨트롤 지시(204)를 수신한다. 블록 308에서, 스토리지 컨트롤러(102)는 호스트(104a)로부터 적어도 하나의 스토리지 디바이스에 대한 접근 요청들(202)을 수신한다.
컨트롤은 블록 308에서부터는 병렬로 블록 310 및 312로 진행되는데, 블록 310에서, 스토리지 컨트롤러(102)는 접근 요청들에 대응하는 인터럽트들(208)(제1의 복수의 인터럽트들)을 발생시키며, 접근 요청들에 대응하는 인터럽트들(208)은 상기 적어도 하나의 스토리지 디바이스가 호스트(104a)에 허용되는지의 여부를 표시한다. 또한 스토리지 컨트롤러(102)는 다른 요청하지 않은 인터럽트들(제2의 복수의 인터럽트들)을 발생시킨다(블록 312에서).
컨트롤은 블록 310 및 312에서 블록 314로 진행된다. 블록 314에서, 스토리지 컨트롤러(102)는 수신된 인터럽트 컨트롤 지시(212)에 기초하여, 접근 요청들에 대응하는 인터럽트들 중 몇 개 그리고 다른 요청하지 않은 인터럽트들 중 몇 개를 호스트(104a)로 송신할지를 컨트롤한다. 스토리지 컨트롤러(102)는 결정된 수의 접근 요청들에 대응하는 인터럽트들 및 결정된 수의 다른 요청하지 않은 인터럽트들을 호스트(104a)로 송신한다(블록 316에서).
호스트(104a)는 상기 결정된 수의 접근 요청들에 대응하는 인터럽트들 및 상기 결정된 수의 다른 요청하지 않은 인터럽트들을 스토리지 컨트롤러(102)로부터 수신한다(블록 318에서). 호스트(104a)는 인터럽트 컨트롤 지시들(204)을 통해 어떻게 접근 요청들에 대응하는 인터럽트들 및 다른 요청하지 않은 인터럽트들의 흐름이 관리되어야 하는지를 스토리지 컨트롤러(102)에게 표시되므로, 호스트 어플리케이션(200)에 대한 대기 시간이 호스트(104a)에서의 관리가능한 수준에서 유지될 수 있고, 접근 요청들(208)에 응답하여 인터럽트들을 받지않는(non-receipt) 것의 결과로서 호스트(104a)에서 초기 프로그램 로드 동작들을 수행할 가능성은 감소된다.
도 4는 본 발명의 특정 실시예들에 따라 접근 요청들에 대응하는 인터럽트들 대 다른 요청하지 않은 인터럽트들의 비(ratio)를 선택하기 위한 동작들을 도시한다. 도 4에 도시된 동작들은 컴퓨팅 환경(100)의 스토리지 컨트롤러(102)에서 구현될 수 있다.
컨트롤은 블록 400에서 시작한다. 여기서 호스트(104a)는, 접근 요청들에 대응하는 인터럽트들과 호스트에서 수신하는 것이 바람직한 다른 요청하지 않은 인터럽트들의 미리결정된 비를 인터럽트 컨트롤 지시들(204)에 표시했다. 예를 들어, 호스트(104a)는 호스트(104a)로 송신된 인터럽트들의 그룹에서 미리결정된 비가 0.5, 즉 호스트(104a)로 송신된 접근 요청들에 대응하는 각각의 인터럽트(208)에 대해, 두 개의 다른 요청하지 않은 인터럽트들(210)이 또한 호스트(104a)로 송신되어야 한다는 것을 표시할 수도 있다.
컨트롤은 블록 402로 진행된다. 여기서 스토리지 컨트롤(102)은 표시된 미리결정된 비에 기초하여 접근 요청들에 대응하는 인터럽트들(208) 중 몇 개 그리고 다른 요청하지 않은 인터럽트들(210) 중 몇 개를 호스트(104a)로 송신할지를 결정한다. 스토리지 컨트롤러(102)는 접근 요청들에 대응하는 결정된 수의 인터럽트들을 호스트(104a)로 송신하고(블록 404에서), 또한 결정된 수의 다른 요청하지 않은 인터럽트들을 호스트(104a)로 송신한다(블록 406에서).
따라서, 도 4는 한 주기 동안 호스트로 송신될 제1의 복수의 인터럽트들(208)과 제2의 복수의 인터럽트들(210)의 미리결정된 비가 수신된 인터럽트 컨트롤 지시(212)에 표시되는 특정 실시예들을 나타낸다.
도 5는 본 발명의 특정 실시예들에 따라 호스트로 송신하기 위한 동작들 - 여기서 스토리지 컨트롤러(102)에서 대기 중인 접근 요청들에 대응하는 인터럽트들의 특정 퍼센티지는 상기 호스트로 송신되고, 스토리지 컨트롤러(102)에서 대기 중인 다른 요청하지 않은 인터럽트들의 특정 퍼센티지는 상기 호스트로 송신됨 - 을 도시한다. 도 5에 도시된 동작들은 컴퓨팅 환경(100)의 스토리지 컨트롤러(102)에서 구현될 수 있다.
컨트롤은 블록 500에서 시작하고, 여기서 호스트(104a)는 다음의 인터럽트 컨트롤 지시들(204)에 표시한다.
(i) 호스트(104a)가 수신하기를 선호하는, 호스트(104a)로 송신되기 위해 대기 중인 접근 요청들에 대응하는 인터럽트들(208)의 제1의 미리결정된 퍼센티지; 및
(ii) 호스트(104a)가 수신하기를 선호하는, 호스트(104a)로 송신되기 위해 대기 중인 다른 요청하지 않은 인터럽트들(210)의 제2의 미리결정된 퍼센티지.
컨트롤은 블록 502로 진행된다. 여기서 스토리지 컨트롤러(102)는 접근 요청들에 대응하는 인터럽트들 중 몇 개가 호스트(104a)로 송신되기 위해 대기 중인지를 결정한다. 또한 스토리지 컨트롤러(102)는 다른 요청하지 않은 인터럽트들 중 몇 개가 호스트(104a)로 송신되기 위해 대기 중인지를 결정한다.
스토리지 컨트롤러(102)는 호스트(104a)로 송신되기 위해 대기 중인 접근 요청들의 제1의 미리결정된 퍼센티지에 대응하는 인터럽트들을 호스트(104a)로 송신한다(블록 506에서). 스토리지 컨트롤러(102)는 또한 호스트(104a)로 송신되기 위해 대기 중인 다른 요청하지 않은 인터럽트들의 제2의 미리결정된 퍼센티지를 호스트로 송신한다(블록 508).
따라서, 도 5는 스토리지 컨트롤러(102)가 스토리지 컨트롤러(102)에서의 대기열(queue)에서 대기 중인 특정 퍼센티지의 다른 유형들의 인터럽트들을 호스트(104a)로 송신하는 특정 실시예들을 도시한다. 예를 들어, 스토리지 컨트롤러(102)는 예시적 실시예에서 스토리지 컨트롤러(102)에서의 대기열에서 대기 중인 접근 요청들에 대응하는 인터럽트들(208)의 20% 및 스토리지 컨트롤러(102)에서의 대기열에서 대기 중인 다른 요청하지 않은 인터럽트들(210)의 30%를 송신한다.
특정 실시예들은 호스트로부터 수신된 인터럽트 컨트롤 지시들(212)에 기초하여 호스트에 대한 접근 요청들에 대응하는 인터럽트들(208)의 흐름을 컨트롤한다. 이 실시예들에서 다른 유형의 인터럽트들의 흐름을 컨트롤함에 의해, 다른 요청하지 않은 인터럽트들(210)의 존재는 접근 요청들에 대응하는 인터럽트들(208)이 호스트로 보내지는 것을 방지할 수 없다. 그 결과, 스토리지 디바이스로의 접근을 위해 대기 중인 호스트 어플리케이션들의 가능성이 감소된다.
설명된 기술들은 소프트웨어, 펌웨어, 마이크로코드, 하드웨어 및/또는 이들의 조합과 관련된 방법, 장치, 또는 제조 물품으로 구현될 수 있다. 여기서 사용되는 "제조 물품(article of manufacture)" 이라는 용어는 매체 내에 구현되는 코드 또는 로직(logic)을 일컬을 수 있는데, 이러한 매체는 하드웨어 로직(예를 들면, 집적회로 칩, PGA(Programmable Gate Array), ASIC(Application Specific Integrated Circuit) 등), 또는 자기 스토리지 매체(예, 하드 디스크 드라이브, 플로피 디스크, 테이프 등), 광 스토리지(CD-ROM, 광 디스크 등), 휘발성 및 비휘발성 메모리 디바이스들[예, EEPROM(Electrically Erasable Programmable Read Only Memory), ROM(Read Only Memory), PROM(Programmable Read Only Memory), RAM(Random Access Memory), DRAM(Dynamic RAM), SRAM(Static RAM), 플래쉬, 펌웨어, 프로그램가능 로직 등]과 같은, 컴퓨터 판독가능 스토리지 매체를 포함할 수 있다. 컴퓨터 판독가능 스토리지 매체에서의 코드는 프로세서에 의해 접근되어 실행된다. 코드 또는 로직이 인코딩된 매체는 또한 광섬유, 동 케이블 등과 같은 전송 매체 또는 공간을 통해 전파되는 전송 신호들을 포함할 수 있다. 코드 또는 로직이 인코딩된 전송 신호는 무선 신호, 위성 전송, 전파들(radio waves), 적외선 신호들 등을 더 포함할 수 있다. 코드 또는 로직이 인코딩된 전송 신호는 송신국(tansmitting station)에 의해 송신되고 수신국(receiving station)에 의해 수신될 수 있다. 여기서 전송 신호에 인코딩된 코드 또는 로직은 수신국 및 송신국 또는 디바이스들에서의 하드웨어 또는 컴퓨터 판독가능 매체에 디코딩되어 저장될 수 있다. 또한, "제조 물품"은 코드가 구체화되고, 처리되고, 실행되는 하드웨어 및 소프트웨어 컴포넌트들의 조합을 포함할 수 있다. 물론, 기술 분야에서 숙련된 자는 실시예들의 범위를 벗어남이 없이 많은 변경들(modifications)이 이뤄질 수 있고, 제조 물품이 어떤 정보 저장 매체(information bearing medium)를 포함할 수 있다는 것을 알 수 있을 것이다. 예를 들어, 제조 물품은 그 물품 내에 저장된 명령들을 갖는 스토리지 매체를 포함하는데, 상기 명령들은 머신(machine)에 의해 실행될 때 수행되고 있는 동작들을 야기한다.
특정 실시예들은 전적인 하드웨어 구현, 전적인 소프트웨어 구현, 또는 하드웨어와 소프트웨어 엘리먼트들 둘 다를 포함하는 구현을 취할 수 있다. 바람직한 실시예에서, 발명은 소프트웨어로 구현되며, 이 소프트웨어는 펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함할 수 있으나, 이러한 것으로 한정되는 것은 아니다.
나아가, 특정 실시예들은 컴퓨터 프로그램 제품의 형태를 취할 수 있으며, 이 컴퓨터 프로그램 제품은 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체로부터 접근가능하고, 이 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 컴퓨터 또는 어떤 명령 실행 시스템에 의해 또는 컴퓨터 또는 어떤 명령 실행 시스템과 연결되어 사용하기 위한 프로그램 코드를 제공한다. 이를 설명하기 위해, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해 또는 이들과 연결되어 사용하기 위한 프로그램을 포함, 저장, 전달, 전파, 전송할 수 있는 어떤 장치일 수 있다. 그러한 매체는 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템(또는 장치 또는 디바이스) 또는 전파 매체(propagation medium)일 수 있다. 컴퓨터 판독가능 매체의 예들은 반도체 또는 솔리드 스테이트 메모리(solid state memory), 자기 테이프, 착탈식 컴퓨터 디스켓, RAM, ROM, 리지드 자기 디스크(rigid magnetic disk) 및 광 디스크를 포함한다. 광 디스크들의 현재의 예들은 CD-ROM, CD-R/W(compact disk-read/write) 및 DVD를 포함한다.
"특정 실시예들", "일 실시예", "실시예", 실시예들", "상기 실시예", "상기 실시예들", "하나 또는 그 이상의 실시예들", "일부 실시예들", 및 "하나의 실시예"는 만약 특별하게 명시적으로 그렇지 않은 것으로 표현되지 않는다면, 하나 또는 그 이상의(모두가 아니라) 실시예들을 의미한다. "포함하는", "구비하는", "갖는" 이라는 용어 및 그 변형들은 본 명세서에서는, 만약 특별하게 명시적으로 그렇지 않은 것으로 표현되지 않는다면, "그러한 것들로 한정되지 아니함"을 의미한다. 항목들(items)의 나열된 목록은 만약 특별하게 명시적으로 그렇지 않은 것으로 표현되지 않았다면, 그 항목들의 일부 또는 모두가 상호 배타적인 것을 의미하지는 않는다. "하나의", "한", 및 "일" 이라는 용어는 만약 특별하게 명시적으로 그렇지 않은 것으로 표현되지 않았다면 "하나 또는 그 이상(one or more)"을 의미한다.
만약 특별하게 명시적으로 그렇지 않은 것으로 표현되지 않았다면, 서로 간에 통신하는 디바이스들은 서로 간에 연속해서 통신할 필요가 없다. 또한, 서로 간에 통신하는 디바이스들은 직접 통신할 수도 있고, 또는 하나 또는 그 이상의 중재자들(intermediaries)을 통해 간접적으로 통신할 수도 있다. 또한, 서로 간에 통신하는 몇몇 컴포넌트들을 갖는 일 실시예의 설명은 그러한 모든 컴포넌트들이 필요하다는 것을 의미하지는 않는다. 그 반대로, 다양한 선택적인 컴포넌트들이 매우 다양한 가능한 실시예들을 설명하기 위해 기술되었다.
나아가, 비록 처리 단계들, 방법 단계들, 알고리즘들 등은 순차적인 순서로 기술되었으나, 그러한 처리들, 방법들 및 알고리즘들은 다른 순서들로 작동하도록 구성될 수 있다. 바꿔 말하면, 기술된 단계들의 어떤 순서 또는 차례는 그 단계들이 반드시 그 순서대로 수행될 것을 나타내는 것은 아니다. 본 명세서에서 기술된 처리 단계들은 임의 순서로 실행하여 수행될 수 있다. 나아가, 일부 단계들은 동시에(simultaneously) 수행될 수도 있고, 병렬로 수행될 수도 있으며, 함께(concurrently) 수행될 수도 있다.
본 명세서에서 하나의 디바이스 또는 물품(article)이 기술될 경우에는, 하나 이상의 디바이스/물품(그것들이 협력(cooperate)하든 어떻든 간에)이 하나의 디바이스/물품을 대신하여 사용할 수 있다는 것은 분명할 것이다. 이와 유사하게, 하나 이상의 디바이스 또는 물품이 기술되는 경우, 하나의 디바이스/물품이 하나 이상의 디바이스 또는 물품을 대신하여 사용될 것이라는 것이 분명할 것이다. 하나의 디바이스의 기능 및/또는 특징들은 그러한 기능/특징들을 갖는 것으로 분명하게 기술되지 아니하는 하나 또는 그 이상의 다른 디바이스들에 의해 다르게 구현될 수 있다.
도 6은 컴퓨팅 시스템(600)의 구조를 도시한다. 여기서의 특정 실시예들에서는 도 1의 컴퓨팅 환경(100)의 스토리지 컨트롤러(104) 및 호스트들(102a, ..., 102n)이 컴퓨팅 시스템(600)의 구조에 따라 구현될 수 있다. 컴퓨팅 시스템(600)은 또한 시스템으로 일컬어질 수 있고, 특정 실시예들에서 프로세서(604)를 포함할 수 있는 회로부(602)를 포함할 수 있다. 시스템(600)은 또한 메모리(606)(예, 휘발성 메모리 디바이스), 및 스토리지(608)를 포함할 수 있다. 스토리지(608)는 비휘발성 메모리 디바이스(예, EEPROM, ROM, PROM, RAM, DRAM, SRAM, 플래쉬, 펌웨어, 프로그램가능 로직 등), 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브 등을 포함할 수 있다. 스토리지(608)는 내부 스토리지 디바이스, 부착형 스토리지 디바이스(attached storage device) 및/또는 네트워크 접근가능 스토리지 디바이스(network accessible storage device)를 포함할 수 있다. 시스템(600)은 메모리(606) 내에 로드되어 프로세서(604) 또는 회로부(602)에 의해 실행될 수 있는 코드(612)를 포함하는 프로그램 로직(610)을 포함할 수 있다. 특정 실시예들에서, 코드(612)를 포함하는 프로그램 로직(610)은 스토리지(608)에 저장될 수 있다. 다른 특정 실시예들에서, 프로그램 로직(610)은 회로부(602)에 구현될 수 있다. 따라서, 도 6은 다른 구성요소들로부터 분리시켜 프로그램 로직(610)을 도시하고 있으나, 프로그램 로직(610)은 메모리(606) 및/또는 회로부(602)에 구현될 수도 있다.
특정 실시예들은 컴퓨팅 시스템 내에 컴퓨터 판독가능 코드를 통합하는 사람 또는 자동화된 처리에 의해 컴퓨팅 명령들을 배치하기 위한 방법일 수 있다. 여기서 상기 코드는 상기 컴퓨팅 시스템과 결부되어 기술된 실시예들의 동작들을 수행하는 것이 가능해질 수 있다.
도 1-6에 도시된 동작들 중 적어도 몇몇은 연속적으로 뿐만 아니라 병렬로 수행될 수 있다. 다른 실시예들에서는 그 동작들 중 몇몇은 다른 순서로, 또는 변경 또는 제거될 수도 있다.
나아가, 많은 소프트웨어 및 하드웨어 컴포넌트들이 설명을 위해 개별 모듈들에 기술되었다. 그러한 컴포넌트들은 더 많은 수의 컴포넌트들 내에 나누어지거나 더 적은 수의 컴포넌트들 내에 통합될 수도 있다. 또한, 특정 컴포넌트에 의해 수행되는 것으로 설명되는 특정 동작들은 다른 컴포넌트들에 의해 수행될 수도 있다.
도 1-6에 도시되거나 참조되는 데이터 구조들 및 컴포넌트들은 특정 유형의 정보를 갖는 것으로 설명되고 있다. 다른 실시예들에서는, 그 데이터 구조들 및 컴포넌트들은 다르게 구성될 수도 있고, 더 적거나 더 많거나 또는 도면들에 도시되고 참조된 것들과는 다른 필드들 또는 다른 펑션들을 가질 수 있다.
이상에서, 본 발명의 실시 예들에 관한 앞서의 설명은 예시 및 설명을 위해 제공되었다. 이는 개시되는 바와 같은 정확한 형태로 발명의 실시 예들을 한정하려고 한다거나, 실시 예들을 빠짐없이 모두 나타내려고 의도된 것은 아니다. 위의 설명에서의 지침에 비추어 많은 변경들 및 개조들이 가능하다.

Claims (15)

  1. 스토리지 컨트롤러에서, 호스트로부터의 인터럽트 컨트롤 지시를 수신하는 단계;
    상기 스토리지 컨트롤러에서, 상기 스토리지 컨트롤러에 결합된 적어도 하나의 스토리지 디바이스에 대한, 호스트로부터 수신된 접근 요청들(access requests)에 응답하여, 제1의 복수의 인터럽트들을 생성하는 단계 - 여기서 상기 제1의 복수의 인터럽트들은 상기 적어도 하나의 스토리지 디바이스로의 접근이 상기 호스트에게 허용되는지의 여부를 표시함 -;
    상기 스토리지 컨트롤러에서, 제2의 복수의 인터럽트들을 발생시키는 단계 - 여기서 상기 제2의 복수의 인터럽트들은 상기 제1의 복수의 인터럽트들과는 다른, 상기 호스트가 요청하지 않은 인터럽트들(unsolicited interrupts)을 포함함 -; 및
    상기 스토리지 컨트롤러에서, 상기 수신된 인터럽트 컨트롤 지시에 기초하여, 상기 제1의 복수의 인터럽트들 중 몇 개 그리고 상기 제2의 복수의 인터럽트들 중 몇 개를 상기 호스트로 송신할지를 컨트롤하는 단계 - 여기서 한 주기 동안 상기 호스트로 송신될 상기 제1의 복수의 인터럽트들과 상기 제2의 복수의 인터럽트들의 미리결정된 비(ratio)는 상기 수신된 인터럽트 컨트롤 지시에 표시됨 - 를 포함하는,
    인터럽트들의 우선순위화 방법.
  2. 삭제
  3. 청구항 1에 있어서, 상기 수신된 인터럽트 컨트롤 지시는,
    상기 제1의 복수의 인터럽트들 중 몇 개가 상기 호스트로 송신되기 위해 대기 중인지를 결정하는 것;
    상기 제2의 복수의 인터럽트들 중 몇 개가 상기 호스트로 송신되기 위해 대기 중인지를 결정하는 것;
    상기 호스트로 송신되기 위해 대기 중인 상기 제1의 복수의 인터럽트들의 상기 제1의 미리결정된 퍼센티지를 상기 호스트로 송신하는 것; 및
    상기 호스트로 송신되기 위해 대기 중인 상기 제2의 복수의 인터럽트들의 상기 제2의 미리결정된 퍼센티지를 상기 호스트로 송신하는 것을,
    수행하기 위해 상기 스토리지 컨트롤러에 의해 처리되는,
    인터럽트들의 우선순위화 방법.
  4. 삭제
  5. 호스트로부터, 스토리지 컨트롤러로 인터럽트 컨트롤 지시를 송신하는 단계;
    상기 호스트로부터, 상기 스토리지 컨트롤러에 결합된 적어도 하나의 스토리지 디바이스에 대한 접근 요청들을 송신하는 단계 - 여기서 상기 접근 요청들에 응답하여 상기 스토리지 컨트롤러는 상기 적어도 하나의 스토리지 디바이스로의 접근이 상기 호스트에게 허용되는지의 여부를 표시하는 제1의 복수의 인터럽트들을 발생시키고, 제2의 복수의 인터럽트들은 상기 제1의 복수의 인터럽트들과는 다른 상기 호스트가 요청하지 않은 인터럽트들(unsolicited interrupts)을 포함하며, 상기 스토리지 컨트롤러는 상기 인터럽트 컨트롤 지시에 기초하여 상기 제1의 복수의 인터럽트들 중 몇 개 그리고 상기 제2의 복수의 인터럽트들 중 몇 개를 송신할지를 결정함 -; 및
    상기 호스트에서, 상기 호스트로 송신할 상기 스토리지 컨트롤러에 의해 결정된 인터럽트들을 수신하는 단계 - 여기서 상기 호스트에 의해 상기 스토리지 컨트롤러로 송신되는 상기 인터럽트 컨트롤 지시는 한 주기 동안 상기 호스트로 송신될 상기 제1의 복수의 인터럽트들과 상기 제2의 복수의 인터럽트들의 미리결정된 비(ratio)를 표시함 - 를 포함하는,
    인터럽트들의 우선순위화 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 컴퓨팅 인프라스트럭쳐를 배치(deploy)하는 방법에 있어서, 컴퓨터 내에 컴퓨터 판독가능 코드를 통합하는 단계를 포함하되, 상기 코드는 상기 컴퓨터와 결합되어 청구항 1, 3, 및 5 중 어느 한 항에 기재된 방법의 각 단계를 수행할 수 있는,
    컴퓨팅 인프라스트럭쳐 배치 방법.
  12. 스토리지 컨트롤러에 있어서,
    메모리; 및
    상기 메모리에 결합된 프로세서를 포함하되,
    상기 프로세서는 청구항 1 및 3 중 어느 한 항에 기재된 방법의 각 단계를 수행하는,
    스토리지 컨트롤러.
  13. 시스템에 있어서,
    청구항 12에서 청구되는 스토리지 컨트롤러; 및
    상기 스토리지 컨트롤러에 결합된 호스트를 포함하는,
    인터럽트들의 우선순위화 시스템.
  14. 코드를 포함하는 컴퓨터 판독가능 스토리지 매체에 있어서,
    상기 코드는 청구항 1, 3, 및 5 중 어느 한 항에 기재된 방법의 각 단계를 수행하도록 실행되는,
    컴퓨터 판독가능 스토리지 매체.
  15. 시스템에 있어서,
    스토리지 컨트롤러에서, 호스트로부터 인터럽트 컨트롤러 지시를 수신하기 위한 수단;
    상기 스토리지 컨트롤러에서, 상기 스토리지 컨트롤러에 결합된 적어도 하나의 스토리지 디바이스에 대해 상기 스토리지로부터 수신된 접근 요청들에 응답하여, 제1의 복수의 인터럽트들을 발생시키기 위한 수단 - 여기서 상기 제1의 복수의 인터럽트들은 상기 적어도 하나의 스토리지 디바이스로의 접근이 상기 호스트에게 허용되는지의 여부를 표시함 -;
    상기 스토리지 컨트롤러에서, 제2의 복수의 인터럽트들을 발생시키기 위한 수단 - 여기서, 상기 제2의 복수의 인터럽트들은 상기 제1의 복수의 인터럽트들과는 다른 상기 호스트가 요청하지 않은 인터럽트들을 포함함 -; 및
    상기 스토리지 컨트롤러에서, 상기 수신된 인터럽트 컨트롤 지시에 기초하여, 상기 제1의 복수의 인터럽트들 중 몇 개 그리고 상기 제2의 복수의 인터럽트들 중 몇 개를 송신할지를 컨트롤하기 위한 수단 - 여기서 한 주기 동안 상기 호스트로 송신될 상기 제1의 복수의 인터럽트들과 상기 제2의 복수의 인터럽트들의 미리결정된 비(ratio)는 상기 수신된 인터럽트 컨트롤 지시에 표시됨 - 을 포함하는,
    인터럽트들의 우선순위화 시스템.
KR1020107000830A 2007-07-02 2008-06-26 스토리지 컨트롤러에서 인터럽트들의 우선순위화 KR101154800B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/772,742 US7613860B2 (en) 2007-07-02 2007-07-02 Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US11/772,742 2007-07-02
US11/772,734 US7617345B2 (en) 2007-07-02 2007-07-02 Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US11/772,734 2007-07-02
PCT/EP2008/058148 WO2009003903A1 (en) 2007-07-02 2008-06-26 Prioritization of interrupts in a storage controller

Publications (2)

Publication Number Publication Date
KR20100037099A KR20100037099A (ko) 2010-04-08
KR101154800B1 true KR101154800B1 (ko) 2012-07-03

Family

ID=39767043

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107000830A KR101154800B1 (ko) 2007-07-02 2008-06-26 스토리지 컨트롤러에서 인터럽트들의 우선순위화

Country Status (6)

Country Link
EP (1) EP2165264B1 (ko)
KR (1) KR101154800B1 (ko)
AT (1) ATE486321T1 (ko)
BR (1) BRPI0811669B1 (ko)
DE (1) DE602008003233D1 (ko)
WO (1) WO2009003903A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5076967B2 (ja) * 2008-02-27 2012-11-21 富士通株式会社 情報処理システム、情報処理システムの制御方法、および情報処理システムの制御プログラム
US8023522B2 (en) 2009-03-30 2011-09-20 Intel Corporation Enabling long-term communication idleness for energy efficiency
US8560750B2 (en) * 2011-05-25 2013-10-15 Lsi Corporation Systems and methods for advanced interrupt scheduling and priority processing in a storage system environment
US9535777B2 (en) * 2013-11-22 2017-01-03 Intel Corporation Defect management policies for NAND flash memory
IL239113A (en) 2015-06-01 2016-12-29 Elbit Systems Land & C4I Ltd A system and method for determining audio characteristics from a body

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040123008A1 (en) * 2002-12-20 2004-06-24 Intel Corporation Method, system, and article of manufacture for adjusting interrupt levels

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542076A (en) * 1991-06-14 1996-07-30 Digital Equipment Corporation Method and apparatus for adaptive interrupt servicing in data processing system
US6615305B1 (en) * 1998-08-27 2003-09-02 Intel Corporation Interrupt pacing in data transfer unit
DE10160298A1 (de) * 2001-12-07 2003-06-18 Bosch Gmbh Robert Verfahren und Vorrichtung zur Verarbeitung von Interrput-Signalen

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040123008A1 (en) * 2002-12-20 2004-06-24 Intel Corporation Method, system, and article of manufacture for adjusting interrupt levels

Also Published As

Publication number Publication date
EP2165264A1 (en) 2010-03-24
BRPI0811669B1 (pt) 2020-01-14
EP2165264B1 (en) 2010-10-27
KR20100037099A (ko) 2010-04-08
DE602008003233D1 (de) 2010-12-09
ATE486321T1 (de) 2010-11-15
WO2009003903A1 (en) 2009-01-08
BRPI0811669A2 (pt) 2016-11-08

Similar Documents

Publication Publication Date Title
US7617345B2 (en) Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
KR102245247B1 (ko) 트리거된 동작을 이용하는 gpu 원격 통신
US20200073709A1 (en) Method and apparatus for scheduling task, device and medium
JP2021190074A (ja) リソーススケジューリング方法、装置、設備、記憶媒体、及びプログラム
CN109491801B (zh) 微服务访问调度方法、装置、介质及电子设备
US20070250835A1 (en) Grid Computing System, Information Processing Apparatus, Job Execution Request Generating Apparatus, Control Method, and Recording Medium
CN111309732B (zh) 数据处理方法、装置、介质和计算设备
JP5068309B2 (ja) ストレージ・システムにおけるデータの暗号化/復号化のための方法、システム、およびコンピュータ・プログラム
KR101154800B1 (ko) 스토리지 컨트롤러에서 인터럽트들의 우선순위화
US9535770B2 (en) Electronic system with offloading mechanism and method of operation thereof
KR20140014273A (ko) 휴대용 컴퓨팅 디바이스의 스위치 패브릭들 내에서 그리고 스위치 패브릭들에 걸쳐 마스터-슬레이브 쌍들을 동적으로 생성하고 서비스하는 방법 및 시스템
CN112286672B (zh) 用于调度任务的方法、计算设备和计算机存储介质
CN110753112A (zh) 云服务的弹性伸缩方法和装置
CN110430142B (zh) 用于控制流量的方法和装置
US7613860B2 (en) Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
WO2022111456A1 (zh) 基于众核系统的核共享方法及装置、电子设备、介质
US20110258485A1 (en) Transitional replacement of operations performed by a central hub
US8392966B2 (en) Limiting the availability of computational resources to a device to stimulate a user of the device to apply necessary updates
CN111459653B (zh) 集群调度方法、装置和系统以及电子设备
CA3069090C (en) Optimal query scheduling according to data freshness requirements
CN113722629A (zh) 一种智能页面缓存方法、系统及可读存储介质
US8380938B2 (en) Providing shared access to data storage resources across cluster computing environment boundaries
US10880184B2 (en) Datacenter service flow optimization
EP2156287B1 (en) Apparatus and method to control access to stored information
CN112416253B (zh) 一种基于分布式存储的存储区域动态调整方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee