KR101444990B1 - 멀티프로세서 코어 시스템에서 에너지 효율적 네트워크 패킷 프로세싱을 실행하기 위한 방법 및 장치 - Google Patents
멀티프로세서 코어 시스템에서 에너지 효율적 네트워크 패킷 프로세싱을 실행하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR101444990B1 KR101444990B1 KR1020117031560A KR20117031560A KR101444990B1 KR 101444990 B1 KR101444990 B1 KR 101444990B1 KR 1020117031560 A KR1020117031560 A KR 1020117031560A KR 20117031560 A KR20117031560 A KR 20117031560A KR 101444990 B1 KR101444990 B1 KR 101444990B1
- Authority
- KR
- South Korea
- Prior art keywords
- processing units
- idle state
- low power
- power idle
- flows
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Power Sources (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
네트워크 패킷 프로세싱을 위한 코어 어피니티 관리를 위한 방법 및 장치가 제공된다. 복수의 프로세싱 유닛을 포함하는 시스템에서의 복수의 프로세싱 유닛의 저-전력 유휴 상태가 모니터링된다. 네트워크 패킷 프로세싱은 비-저 전력 유휴 상태인 프로세싱 유닛들에 대한 저-전력 유휴 상태 레지던시를 증가시키도록 저-전력 유휴 상태인 프로세싱 유닛들로 적응적으로 재할당하여 감소한 에너지 소비를 유도한다.
Description
이 개시는 멀티-프로세서 코어 시스템에서의 에너지-효율에 관한 것이며, 더 구체적으로는 에너지-효율적 네트워크 패킷 프로세싱에 관한 것이다.
통상적으로, 복수의 프로세서 코어들을 갖는 컴퓨터 시스템은 모든 프로세서 코어들 사이에 워크로드를 분배함으로써 높은 워크로드를 다룬다. 그러나, 워크로드가 감소함에 따라, 복수의 프로세서 코어들 각각은 충분히 이용되지 않을 수 있다.
워크로드가 낮을 때 복수의 프로세서 코어들에 의한 전력 소비를 감소시키기 위해, 운영 체계는 시스템 이용 레벨에 기초하여 사용되는 프로세서 코어들의 수를 조정할 수 있다. 사용되지 않는 프로세서 코어들은 저-전력 유휴 상태로 두고(파킹되고"parked") 긴 연속적인 간격동안 저-전력 유휴 상태로 유지될 수 있다. 운영 체계는 저-전력 유휴 상태가 아닌 프로세서 코어들 사이에 워크로드를 분배하기를 계속한다.
본 발명의 실시예들의 특징은 유사 참조번호가 유사 파트들을 나타내는 도면들을 참조하여, 하기의 상세한 설명이 진행됨에 따라 명백해질 것이다.
도 1은 수신측 스케일링을 지원하는 네트워크 인터페이스 제어기의 실시예를 포함하는 시스템의 블록도이다.
도 2는 도 1에 도시된 네트워크 인터페이스 제어기 및 메모리의 실시예를 나타내는 블록도이다.
도 3은 본 발명의 원리들에 따라 코어 어피니티(affinity) 설정을 동적으로 조정하는 방법의 실시예의 흐름도이다.
도 4는 도 1에 도시된 네트워크 인터페이스 제어기 및 메모리의 다른 실시예를 나타내는 블록도이다.
본 발명의 설명적인 실시예들을 참조로 하기의 상세한 설명이 진행되더라도, 그의 많은 대안들, 수정들, 변형들은 당업자들에게 명백할 것이다. 따라서, 본 발명은 넓게 해석되도록 의도되었으며, 첨부된 청구범위에 개시된 대로만 정의된다.
도 1은 수신측 스케일링을 지원하는 네트워크 인터페이스 제어기의 실시예를 포함하는 시스템의 블록도이다.
도 2는 도 1에 도시된 네트워크 인터페이스 제어기 및 메모리의 실시예를 나타내는 블록도이다.
도 3은 본 발명의 원리들에 따라 코어 어피니티(affinity) 설정을 동적으로 조정하는 방법의 실시예의 흐름도이다.
도 4는 도 1에 도시된 네트워크 인터페이스 제어기 및 메모리의 다른 실시예를 나타내는 블록도이다.
본 발명의 설명적인 실시예들을 참조로 하기의 상세한 설명이 진행되더라도, 그의 많은 대안들, 수정들, 변형들은 당업자들에게 명백할 것이다. 따라서, 본 발명은 넓게 해석되도록 의도되었으며, 첨부된 청구범위에 개시된 대로만 정의된다.
컴퓨터 시스템은 네트워크로부터 네트워크 패킷을 수신하고 복수의 프로세서 코어 중 하나에 프로세싱을 위해 수신한 네트워크 패킷을 전달하는 네트워크 인터페이스 제어기(어댑터, 카드)를 포함할 수 있다. 프로세스 코어들로 분배되는 워크로드는 네트워크 인터페이스 제어기에 의해 수신되는 네트워크 패킷들의 프로세싱을 포함할 수 있다.
예를 들면, 컴퓨터 시스템에서, 네트워크 패킷들의 프로세싱은 동일한 트래픽 플로우(예를 들면, 동일한 소스 어드레스 및 목적지 어드레스를 갖는 네트워크 패킷들)의 프로세싱이 동일한 프로세서 코어에 의해 수행되도록 프로세서 코어들로 분배될 수 있다. 워크로드가 낮을 때, 운영 체계는 복수의 프로세서 코어의 서브세트만을 사용하고 다른 프로세서 코어들을 저-전력 유휴 상태로 설정할 수 있다. 그러나, 특정 트래픽 플로우를 위해 프로세싱될 수신된 네트워크 패킷이 저-전력 유휴 상태인 프로세서 코어에 할당되면(트래픽 플로우에 대한 코어 어피니티 설정), 그 프로세서 코어는 저-전력 유휴 상태로부터 깨어난다. 결과적으로, 저-전력 유휴 상태인 프로세서 코어들은 긴 시간동안 저-전력 유휴 상태로 유지될 기회를 갖지 못한다.
본 발명의 실시예는 운영 체계가 프로세서 코어들 중 어느 것을 저-전력 유휴 상태로 설정했는가에 기초하여 네트워크 패킷 프로세싱에 대한 코어 어피니티 설정을 동적으로 조정한다.
본 발명의 실시예는 Microsoft's® Windows® 운영 체계(OS)에 의해 사용되는 수신측 스케일링(RSS)을 지원하는 네트워크 인터페이스 제어기를 갖는 컴퓨터 시스템에 대해 설명할 것이다. 그러나, 본 발명은 RSS 만으로 국한되지는 않는다. 다른 실시예들에서는, 네트워크 어댑터가 전력-절약 모드 기능을 갖는 스케쥴러를 포함하는 리눅스 운영 체계 또는 전력-절약 모드를 포함하는 임의의 다른 운영 체계에 의해 사용되는 스케일러블 입력/출력(I/O)을 지원할 수 있다.
도 1은 수신측 스케일링을 지원하는 네트워크 인터페이스 제어기(108)의 실시예를 포함하는 시스템(100)의 블록도이다. 시스템(100)은 프로세서(101), 메모리 제어기 허브(MCH)(102) 및 입력/출력(I/O) 제어기 허브(ICH)(104)를 포함한다. MCH(102)는 프로세서(101)와 메모리(110) 사이의 통신을 제어하는 메모리 제어기(106)를 포함한다. 프로세서(101) 및 MCH(102)는 시스템 버스(116)를 통해 통신한다.
프로세서(101)는 Intel® Pentium D, Intel® Xeon® 프로세서, 또는 Intel® Core® 듀오 프로세서, Intel® Core™ i7 프로세서 또는 프로세서의 임의의 다른 유형과 같은 멀티-코어 프로세서일 수 있다. 도시된 실시예에서, 시스템은 적어도 두개의 프로세서 코어들("코어들")(122)을 각각이 갖는 두개의 멀티-코어 프로세서들(101)을 포함한다. 일 실시예에서, 각각의 멀티-코어 프로세서는 4개의 코어들(122)을 포함한다.
메모리(110)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(Synchronized Dynamic Random Access Memory), DDR2(Double Data Rate 2) RAM 또는 RDRAM(Rambus Dynamic Random Access Memory) 또는 메모리의 임의의 다른 유형일 수 있다.
ICH(104)는 DMI(Direct Media Interface)와 같은 고속 칩-대-칩 인터커넥트(114)를 사용하여 MCH(102)에 연결될 수 있다. DMI는 2개의 단방향성 레인들을 통해 2 기가비트/초 병행 전송 레이트를 지원한다.
ICH(104)는 ICH(104)에 연결된 적어도 하나의 저장 디바이스(112)와의 통신을 제어하기 위한 저장 입력/출력(I/O) 제어기를 포함할 수 있다. 예를 들면, 저장 디바이스는 디스크 드라이브, 디지털 비디오 디스크(DVD) 드라이브, 콤팩트 디스크(CD) 드라이브, RAID(Redundant Array of Independent Disks), 테이프 드라이브 또는 다른 저장 디바이스일 수 있다. ICH(104)는 SAS(Serial Attached Small Computer System Interface) 또는 SATA(Serial Advanced Technology Attachment)와 같은 시리얼 저장 프로토콜을 사용하여 저장 프로토콜 인터커넥트(118)를 통해 저장 디바이스(112)와 통신할 수 있다.
다른 실시예에서, 시스템(100)에서 네트워크 인터페이스 제어기(108)는 저장 I/O 제어기(120)를 포함하지 않는 ICH(104)에 포함되거나 시스템 카드 슬롯 내에 삽입되는 개별 네트워크 인터페이스 카드 상에 포함될 수 있다.
도 2는 도 1에 도시된 네트워크 인터페이스 제어기(108) 및 메모리(110)의 실시예를 도시하는 블록도이다. 네트워크 인터페이스 제어기(108)는 해시 함수 유닛(220), 간접 테이블(230) 및 복수의 하드웨어 수신 큐들(202)을 포함한다. 메모리(110)는 운영 체계 커널(280), 필터 드라이버(210) 및 네트워크 디바이스 드라이버(미니포트 드라이버)(270)를 포함한다. 실시예에서, 해시 함수 유닛(220) 및 간접 테이블(230)은 네트워크 인터페이스 제어기("NIC")(108)에 포함된다. 다른 실시예에서, 이 컴포넌트들의 일부 또는 이 컴포넌트들의 일부 구성요소들은 네트워크 인터페이스 제어기(108) 외부에 위치할 수 있다.
도시된 실시예에서, 미니포트 드라이버(270) 및 필터 드라이버(210)는 Microsoft® Windows® 운영 체계 모델(WDM)의 컴포넌트이다. WDM은 클래스 드라이버들 또는 미니포트 드라이버들일 수 있는 디바이스 함수 드라이버들을 포함한다. 미니포트 드라이버는 특정 유형의 디바이스, 예를 들면, 특정 네트워크 인터페이스 제어기(108)를 지원할 수 있다. 필터 드라이버(210)는 가치를 부가하는 선택적 드라이버이거나 함수 드라이버(미니포트 드라이버)(270)의 동작을 수정한다.
네트워크 드라이버 인터페이스 사양(NDIS)은 네트워크 인터페이스 제어기들(110)에 대한 API(Application programming interface)를 통해 액세스되는 함수의 라이브러리이다. NDIS는 7 레이어 오픈 시스템 인터커넥트(OSI)의 레이어 2(링크 레이어)와 레이어 3(네트워크 레이어) 사이의 인터페이스로 동작한다. 라이브러리 함수는 객체 식별자들(OID)을 포함한다.
네트워크 인터페이스 제어기(108)는 수신된 네트워크 패킷 내의 해시 유형 별 해시 값(예를 들면, 헤더 내의 하나 이상의 필드들)을 연산하는 데에 해시 함수 유닛(220)의 해시 함수를 사용할 수 있다. 해시 값의 많은 최하위 비트(least significant bit)들은 수신한 데이터 패킷의 프로세싱을 다루는 프로세서 코어(122)(도 1) 및 수신한 데이터 패킷을 저장하는 복수의 수신 큐들(202) 중 하나를 식별하는 간접 테이블(230) 내의 엔트리를 인덱스하는 데에 사용될 수 있다. 네트워크 인터페이스 제어기(108)는 식별된 프로세서 코어(122)를 인터럽트할 수 있다.
실시예에서, 각각의 네트워크 패킷이 네트워크 인터페이스 제어기(108)에 의해 수신됨에 따라, 네트워크 패킷과 연관된 "플로우"가 결정된다. 전송 제어 프로토콜(TCP) 패킷의 "플로우"는 패킷에 포함된 인터넷 프로토콜(IP) 헤더 및 TCP 헤더의 필드값에 기초하여 결정될 수 있다. 예를 들면, "플로우"에 대한 플로우 식별자는 IP 헤더에 포함된 IP 소스 어드레스 및 IP 목적지 어드레스와 수신된 네트워크 패킷의 TCP 헤더에 포함된 소스 포트 어드레스 및 목적지 포트 어드레스의 조합에 의존할 수 있다.
복수의 하드웨어 수신 큐들(202)은 수신한 네트워크 패킷들을 저장하도록 제공된다. 특정 플로우에 대한 순차 패킷 전달을 보장하도록, 각각의 하드웨어 수신 큐들(202)은 상이한 플로우에 또한 복수의 프로세서 코어들(122) 중 하나에 할당될 수 있다. 따라서, 복수의 하드웨어 수신 큐들(202)의 각각은 간접 테이블(230)을 통해 복수의 코어 프로세서들(122) 중 하나와 연관된다.
도시된 실시예에서, 네트워크 인터페이스 제어기(108)는 8개의 수신 큐들(202)을 갖는다. 그러나, 수신 큐들(202)의 수는 8개로 한정되지는 않는다. 다른 실시예들에서 수신 큐들(202)이 보다 많거나 적을 수 있다. 수신된 네트워크 패킷들은 복수의 수신 큐들(202) 중 하나에 저장된다. 각각의 수신 큐들의 패킷 프로세싱은 특정 프로세서 코어(122)에 연관될 수 있다(affinitized). 본 발명의 실시예에서, 패킷 프로세싱을 위한 코어 어피니티 설정은 전력-절약 유휴 상태인('파킹된(parked)') 프로세서 코어들(122)의 수에 기초하여 동적으로 조정될 수 있다.
표 1은 모든 프로세서 코어들(122)에 수신 패킷 프로세싱을 분배하기 위해 8개의 코어들과 8개의 수신 큐들을 갖는 시스템에서 프로세서 코어들(122)에 수신 큐들(202)을 초기 할당한 간접 테이블(230)의 일례를 하기에 도시한다.
도 3은 본 발명의 원리에 따라 코어 어피니티 설정을 동적으로 조정하는 실시예의 흐름도이다.
코어 프로세서들(122)에의 수신 큐들(202)의 분배는 OS 커널에 의해 다뤄지는 OS 코어 파킹 상태에 기초하여 동적으로 수정된다. 예를 들면, 워크로드가 낮으면, OS 커널은 코어 프로세서들(122)의 일부를 저-전력 상태로 설정함으로써 그들을 "파킹(park)"할 수 있다. 예를 들면, 8개의 코어 프로세서들을 갖는 실시예에서, 8개의 코어 프로세서 중 6개가 "파킹"되고 나머지 코어 프로세서(예를 들면, 8개 중 2개)가 사용될 수 있다. 따라서, 네트워크 인터페이스 제어기로부터의 인터럽트들은 파킹되지 않은 코어로만 보내지고 파킹된 코어들은 저-전력 유휴 상태로 남아 에너지 소비를 감소시키게 된다.
예를 들면, 실시예에서, Windows® 7 서버 코어 파킹 기능이 워크로드가 낮을 때, 3개의 코어를 사용하도록 선택하고 남아있는 코어들을 파킹하면, 네트워크 인터페이스 제어기는 선택된 3개의 코어들 상에서 패킷 프로세싱 및 네트워크 인터럽트를 실행하도록 수정된다. 이것은 파킹된 코어들에 대한 더 낮은 전력 유휴 상태 레지던시를 증가시키게 된다.
실시예에서, 10 기가비트 네트워크 인터페이스 제어기는 특정 코어에 각각이 연관되는 다중 수신측 스케일링 수신(RSS Rx) 큐들을 갖는다. 네트워크 인터페이스 제어기는 필터 드라이버(210)를 통해 OS 코어 파킹 설정의 구성을 얻고 OS 코어 파킹 구성에 기초하여 RSS 간접 테이블(230)을 수정한다.
블록(300)에서, 필터 드라이버(210)는 OS 커널(280)로부터 OS 파킹 상태를 주기적으로 요청한다. 예를 들면, 실시예에서, 필터 드라이버(210)는 각각의 프로세서 코어들(122)의 파킹 상태를 질의(query)하기 위해 OS 커널(280)에 의해 제공되는 API 커맨드를 이용하여 OS 코어 파킹 상태를 요청한다. 실시예에서, 예를 들면, 필터 드라이버(210)는 매 약 1000개의 네트워크 패킷들이 수신된 후에, 수신된 네트워크 패킷들의 수에 기초하여 OS 파킹 상태를 주기적으로 요청한다.
다른 실시예에서, 필터 드라이버(210)는 각각의 프로세서 코어(202)의 현재 전력 상태를 직접적으로 얻기 위해 CPU(101)에 액세스한다. 예를 들면, Intel® Core™ i7은 최적의 전력 관리를 위해 코어 레벨에서 저 전력 상태를 지원한다. 코어 전력 상태는 C0, C1, C3 및 C6를 포함한다. C0는 정상 운영 상태이며 C1, C3 및 C6는 감소한 전력 소비의 상이한 레벨들을 갖는 저 전력 상태이다. 예를 들면, C3 저 전력 상태에서, 모든 클록들은 정지하며 프로세서 코어는 캐시를 제외하고 그 모든 구조적인 상태를 유지한다.
각각의 프로세서 코어(202)의 현재 전력 상태는 필터 드라이버(210)에 의해 액세스 가능한 CPU(101)의 하나 이상의 레지스터에 저장된다. 특정 코어가 "파킹"되었는지 결정하기 위해, 필터 드라이버(210)는 코어들에 대한 전력 상태를 저장하는 레지스터를 주기적으로 판독하며 시간 주기에 걸쳐 판독한 코어의 전력 상태 유형의 분포에 기초하여 코어가 "파킹"되었는지를 추정한다. 예를 들면, 시간 주기 내에서, 레지스터들은 n 회 판독되고 코어는 각 회 저 전력 상태라면, 코어는 "파킹"되어 있다. 시간 주기동안, 코어가 n 회 고 전력 상태라면, 코어는 "파킹"된 것이 아니다. 시간 주기동안, 코어의 전력 상태가 상이하면, 즉, 전력 상태가 저 전력 상태인 횟수가 전력 상태가 고 전력 상태인 횟수보다 많으면, 코어는 "파킹"된 것으로 추정된다. 프로세싱은 블록(302)에서 계속된다.
블록(302)에서, 각각의 프로세서 코어들(122)의 파킹 상태를 수신하면, 필터 드라이버(210)는 어떤 프로세서 코어들(122)의 파킹 상태가 변경되었는지를 결정한다. 변경되지 않았다면, 프로세싱은 프로세서 코어들(122)의 파킹 상태를 주기적으로 요청하기를 계속하는 블록(300)에서 계속된다.
변경되었다면, 필터 드라이버(210)는 파킹 상태에 기초하여 NIC(108)의 간접 테이블(230)에 저장되는 새로운 데이터를 생성한다. 필터 드라이버(210)는 프로세서 코어들의 파킹 상태에 기초하여 NIC의 RSS 파라미터를 수정하는 데에 OID_GEN_RECEIVE_SCALE_PARAMETERS 객체 식별자(OID)를 사용한다. OID_GEN_RECEIVE_SCALE_PARAMETERS OID는 RSS 파라미터를 특정하는 NDIS_RECEIVE_SCALE_PARAMETERS를 포함한다.
실시예에서, 그 구조는 객체가 RSS 파라미터를 포함하는 것을 특정하는 유형을 갖는 헤더, 간접 테이블 및 연관된 멤버들이 변경되었는지를 나타내는 플래그, 및 간접 테이블의 사이즈를 포함한다. 코어 파킹 상태에 기초한 간접 테이블(230)에 저장되는 새로운 데이터는 다른 구조 멤버들 후에 첨부된다. 프로세싱은 블록(304)에서 계속된다.
블록(304)에서, OID_GEN_RECEIVE_SCALE_PARAMETERS OID의 수신을 검출함에 따라, 미니포트 드라이버(270)는 간접 테이블(230)에 간접 테이블(230)에 대해 수신된 새로운 데이터를 저장한다. 예를 들면, 8개의 수신(RSS Rx) 큐(202)가 있는 실시예에서, 검색된 코어 파킹 상태가 프로세서 코어 0과 프로세서 코어 4만이 파킹되지 않았음을 가리키면, 라운드 로빈(round-robin) 코어 할당을 수행하여 하기의 표 2에 도시된 바와 같이 새로운 데이터(간접 테이블의 콘텐츠)를 간접 테이블(230)에 저장할 수 있다. 프로세서 코어 0은 수신 큐들 0, 2, 4, 및 6에 할당되고, 프로세서 코어 4는 수신 큐들 1, 3, 5, 및 7에 할당된다.
예를 들면, 표 2에 저장되는 데이터는 하기에 도시된 바와 같이 데이터 구조 IndTable로 표기될 수 있다:
IndTable[0] = 0
IndTable[1] = 4
IndTable[2] = 0
IndTable[3] = 4
IndTable[4] = 0
IndTable[5] = 4
IndTable[6] = 0
IndTable[7] = 4
IndTable 구조는 미니포트 드라이버(270)에 의해 수신되는 OID에 첨부되어 미니포트 드라이버(270)가 간접 테이블(230)에 저장된 데이터를 업데이트하게 한다.
실시예는 필터 드라이버(210)를 포함하는 시스템에 대해 설명하였다. 그러나, 코어 파킹 상태의 모니터링 및 간접 테이블(230)의 수정을 요청하는 것은 필터 드라이버(210)에 국한된 것은 아니다. 다른 실시예에서 이러한 기능들은 네트워크 드라이버 스택의 다른 부분에 포함될 수 있다.
도 4는 도 1에 도시된 네트워크 인터페이스 제어기(108) 및 메모리(110)의 다른 실시예를 나타내는 블록도이다.
도 4에 도시된바와 같이, 네트워크 드라이버 스택에 필터 드라이버(210)(도 2)를 더하는 대신, 코어 파킹 상태의 모니터링은 OS 커널(280)에 의해 수행된다. 간접 테이블(230)을 업데이트하는 요청은 OS 커널(280)로부터 미니포트 드라이버(270)로 직접 송신된다. 도 2와 함께 필터 드라이버(210)에 대해 논의된 실시예와 유사하게, OS 커널(280)은 도 2에 도시된 실시예와 함께 논의된 바와 같이, 간접 테이블(230)에 대한 수정된 콘텐츠를 갖는 OID_GEN_RECEIVE_SCALE_PARAMETERS OID를 입력 파라미터로서 생성한다. 이 OID는 수신한 수정된 콘텐츠에 기초하여 간접 테이블(230)을 수정하는 디바이스 드라이버(270)에 직접 송신된다.
실시예에서, RSS 얼라이먼트 기능은 RSS 간접 테이블(230)을 조정하도록 OS 코어에 부가된다.
Windows® 운영 체계에 대한 실시예가 설명되었다. 코어 파킹 상태의 모니터링 및 모니터링되는 코어 파킹 상태에 기초한 간접 테이블(230)의 콘텐츠의 수정은 Windows® 운영 체계에 국한되지 않고, 방법은 예를 들면, 리눅스 운영 체계와 같은 다른 운영 체계에 적용될 수 있다.
본 발명의 다른 실시예들은 또한 본 발명의 동작들을 수행하는 명령어 포함 머신-액세스가능한 매체를 포함할 수 있다. 그러한 실시예들은 또한 프로그램 제품으로서 참조될 수 있다. 그러한 머신-액세스가능한 매체는 그 위에 명령어들(컴퓨터 판독가능한 프로그램 코드)을 저장한 컴퓨터 판독가능한 저장 매체로서, 플로피 디스크, 하드 디스크, CD-ROM, ROM, 및 RAM 및 머신 또는 디바이스에 의해 형성되거나 제조되는 부품들의 다른 유형의 구성을 제한 없이 포함할 수 있다. 명령어들은 분배 환경에서 또한 사용될 수 있으며, 단일 또는 멀티-프로세서 머신에 의한 액세스를 위해 로컬로 및/또는 원격으로 저장될 수 있다.
본 발명의 실시예들이 그 실시예들을 참조로 하여 구체적으로 도시되고 설명되었지만, 그것은 청구범위에 의해 한정되는 본 발명의 실시예들의 범위로부터 벗어나지 않고 그 안에서 다양한 형태 및 세부사항들의 변화가 행해질 수 있다는 것이 당업자에 의해 이해될 것이다.
Claims (19)
- 복수의 프로세싱 유닛들 각각의 저 전력 유휴 상태를 모니터링하는 단계; 및
저 전력 유휴 상태를 갖는 프로세싱 유닛들로 할당된 플로우(flow)들을 비-저 전력 유휴 상태를 갖는 다른 프로세싱 유닛들에 적응적으로(adaptively) 재-할당하여 상기 복수의 프로세싱 유닛들에 의한 에너지 소비를 감소시키고, 네트워크 인터페이스 제어기 인터럽트들만이 상기 비-저 전력 유휴 상태를 갖는 프로세싱 유닛들에 보내지게 하는 단계
를 포함하는 방법. - 제1항에 있어서,
플로우들을 적응적으로 재-할당하는 단계는 간접 테이블을 통해 상기 플로우들을 재-할당하는 단계를 포함하고, 상기 간접 테이블은 복수의 엔트리들을 포함하고, 각각의 엔트리는 큐와 연관된 플로우가 할당되는 프로세싱 유닛의 식별을 포함하는 방법. - 제1항에 있어서,
상기 복수의 프로세싱 유닛들의 저 전력 유휴 상태를 모니터링하는 단계는 운영 체계에 의해 수행되는 방법. - 제1항에 있어서,
상기 복수의 프로세싱 유닛들의 저 전력 유휴 상태를 모니터링하는 단계는 네트워크 인터페이스 제어기와 연관된 드라이버에 의해 수행되는 방법. - 삭제
- 명령어를 저장한 컴퓨터로 판독가능한 저장 매체로서,
상기 명령어는, 액세스 되었을 때, 컴퓨터로 하여금:
복수의 프로세싱 유닛들 각각의 저 전력 유휴 상태를 모니터링하는 단계; 및
저 전력 유휴 상태를 갖는 프로세싱 유닛들에 할당된 플로우들을 비-저 전력 유휴 상태를 갖는 다른 프로세싱 유닛들에 적응적으로 재-할당하여 상기 복수의 프로세싱 유닛들에 의한 에너지 소비를 감소시키고, 네트워크 인터페이스 제어기 인터럽트들만이 상기 비-저 전력 유휴 상태를 갖는 프로세싱 유닛들에 보내지게 하는 단계
를 수행하게 하는 컴퓨터로 판독가능한 저장 매체. - 제6항에 있어서,
플로우들을 적응적으로 재-할당하는 단계는 간접 테이블을 통해 상기 플로우들을 재-할당하는 단계를 포함하고, 상기 간접 테이블은 복수의 엔트리들을 포함하고, 각각의 엔트리는 큐와 연관된 플로우가 할당되는 프로세싱 유닛의 식별을 포함하는 컴퓨터로 판독가능한 저장 매체. - 제6항에 있어서,
상기 복수의 프로세싱 유닛들의 저 전력 유휴 상태를 모니터링하는 단계는 운영 체계에 의해 수행되는 컴퓨터로 판독가능한 저장 매체. - 제6항에 있어서,
상기 복수의 프로세싱 유닛들의 저 전력 유휴 상태를 모니터링하는 단계는 네트워크 인터페이스 제어기와 연관된 드라이버에 의해 수행되는 컴퓨터로 판독가능한 저장 매체. - 복수의 프로세싱 유닛들; 및
상기 복수의 프로세싱 유닛들 각각의 저 전력 유휴 상태를 모니터링하고, 저 전력 유휴 상태를 갖는 프로세싱 유닛들에 할당된 플로우들을 비-저 전력 유휴 상태를 갖는 다른 프로세싱 유닛들에 적응적으로 재-할당하여 상기 복수의 프로세싱 유닛들에 의한 에너지 소비를 감소시키고, 네트워크 인터페이스 제어기 인터럽트들만이 상기 비-저 전력 유휴 상태를 갖는 프로세싱 유닛들에 보내지게 하는 모듈
을 포함하는 장치. - 제10항에 있어서,
복수의 엔트리들을 포함하는 간접 테이블을 더 포함하고, 각각의 엔트리는 큐와 연관된 플로우가 할당되는 프로세싱 유닛의 식별을 포함하고, 상기 모듈은 상기 간접 테이블을 통해 상기 플로우들을 재-할당함으로써 플로우들을 적응적으로 재-할당하는 장치. - 제10항에 있어서,
상기 모듈은 운영 체계에 포함되는 장치. - 제10항에 있어서,
상기 모듈은 네트워크 인터페이스 제어기와 연관된 드라이버인 장치. - 제13항에 있어서,
상기 드라이버는 필터 드라이버인 장치. - 제10항에 있어서,
네트워크로부터 수신한 플로우들과 연관된 데이터 패킷들을 저장하는 디스크 드라이브를 더 포함하는 장치. - 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/459,114 US8239699B2 (en) | 2009-06-26 | 2009-06-26 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
US12/459,114 | 2009-06-26 | ||
PCT/US2010/040083 WO2010151824A2 (en) | 2009-06-26 | 2010-06-25 | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140014407A KR20140014407A (ko) | 2014-02-06 |
KR101444990B1 true KR101444990B1 (ko) | 2014-10-07 |
Family
ID=43382083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117031560A KR101444990B1 (ko) | 2009-06-26 | 2010-06-25 | 멀티프로세서 코어 시스템에서 에너지 효율적 네트워크 패킷 프로세싱을 실행하기 위한 방법 및 장치 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8239699B2 (ko) |
EP (1) | EP2446340A4 (ko) |
KR (1) | KR101444990B1 (ko) |
CN (2) | CN105446455B (ko) |
WO (1) | WO2010151824A2 (ko) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8064197B2 (en) * | 2009-05-22 | 2011-11-22 | Advanced Micro Devices, Inc. | Heat management using power management information |
US8239699B2 (en) | 2009-06-26 | 2012-08-07 | Intel Corporation | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
US9557795B1 (en) * | 2009-09-23 | 2017-01-31 | Xilinx, Inc. | Multiprocessor system with performance control based on input and output data rates |
US8543857B2 (en) * | 2009-09-26 | 2013-09-24 | Intel Corporation | Method and apparatus for low power operation of multi-core processors |
EP2385440A1 (en) * | 2010-05-07 | 2011-11-09 | ST-Ericsson SA | Method and system for controlling the operation of an electronic device |
US8972707B2 (en) | 2010-12-22 | 2015-03-03 | Via Technologies, Inc. | Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin |
US8637212B2 (en) | 2010-12-22 | 2014-01-28 | Via Technologies, Inc. | Reticle set modification to produce multi-core dies |
US8631256B2 (en) | 2010-12-22 | 2014-01-14 | Via Technologies, Inc. | Distributed management of a shared power source to a multi-core microprocessor |
US8782451B2 (en) | 2010-12-22 | 2014-07-15 | Via Technologies, Inc. | Power state synchronization in a multi-core processor |
US9460038B2 (en) * | 2010-12-22 | 2016-10-04 | Via Technologies, Inc. | Multi-core microprocessor internal bypass bus |
US8621479B2 (en) * | 2012-01-05 | 2013-12-31 | The Boeing Company | System and method for selecting task allocation method based on load balancing and core affinity metrics |
US9250901B2 (en) * | 2013-03-12 | 2016-02-02 | Intel Corporation | Execution context swap between heterogeneous functional hardware units |
US9509565B2 (en) * | 2013-03-29 | 2016-11-29 | Telefonaktiebolaget L M Ericsson (Publ) | Energy efficiency in software defined networks |
CN104424156A (zh) * | 2013-09-09 | 2015-03-18 | 中兴通讯股份有限公司 | 处理器的核处理方法、装置及终端 |
US9323544B2 (en) * | 2013-10-09 | 2016-04-26 | International Business Machines Corporation | Dynamic reconfiguration of queue pairs |
US10082858B2 (en) * | 2014-06-23 | 2018-09-25 | Mellanox Technologies, Ltd. | Peripheral device assistance in reducing CPU power consumption |
CN104158764B (zh) * | 2014-08-12 | 2018-02-06 | 新华三技术有限公司 | 报文处理方法及装置 |
US10324513B2 (en) | 2014-08-31 | 2019-06-18 | Mellanox Technologies, Ltd. | Control of peripheral device data exchange based on CPU power state |
CN107231396B (zh) * | 2016-03-25 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 数据操作方法、装置、中转设备及客户端 |
US20170351311A1 (en) * | 2016-06-07 | 2017-12-07 | Intel Corporation | Power aware packet distribution |
US10423511B2 (en) * | 2016-11-29 | 2019-09-24 | International Business Machines Corporation | Packet flow tracing in a parallel processor complex |
US10826841B2 (en) * | 2016-12-06 | 2020-11-03 | Microsoft Technology Licensing, Llc | Modification of queue affinity to cores based on utilization |
US10639550B2 (en) * | 2017-04-18 | 2020-05-05 | Bullguard Ltd | System and method for dynamically allocating resources to a game process |
KR102563648B1 (ko) * | 2018-06-05 | 2023-08-04 | 삼성전자주식회사 | 멀티 프로세서 시스템 및 그 구동 방법 |
CN109039929A (zh) * | 2018-07-06 | 2018-12-18 | 华为技术有限公司 | 业务调度方法及装置 |
US11431565B2 (en) * | 2018-10-15 | 2022-08-30 | Intel Corporation | Dynamic traffic-aware interface queue switching among processor cores |
US11086379B2 (en) * | 2019-10-28 | 2021-08-10 | EMC IP Holding Company LLC | Efficient storage system battery backup usage through dynamic implementation of power conservation actions |
US11181967B2 (en) | 2020-02-07 | 2021-11-23 | Marvell Asia Pte Ltd | Power management and transitioning cores within a multicore system from idle mode to operational mode over a period of time |
US11994925B2 (en) * | 2020-04-10 | 2024-05-28 | Marvell Asia Pte Ltd | Power management and staggering transitioning from idle mode to operational mode |
CN111897648B (zh) * | 2020-06-04 | 2022-06-14 | 华南理工大学 | 一种温度约束下的暗核感知众核***处理器资源分配方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084154A1 (en) | 2001-10-31 | 2003-05-01 | International Business Machines Corporation | Energy-induced process migration |
US20030110012A1 (en) | 2001-12-06 | 2003-06-12 | Doron Orenstien | Distribution of processing activity across processing hardware based on power consumption considerations |
US20070070904A1 (en) * | 2005-09-26 | 2007-03-29 | King Steven R | Feedback mechanism for flexible load balancing in a flow-based processor affinity scheme |
US20070234088A1 (en) * | 2006-04-04 | 2007-10-04 | Microsoft Corporation | Identifying a target processor idle state |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986066B2 (en) * | 2001-01-05 | 2006-01-10 | International Business Machines Corporation | Computer system having low energy consumption |
US20030055969A1 (en) * | 2001-09-17 | 2003-03-20 | International Business Machines Corporation | System and method for performing power management on a distributed system |
US7564810B2 (en) * | 2002-05-08 | 2009-07-21 | Microsoft Corporation | Method and system for managing power consumption of a network interface module in a wireless computing device |
US7080267B2 (en) * | 2002-08-01 | 2006-07-18 | Texas Instruments Incorporated | Methodology for managing power consumption in an application |
EP1471326B1 (de) * | 2003-04-26 | 2010-04-07 | Rheinmetall Waffe Munition GmbH | Gasdruckschalter für eine Zünd- und Sicherungseinrichtung einer Munition |
US7257572B2 (en) * | 2004-04-30 | 2007-08-14 | Intel Corporation | Function for directing packets |
US7739527B2 (en) * | 2004-08-11 | 2010-06-15 | Intel Corporation | System and method to enable processor management policy in a multi-processor environment |
US7548513B2 (en) * | 2005-02-17 | 2009-06-16 | Intel Corporation | Techniques to provide recovery receive queues for flooded queues |
US7765405B2 (en) * | 2005-02-25 | 2010-07-27 | Microsoft Corporation | Receive side scaling with cryptographically secure hashing |
US20070005742A1 (en) * | 2005-06-30 | 2007-01-04 | Avigdor Eldar | Efficient network communications via directed processor interrupts |
US7647509B2 (en) * | 2006-05-12 | 2010-01-12 | Intel Corporation | Method and apparatus for managing power in a processing system with multiple partitions |
US7584286B2 (en) * | 2006-06-28 | 2009-09-01 | Intel Corporation | Flexible and extensible receive side scaling |
US8661160B2 (en) * | 2006-08-30 | 2014-02-25 | Intel Corporation | Bidirectional receive side scaling |
US20080086575A1 (en) * | 2006-10-06 | 2008-04-10 | Annie Foong | Network interface techniques |
US7715428B2 (en) * | 2007-01-31 | 2010-05-11 | International Business Machines Corporation | Multicore communication processing |
US20090006521A1 (en) * | 2007-06-29 | 2009-01-01 | Veal Bryan E | Adaptive receive side scaling |
US8661167B2 (en) * | 2007-09-17 | 2014-02-25 | Intel Corporation | DMA (direct memory access) coalescing |
US8112648B2 (en) * | 2008-03-11 | 2012-02-07 | Globalfoundries Inc. | Enhanced control of CPU parking and thread rescheduling for maximizing the benefits of low-power state |
US8010822B2 (en) * | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
US8949472B2 (en) * | 2008-09-10 | 2015-02-03 | International Business Machines Corporation | Data affinity based scheme for mapping connections to CPUs in I/O adapter |
US8009682B2 (en) * | 2009-05-05 | 2011-08-30 | Citrix Systems, Inc. | Systems and methods for packet steering in a multi-core architecture |
US8769067B2 (en) * | 2009-06-22 | 2014-07-01 | Citrix Systems, Inc. | Systems and methods for statistics exchange between cores for load balancing |
US8239699B2 (en) | 2009-06-26 | 2012-08-07 | Intel Corporation | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
-
2009
- 2009-06-26 US US12/459,114 patent/US8239699B2/en active Active
-
2010
- 2010-06-25 CN CN201510781891.3A patent/CN105446455B/zh active Active
- 2010-06-25 CN CN201080028104.3A patent/CN102460342B/zh not_active Expired - Fee Related
- 2010-06-25 EP EP10792757.6A patent/EP2446340A4/en not_active Withdrawn
- 2010-06-25 WO PCT/US2010/040083 patent/WO2010151824A2/en active Application Filing
- 2010-06-25 KR KR1020117031560A patent/KR101444990B1/ko active IP Right Grant
-
2012
- 2012-07-11 US US13/546,276 patent/US20120278637A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084154A1 (en) | 2001-10-31 | 2003-05-01 | International Business Machines Corporation | Energy-induced process migration |
US20030110012A1 (en) | 2001-12-06 | 2003-06-12 | Doron Orenstien | Distribution of processing activity across processing hardware based on power consumption considerations |
US20070070904A1 (en) * | 2005-09-26 | 2007-03-29 | King Steven R | Feedback mechanism for flexible load balancing in a flow-based processor affinity scheme |
US20070234088A1 (en) * | 2006-04-04 | 2007-10-04 | Microsoft Corporation | Identifying a target processor idle state |
Also Published As
Publication number | Publication date |
---|---|
US20100332869A1 (en) | 2010-12-30 |
CN105446455B (zh) | 2019-04-02 |
US20120278637A1 (en) | 2012-11-01 |
CN102460342A (zh) | 2012-05-16 |
CN105446455A (zh) | 2016-03-30 |
CN102460342B (zh) | 2016-01-20 |
US8239699B2 (en) | 2012-08-07 |
EP2446340A2 (en) | 2012-05-02 |
KR20140014407A (ko) | 2014-02-06 |
WO2010151824A3 (en) | 2011-04-07 |
WO2010151824A2 (en) | 2010-12-29 |
EP2446340A4 (en) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101444990B1 (ko) | 멀티프로세서 코어 시스템에서 에너지 효율적 네트워크 패킷 프로세싱을 실행하기 위한 방법 및 장치 | |
EP3242185B1 (en) | Server rack power management | |
US8924534B2 (en) | Resource optimization and monitoring in virtualized infrastructure | |
US9008079B2 (en) | System and method for high-performance, low-power data center interconnect fabric | |
US8171321B2 (en) | Method and apparatus for cost and power efficient, scalable operating system independent services | |
JP6290462B2 (ja) | ネットワーク・アクセス可能なブロック・ストレージのための協調アドミッション制御 | |
US10430347B2 (en) | Power savings via dynamic page type selection | |
US10990407B2 (en) | Dynamic interrupt reconfiguration for effective power management | |
US20180225254A1 (en) | Network communications using pooled memory in rack-scale architecture | |
US20190042331A1 (en) | Power aware load balancing using a hardware queue manager | |
EP2240852B1 (en) | Scalable sockets | |
WO2013029487A1 (zh) | 一种资源分配方法及资源管理平台 | |
JP2011529210A (ja) | 複数のオペレーティングシステムを実行するマルチプロセッササーバのプロセッサリソースを管理する技術 | |
CN108702339B (zh) | 用于在结构架构中基于服务质量进行节流的装置和方法 | |
CN116490839A (zh) | 用于执行多gpu***的分布式电源管理的机制 | |
WO2023231549A1 (zh) | 一种虚拟通道的请求分配方法及相关装置 | |
CN116132369A (zh) | 云网关服务器中多网口的流量分发方法及相关设备 | |
Zheng et al. | CLIBE: Precise Cluster-Level I/O Bandwidth Enforcement in Distributed File System | |
CA2845341A1 (en) | A computer system, methods, apparatus for processing applications, dispensing workloads, monitor energy and sequence power to nonhierarchical multi-tier blade servers in data centers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180903 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190829 Year of fee payment: 6 |