KR102443089B1 - 컴퓨팅 디바이스에서의 동기화 - Google Patents

컴퓨팅 디바이스에서의 동기화 Download PDF

Info

Publication number
KR102443089B1
KR102443089B1 KR1020177012734A KR20177012734A KR102443089B1 KR 102443089 B1 KR102443089 B1 KR 102443089B1 KR 1020177012734 A KR1020177012734 A KR 1020177012734A KR 20177012734 A KR20177012734 A KR 20177012734A KR 102443089 B1 KR102443089 B1 KR 102443089B1
Authority
KR
South Korea
Prior art keywords
loop
instruction
function
hot
pup
Prior art date
Application number
KR1020177012734A
Other languages
English (en)
Other versions
KR20170093121A (ko
Inventor
커창 우
지웨이 루
용퐁 리
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20170093121A publication Critical patent/KR20170093121A/ko
Application granted granted Critical
Publication of KR102443089B1 publication Critical patent/KR102443089B1/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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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
    • G06F11/3409Recording 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 for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Electric Clocks (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

일 실시예는 장치를 제공한다. 장치는 프로세서, 칩셋, 프로세스를 저장하는 메모리, 및 로직을 포함한다. 프로세서는 하나 이상의 코어(들)를 포함하고 프로세스를 실행한다. 로직은 검출 이용 임계값(UT)보다 더 큰 플랫폼 프로세서 이용 파라미터(PUP)에 응답하여 성능 감시 데이터를 취득하고, 검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나에 적어도 부분적으로 기초하여 스핀 루프를 식별하고, 수정된 프로세스 부분을 생성하기 위해 이진 변환을 사용하여 식별된 스핀 루프를 수정하고, 식별된 스핀 루프로부터 수정된 프로세스 부분으로 재지향을 구현한다.

Description

컴퓨팅 디바이스에서의 동기화{SYNCHRONIZATION IN A COMPUTING DEVICE}
본 개시내용은 컴퓨팅 디바이스에 관한 것으로, 특히 컴퓨팅 디바이스에서의 동기화에 관한 것이다.
컴퓨팅 디바이스들 예컨대 랩톱들, 태블릿들 및/또는 스마트폰들은 일반적으로 프로세서, 메모리 및 하나 이상의 주변 디바이스들을 포함한다. 프로세서는 하나 이상의 애플리케이션(들)을 실행하도록 구성되는 하나 이상의 처리 유닛들, 예를 들어 코어(들)를 포함할 수 있다. 프로세스, 즉 실행 애플리케이션은 하나 이상의 스레드(들)를 포함할 수 있다. 프로세서는 하나 이상의 프로세스(들) 및/또는 스레드(들)를 일반적으로 병렬로 실행하도록 구성될 수 있다. 프로세스(들) 및/또는 스레드(들)는 예를 들어 운영 시스템(operating system)(OS)에 포함되는 스케줄러에 의해 관리되는 처리 유닛(들)을 타임 슬라이스 방식으로 공유할 수 있다.
OS(및/또는 OS와 연관되는 커널)는 제1 스레드가 아직 완료하지 못한 동작을 개시했던 메모리 위치에 제2 스레드가 액세스하는 것을 방지하기 위해 복수의 스레드들에 의한 메모리 액세스들을 동기화하도록 구성될 수 있다. 동기화는 메모리 위치의 판독의 결과들이 복수의 스레드들의 주문의 실행에 의존하는 경합 조건들을 방지하도록 구성된다. 동기화는 일반적으로 연관된 동작이 원자적인 것, 즉 다른 스레드가 타겟 메모리 위치에 액세스하는 것 없이 연관된 동작이 시작되면, 완료하고 커밋하는 것을 보장하도록 구성되는 로크 함수(예를 들어, 스핀 로크)에 의해 구현된다.
청구된 발명 대상의 특징들 및 장점들은 그것과 일치하는 실시예들의 하기의 상세한 설명으로부터 분명할 것이며, 그 설명은 첨부 도면들을 참조하여 고려되어야 한다.
도 1은 본 개시내용의 다양한 실시예들에 따른 컴퓨팅 디바이스의 기능 블록도를 예시한다.
도 2는 본 개시내용의 다양한 실시예들에 따른 동기화 동작들의 흐름도이다.
도 3은 본 개시내용의 다양한 실시예들에 따른 스핀 루프 식별 동작들의 흐름도이다.
하기의 상세한 설명은 예시적 실시예들을 참조하여 진행되지만, 그것의 많은 대안들, 수정들, 및 변형들은 본 기술분야의 통상의 기술자들에게 분명할 것이다.
제1 스레드와 연관되는 로크가 적용되고 제2 스레드가 실행되고 있는 동안, 커널은 제2 스레드에 의해 로킹된 메모리 위치에 액세스하려는 시도들이 실패되게 할 수 있다. 제2 스레드는 제1 스레드와 연관되는 로크가 해제될 때까지 스핀 루프를 실행할 수 있다. 스핀 루프는 메모리 액세스 동작을 반복적으로 시도하도록 구성되고 시도들 사이에서 중지될 수 있다. 실패는 스핀 루프를 계속하도록 구성되고 성공은 스핀 루프를 나가도록 구성된다. 그러한 스핀 루프들은 프로세서 사이클들을 소비하며 그리고/또는 메모리 액세스 동작을 성공적으로 수행하기 위해 대기하는 동안 프로세서 전력 소비를 증가시킬 수 있다.
일반적으로, 이러한 개시내용은 컴퓨팅 디바이스를 위한 동기화 방법들(및 시스템들)에 관한 것이다. 방법들 및 시스템들은 컴퓨팅 디바이스 상에 실행하는 프로세스에서 스핀 루프(들)를 식별하도록 구성된다. 방법들 및 시스템들은 스핀 로크들의 효과들을 완화하기 위해, 예를 들어 프로세서 자원들의 소비를 감소시키기 위해 이진 변환을 사용하여 런타임에 식별된 스핀 루프(들)를 수정하도록 더 구성된다.
본원에 사용되는 바와 같이, 프로세스는 프로세서 상에 실행하는 애플리케이션에 대응하고 스레드는 프로세스의 인스턴스에 대응한다. 프로세서는 하나 이상의 실행 코어(들)를 포함할 수 있다. 프로세서는 하나 이상의 실행 코어(들)를 각각 포함할 수 있는 하나 이상의 소켓(들)으로 구성될 수 있다.
스핀 루프는 검출된 핫 함수, 검출된 핫 루프 및/또는 선택된 핫 명령 중 하나 이상에 적어도 부분적으로 기초하여 식별될 수 있다. 검출된 핫 함수 및/또는 핫 루프의 실행은 하나 이상의 임계값(들)보다 더 큰 프로세서 자원들을 소비할 수 있다. 핫 명령에 의한 프로세서 자원들의 소비는 핫 명령을 포함하는 함수 및/또는 루프에 포함되는 다른 명령들에 비해 높을 수 있다. 핫 함수, 핫 루프 및/또는 핫 명령은 스핀 루프와 관련될 수 있거나 관련되지 않을 수 있다.
스핀 루프는 중지 명령 및/또는 중지 명령 및 원자적 메모리 액세스 명령을 포함할 수 있다. 원자적 메모리 액세스 명령들은 예를 들어 메모리 위치의 콘텐츠 및 레지스터의 콘텐츠를 원자적으로 교환하도록 구성되는 <lock xchgl>; 제1 레지스터 내의 제1 원시 피연산자 및 메모리 위치 내의 목적 피연산자를 원자적으로 비교하고, 제1 원시 피연산자 및 목적 피연산자가 동일하면 목적 피연산자를 제2 원시 레지스터 내의 제2 원시 피연산자로 대체하고 그렇지 않으면 제1 원시 피연산자를 목적 피연산자로 대체하도록 구성되는 <lock cmpxchgl>("비교 및 교환(스왑)", 즉 "CAS"); 원시 피연산자 및 목적 피연산자를 스와핑하고 목적 피연산자에서 2개의 피연산자들의 합을 저장하도록 구성되는 <lock xadd>; 등을 포함할 수 있다.
스핀 루프를 포함하는 함수 및/또는 루프의 실행은 비교적 높은 프로세서 이용(예를 들어, 50%보다 더 큼) 및 회수되는 명령들의 비교적 높은 비율(예를 들어, 50%보다 더 큼)과 연관될 수 있다. 비교적 높은 프로세서 이용은 원하는 동작을 성공적으로 완료할 수 없는 동안, 즉 대기 동안 프로세서 자원들의 소비에 대응한다. 대기 동안 프로세서 자원들을 소비하는 것은 다른 프로세스 및/또는 스레드가 원하는 동작(들)을 성공적으로 수행하기 위해 그러한 프로세서 자원들을 실행하고 이용하는 것을 방지할 수 있다.
본 개시내용에 따른 방법들 및 시스템들은 프로세서 이용을 감시하고 현재 프로세서 이용 파라미터(processor utilization parameter)(PUP)를 결정하도록 구성된다. 그 다음, 현재 PUP는 검출 이용 임계값(utilization threshold)(UT)과 비교될 수 있다. 현재 PUP 및 검출 UT 각각은 최대 프로세서 이용의 각각의 비율에 대응한다. 현재 PUP는 프로세서(플랫폼 PUP), 소켓(소켓 PUP) 및/또는 코어(코어 PUP)를 위해 결정될 수 있다.
현재 PUP가 검출 UT보다 더 크면, 핫 함수(들) 및/또는 핫 루프(들)를 검출하도록 구성되는 감시가 개시될 수 있다. 함수 및/또는 루프가 핫인지는 본원에 설명되는 바와 같이, 취득된 성능 감시 데이터 및 연관된 성능 프로파일들(즉, 프로파일 데이터)에 적어도 부분적으로 기초하여 판단될 수 있다. 성능 감시 데이터는 본원에 설명되는 바와 같이, 프로세서 이용 데이터 및 명령 회수 데이터를 포함한다. 핫 루프는 명령들의 비교적 작은 수를 포함할 수 있다. 따라서, 핫 루프는 루프 내의 명령들의 수에 적어도 부분적으로 더 기초하여 검출될 수 있다.
예를 들어, 핫 함수(들)는 프로세서 이용 데이터, 명령 회수 데이터 및 연관된 성능 프로파일(들)에 적어도 부분적으로 기초하여 검출될 수 있다. 다른 예에서, 핫 루프(들)는 프로세서 이용 데이터, 명령 회수 데이터, 연관된 성능 프로파일(들) 및 각각의 루프 내의 명령들의 수에 적어도 부분적으로 기초하여 검출될 수 있다. 그 다음, 핫 함수(들) 및 핫 루프(들)는 프로세서 이용 데이터, 명령 회수 데이터 및 핫 루프 및/또는 핫 함수에 포함되는 명령들에 적어도 부분적으로 기초하여 스핀 루프(들)를 식별하기 위해 분석될 수 있다. 다시 말하면, 프로세서 이용 데이터 및 명령 회수 데이터는 가능한 스핀 루프의 표시를 제공할 수 있다. 핫 함수 및/또는 핫 루프가 스핀 루프를 포함하는지는 프로세서 이용 데이터, 명령 회수 데이터 및/또는 핫 루프 및/또는 핫 함수에 포함되는 명령들의 추가 분석에 적어도 부분적으로 기초하여 판단될 수 있다. 예를 들어, 중지 명령을 포함하는 핫 함수는 중지 명령과 연관되는 PUP 및 명령 회수 파라미터(instructions retired parameter)(IRP)가 각각의 임계값보다 각각 더 크면 스핀 루프를 포함할 수 있으며 그리고/또는 핫 함수는 원자적 메모리 액세스 명령을 포함한다. 다른 예에서, 중지 명령을 포함하는 핫 루프는 중지 명령과 연관되는 PUP 및 IRP가 각각의 임계값보다 각각 더 크면 스핀 루프를 포함할 수 있으며 그리고/또는 핫 루프는 원자적 메모리 액세스 명령을 포함한다.
방법들 및 시스템들은 연관된 프로세서 이용을 감소시키기 위해 이진 변환을 사용하여 식별된 스핀 루프(들)를 수정하도록 구성된다. 이진 변환은 이진 코드 이미지를 조작하도록 구성되며, 따라서 원시 코드에의 액세스는 요구되지 않는다. 일 실시예에서, 스핀 루프는 본원에 설명되는 바와 같이, OS가 다른 프로세스를 실행하는 것을 선택하게 하도록 구성되는 yield(일드)() 함수(즉, 시스템 호출)를 포함하도록 수정될 수 있다. 다른 실시예에서, 스핀 루프는 본원에 설명되는 바와 같이, 지수적 백오프를 포함하도록 수정될 수 있다. 그 다음, 수정된 프로세스 부분들(즉, 수정된 스핀 루프들)은 메모리에 저장될 수 있다. 그 다음, 타겟 프로세스는 프로그램 흐름이 수정된 프로세스 부분들로 진행하고(예를 들어, 점프하고) 원래의 프로세스 부분들을 실행하지 않도록 수정될 수 있다.
따라서, 핫 함수(들) 및/또는 핫 루프(들)는 취득된 프로세서 성능 감시 데이터 및 연관된 성능 프로파일들(즉, 성능 프로파일 데이터)에 적어도 부분적으로 기초하여 런타임에 검출될 수 있다. 스핀 루프(들)는 또한 핫 루프 및/또는 핫 함수에 포함되는 명령(들)에 적어도 부분적으로 기초하여 런타임에 식별될 수 있다. 그 다음, 스핀 루프(들)는 프로세서 이용을 감소시키기 위해 이진 변환을 사용하여 수정될 수 있고 타겟 프로세스는 스핀 루프의 이진 변환에 대응하는 수정된 프로세스 부분을 실행하도록 구성될 수 있다. 따라서, 프로세서 이용은 사용자 개입 없이 런타임에 동적으로 감소될 수 있다. 프로세서 처리량은 로크 컨텐션들의 수를 감소시킴으로써 개선될 수 있다. 프로세서 이용 및 연관된 전력 소비는 유사하게 감소될 수 있다. 본 개시내용에 따른 방법 및 시스템은 원시 코드에 액세스를 필요로 하는 것 없이 그러한 개선들을 제공하도록 구성된다. 구현은 사용자에게 투명하도록 구성되고 시스템 워크로드 및/또는 프로세서 구성의 선험적 지식에 의존하지 않을 수 있다. 따라서, 전체 성능이 개선될 수 있다.
도 1은 본 개시내용의 수개의 실시예들에 따른 컴퓨팅 디바이스(100)의 시스템 블록도를 예시한다. 컴퓨팅 디바이스(100)는 서버, 워크스테이션 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터(예를 들어, iPad®, GalaxyTab® 등), 울트라포터블 컴퓨터, 울트라모바일 컴퓨터, 넷북 컴퓨터 및/또는 서브노트북 컴퓨터; 스마트폰, (예를 들어, iPhone®, Android® 기반 전화, Blackberry®, Symbian® 기반 전화, Palm® 기반 전화 등) 및/또는 피처 폰을 포함하지만, 이들에 제한되지 않는 이동 전화를 포함할 수 있지만, 이들에 제한되지 않는다.
컴퓨팅 디바이스(100)는 프로세서(102), 칩셋(104), 입력/출력(input/output)(I/O) 포트(들)(106), 주변 디바이스들(108) 및 메모리(110)를 포함한다. 메모리(110)는 커널 공간(112) 및 사용자 공간(114)을 포함할 수 있다. 프로세서(102)는 하나 이상의 실행 코어(들)(120a,..., 120p), 복수의 레지스터들(122) 및 하나 이상의 캐시 메모리(들)(124)를 포함한다. 프로세서(102)는 프로세서(102)와 메모리(110) 사이에서 메모리 액세스들을 관리하도록 구성되는 메모리 관리 유닛(memory management unit)(MMU)(126)을 포함할 수 있다. 일부 실시예들에서, 프로세서(102)는 하나 이상의 소켓(들)(103a,..., 103m) 및 각각의 소켓으로 구성될 수 있으며, 예를 들어 소켓(103a)은 하나 이상의 코어(들)(120a,..., 120p), 복수의 레지스터들(122) 및 하나 이상의 캐시 메모리(들)(124)를 포함할 수 있다. 각각의 코어(120a,..., 120p)는 하나 이상의 프로세스(들) 및/또는 하나 이상의 스레드(들)를 실행하도록 구성될 수 있다. 복수의 레지스터들(122)은 복수의 일반 목적 레지스터들, 상태 레지스터 및 명령 포인터를 포함할 수 있다. 캐시(들)(124)는 하나 이상의 캐시 메모리들을 포함할 수 있다.
칩셋(104)은 프로세서(102)를 주변 디바이스들(108) 및 I/O 포트들(106)에 결합하도록 구성된다. 예를 들어, 칩셋(104)은 주변 컨트롤러 허브(peripheral controller hub)(PCH)를 포함할 수 있다. 다른 예에서, 칩셋(104)은 센서 허브를 포함할 수 있다. 주변 디바이스들(108)은 예를 들어 디스플레이, 터치 스크린 디스플레이, 프린터, 키패드, 키보드 등을 포함하는 사용자 인터페이스 디바이스(들), 가속도계, 위성 위치 확인 시스템(global positioning system)(GPS), 자이로스코프 등을 포함하는 센서(들), 통신 로직, 하드 디스크 드라이브들, 고체 상태 드라이브들, 제거식 저장 매체들 등을 포함하는 유선 및/또는 무선, 저장 디바이스(들)를 포함할 수 있다. I/O 포트들(106)은 하나 이상의 통신 프로토콜들에 따라 커맨드들 및/또는 데이터를 송신 및/또는 수신하도록 구성될 수 있다. 예를 들어, I/O 포트들(106) 중 하나 이상은 본원에 설명되는 바와 같이, 범용 직렬 버스(universal serial bus)(USB) 프로토콜을 따르며 그리고/또는 이 프로토콜과 호환가능할 수 있다. 다른 예에서, I/O 포트들(106) 중 하나 이상은 본원에 설명되는 바와 같이, 주변 구성요소 상호연결(peripheral component interconnect)(PCI) 프로토콜(예를 들어, PCI 익스프레스(PCI express)(PCIe))를 따르거나 이 프로토콜과 호환가능할 수 있다.
메모리(110)는 하나 이상의 프로세스(들)(130)를 저장하도록 구성된다. 프로세스(들)(130)는 사용자 공간(114)에 저장될 수 있다. 프로세스(들)(130)(즉, 실행 애플리케이션(들))는 타겟 프로세스(132)를 포함하고 하나 이상의 다른 프로세스(들)(131a,...,131n)를 포함할 수 있다. 프로세스(들)(130) 중 하나 이상은 일반적으로 병렬로, 즉 복수의 프로세스들 및/또는 복수의 스레드들로 실행하도록 구성될 수 있다. 타겟 프로세스(132)는 실행 애플리케이션의 일 예에 대응한다. 타겟 프로세스(132)는 복수의 스레드들로 실행될 수 있다.
메모리(110)는 운영 시스템(OS)(134) 및/또는 커널(136)을 저장하도록 더 구성된다. OS(134) 및/또는 커널(136)은 커널 공간(112)에 저장될 수 있다. 일부 실시예들에서, OS(134)는 커널(136)을 포함할 수 있다. 타겟 프로세스(132)는 커널 공간(112)에 직접 액세스가능하지 않을 수 있다. 다시 말하면, OS(134) 및/또는 커널(136)은 커널 공간(112)을 보호하고 타겟 프로세스(132) 및/또는 다른 프로세스(들)(131a, ..., 131n)에 의해 액세스를 방지하도록 구성될 수 있다.
커널(136)은 컴퓨팅 디바이스(100)와 연관되는 회로와 사용자 프로세스들 사이에 인터페이스를 제공하도록 구성된다. 다시 말하면, 커널(136)은 타겟 프로세스(132)를 포함하는 프로세스(들)(130)에 의해 프로세서(102), 칩셋(104), I/O 포트들(106) 및 주변 디바이스들(108)에의 액세스를 관리하도록 구성된다. 커널(136)은 컴퓨팅 디바이스(100)의 요소들(즉, 프로세서(102), 칩셋(104), I/O 포트들(106) 및 주변 디바이스들(108))을 관리하며 그리고/또는 이 요소들과 통신하도록 구성되는 하나 이상의 드라이버들을 포함할 수 있다.
메모리(110)는 커널 성능 모니터 드라이버 로직(140) 및 성능 모니터 로직(142)을 저장하도록 구성된다. 일부 실시예들에서, 커널 성능 모니터 드라이버 로직(140)은 커널(136)에 포함될 수 있다. 일부 실시예들에서, 성능 모니터 로직(142)은 커널 성능 모니터 드라이버 로직(140)에 포함될 수 있다. 성능 모니터 로직(142)은 본원에 설명되는 바와 같이, 프로세서(102) 및/또는 코어(들)(120)의 동작을 감시하고 성능 감시 데이터를 취득하도록 구성된다. 성능 모니터 로직(142)은 성능 감시 데이터를 소켓, 코어, 프로세스 및/또는 스레드와 연관시키도록 더 구성될 수 있다. 성능 감시 데이터는 메모리(110)에서 모니터 및 프로파일 데이터(144)에 저장될 수 있다.
예를 들어, 성능 모니터 로직(142)은 타겟 프로세스, 예를 들어 타겟 프로세스(132) 내에 이벤트 샘플링 능력을 구현하도록 구성되는 성능 모니터 유닛(Performance Monitor Unit)(PMU)에 대응할 수 있다. 이벤트들은 프로세서 사이클들의 수의 카운트, 회수되는 명령들의 수의 카운트 등을 포함할 수 있다. PMU는 프로세서, 예를 들어 프로세서(102)의 동작을 감시하고, 프로세서 사이클들의 수 및/또는 시간 간격에서 회수되는 명령들의 수를 캡처하도록 구성될 수 있다. 프로세서 사이클들의 수는 본원에 설명되는 바와 같이, 프로세서 이용과 관련된다.
다른 예에서, 성능 모니터 로직(142)은 하나 이상의 프로세스(들)를 감시 및/또는 프로파일링하도록 구성되는 애플리케이션 프로그래밍 인터페이스(application programming interface)(API)에 대응할 수 있다. 그러한 API들은 예를 들어, Intel® VTune®(성능 프로파일러), "OProfile"(리눅스 2.6 이상 시스템들을 위한 개방 소스 세트의 성능 감시 도구들), "perf"(리눅스 2.6 이상을 위한 개방 소스 프로파일 도구), Oracle® 솔라리스 스튜디오 성능 분석 도구들 등을 포함하거나 이들에 포함될 수 있다.
성능 모니터 로직(142) 및/또는 커널 성능 모니터 드라이버 로직(140)은 프로세서(102)의 동작을 감시하도록 구성될 수 있다. 성능 모니터 로직(142) 및/또는 커널 성능 모니터 드라이버 로직(140)은 플랫폼 PUP를 검출 UT와 비교하도록 구성될 수 있다. 플랫폼 PUP가 검출 UT에 도달하거나 검출 UT를 초과하면, 커널 성능 모니터 드라이버 로직(140)은 핫 함수(들) 및/또는 핫 루프(들)의 검출을 개시하도록 구성된다. 플랫폼 PUP 및 검출 UT는 프로세서(102)의 최대 허용가능 이용의 퍼센티지로서 프로세서(102)의 전체 이용에 대응한다. 플랫폼 PUP는 연관된 처리 유닛들(예를 들어, 소켓(들) 및/또는 코어(들))의 모두로부터의 기여들을 포함하도록 구성된다. 검출 UT는 메모리(110)에서 예를 들어 성능 임계값 데이터(146)에 저장될 수 있다. 성능 임계값들은 일반적으로 런타임 전에, 사용자, 예를 들어 시스템 관리자에 의해 설정될 수 있다. 예를 들어, 검출 UT는 70% 내지 100%의 범위일 수 있다. 일 예에서, 검출 UT는 70%일 수 있다.
플랫폼 PUP 및 검출 UT는 실행 프로세스가 스핀 루프를 포함할 수 있다는 표시를 제공하도록 구성된다. 검출 UT보다 더 큰 플랫폼 PUP는 핫 함수(들) 및/또는 핫 루프(들)를 검출하고 스핀 루프(들)를 식별하기 위해 추가 감시를 트리거, 즉 개시하도록 구성된다. 예를 들어, 커널 성능 모니터 드라이버 로직(140)은 모니터 스레드 로직(143)을 타겟 프로세스에 주입하도록 구성될 수 있다. 모니터 스레드 로직(143)은 성능 감시 데이터를 주기적으로 취득(즉, 검출 및/또는 캡처)하고 모니터 및 프로파일 데이터(144)에 성능 감시 데이터를 저장하도록 구성된다. 예를 들어, 모니터 스레드 로직(143)은 성능 모니터 로직(142)으로부터 성능 감시 데이터를 캡처할 수 있다. 다른 예에서, 모니터 스레드 로직(143)은 성능 감시 데이터를 직접 검출할 수 있다.
성능 감시 데이터는 프로세서 이용 데이터 및 명령 회수 데이터를 포함한다. 프로세서 이용 데이터는 현재 프로세서 이용에 대응한다. 예를 들어, 프로세서 이용 데이터는 시간 간격 내의 프로세서 사이클들의 수에 대응할 수 있다. 명령 회수 데이터는 완료했고 커밋하는 명령들의 수에 대응한다. 각각의 명령은 복수의 부동작들, 예를 들어 디코드, 인출, 실행 등을 포함할 수 있다. 본원에 사용되는 바와 같이, "회수"는 연관된 명령의 부동작들의 모두가 성공적으로 수행되었고 프로세서 파이프라인으로부터 회수되는 것을 의미한다. 성능 감시 데이터는 시간 간격에 걸쳐 취득될 수 있다. 성능 감시 데이터는 프로세서, 예를 들어 프로세서(102), 소켓, 예를 들어 소켓(103a), 코어, 예를 들어 코어(120a)에 대해 취득될 수 있다. 프로세스, 스레드, 함수 및/또는 루프는 식별되고 모니터 및 프로파일 데이터(144)에 저장되는 각각의 성능 감시 데이터와 연관될 수 있다.
커널 성능 모니터 드라이버 로직(140)은 취득된 성능 감시 데이터에 적어도 부분적으로 기초하여 하나 이상의 성능 프로파일(들)을 발생시키도록 구성된다. 성능 프로파일들(즉, 성능 프로파일 데이터)은 프로세서(102), 소켓, 예를 들어 소켓(103a), 코어, 예를 들어 코어(120a), 프로세스, 예를 들어 타겟 프로세스(132), 및/또는 스레드를 위해 발생될 수 있고 그 다음에 함수, 루프 및/또는 명령과 관련될 수 있다. 성능 프로파일들은 하나 이상의 PUP(들) 및 하나 이상의 IRP(들)를 포함할 수 있다. 성능 프로파일들은 모니터 및 프로파일 데이터(144)에 저장될 수 있다. 커널 성능 모니터 드라이버 로직(140)은 PUP(들) 및 IRP(들)를 프로세스, 예를 들어 타겟 프로세스(132)와 연관시키고, 프로파일 데이터(144)에 PUP(들) 및 IRP(들)를 저장하도록 구성된다.
프로세서 이용 파라미터(PUP)는 예를 들어 퍼센티지로 표현되는 프로세서 이용 데이터 값들의 비율에 대응한다. 각각의 프로세서 이용 데이터 값은 시간 간격에 걸쳐 실행되는 프로세서 사이클들의 수로 결정될 수 있다. PUP는 플랫폼 프로세서 이용에 대한 타겟 프로세스, 함수를 포함하는 프로세스에 대한 함수, 명령을 포함하는 함수에 대한 명령 등을 위해 결정될 수 있다. 따라서, 스레드 PUP는 프로세서, 소켓 또는 코어를 위한 프로세서 사이클들의 최대 수에 대한 스레드와 연관되는 프로세서 사이클들에 대응한다. 함수 PUP는 함수를 포함하는 프로세스(및/또는 스레드)를 위한 프로세서 사이클들의 전체 수에 대한 함수를 위한 프로세서 사이클들의 비율에 대응한다. 루프 PUP는 루프를 포함하는 프로세스(및/또는 스레드)를 위한 프로세서 사이클들의 전체 수에 대한 루프를 위한 프로세서 사이클들의 비율에 대응한다. 함수 루프 PUP는 루프를 포함하는 함수를 위한 프로세서 사이클들의 전체 수에 대한 루프를 위한 프로세서 사이클들의 비율에 대응한다. 명령 PUP는 명령을 포함하는 함수 및/또는 루프를 위한 프로세서 사이클들의 전체 수에 대한 명령을 위한 프로세서 사이클들의 비율에 대응한다. 예를 들어, 중지 명령 PUP 및 중지 명령 UT는 중지 명령과 연관될 수 있다.
유사하게, 명령 회수 파라미터(IRP)는 예를 들어 퍼센티지로 표현되는 명령 회수 데이터 값들의 비율에 대응한다. 따라서, 루프 IRP는 루프를 포함하는 프로세스(및/또는 스레드)를 위해 회수되는 명령들의 전체 수에 대한 루프를 위해 회수되는 명령들의 비율에 대응한다. 함수 IRP는 함수를 포함하는 프로세스(및/또는 스레드)를 위해 회수되는 명령들의 전체 수에 대한 함수를 위해 회수되는 명령들의 비율에 대응한다. 함수 루프 IRP는 루프를 포함하는 함수를 위해 회수되는 명령들의 전체 수에 대한 루프를 위해 회수되는 명령들의 비율에 대응한다. 명령 IRP는 명령을 포함하는 함수 및/또는 루프를 위해 회수되는 명령들의 전체 수에 대한 명령을 위해 회수되는 명령들의 비율에 대응한다. 예를 들어, 중지 명령 IRP는 중지 명령과 연관될 수 있다.
성능 프로파일(들)은 핫 함수(들) 및/또는 핫 루프(들)를 검출하고 그 다음에 스핀 루프(들)를 식별하기 위해 이용될 수 있다. 핫 함수(들) 및/또는 핫 루프(들)는 타겟 프로세스를 위한 PUP(들) 중 하나 이상에 적어도 부분적으로 기초하여 검출될 수 있다. 예를 들어, PUP(들)는 타겟 프로세스를 위한 각각의 프로세서 UT(들)와 비교될 수 있다. 핫 함수(들) 및/또는 핫 루프(들)는 타겟 프로세스를 위한 IRP(들) 중 하나 이상에 적어도 부분적으로 기초하여 검출될 수 있다. 예를 들어, IRP(들)는 타겟 프로세스를 위한 각각의 명령 회수 임계값(들)(instructions retired threshold(s)(IRT(s))과 비교될 수 있다. 스핀 루프(들)는 본원에 설명되는 바와 같이, PUP(들) 중 하나 이상, IRP(들) 중 하나 이상 및 핫 함수 및/또는 핫 루프를 포함한 중지 명령의 검출에 적어도 부분적으로 기초하여 식별될 수 있다.
핫 함수는 함수 UT보다 더 큰 연관된 함수 PUP를 갖는 함수에 대응할 수 있고 핫 루프는 루프 UT보다 더 큰 연관된 루프 PUP를 갖는 루프에 대응할 수 있다. 핫 함수는 핫 함수에 포함될 수 있는 임의의 핫 루프들을 검출하기 위해 더 분석될 수 있다. 함수 UT는 함수 프로세서 이용 비율(예를 들어, 퍼센트)에 대응하고 루프 UT는 루프 프로세서 이용 비율에 대응한다. 예를 들어, 함수 UT는 20% 내지 100%의 범위일 수 있고 루프 UT는 20% 내지 100%의 범위일 수 있다. 예를 들어, 함수 UT는 20%일 수 있다. 다른 예에서, 루프 UT는 20%일 수 있다. 함수 UT 및 루프 UT는 선험적으로 설정되고 성능 임계값 데이터(146)에 저장될 수 있다. 임계값들은 정확도를 개선하기 위해 조정 및/또는 갱신될 수 있다.
성능 임계값 데이터(146)는 하나 이상의 IRT(들) 및 명령 임계값을 저장하도록 더 구성될 수 있다. IRT들은 루프 명령 회수 비율(예를 들어, 퍼센티지)에 대응하는 루프 IRT 및 함수 명령 회수 비율에 대응하는 함수 IRT를 포함한다. IRT들은 함수 및/또는 루프를 포함하는 프로세스를 위한 시간 간격에서 회수되는 명령들의 전체 수에 대해 결정될 수 있다. 예를 들어, 루프 IRT는 20% 내지 100%의 범위일 수 있고 함수 IRT는 20% 내지 100%의 범위일 수 있다. 예를 들어, 루프 IRT는 20%일 수 있다. 다른 예에서, 함수 IRT는 20%일 수 있다.
UT들과 유사하게, IRT들은 선험적으로 설정되고 조정 및/또는 갱신될 수 있다. 일부 실시예들에서, 함수 루프 UT 및/또는 함수 루프 IRT는 성능 임계값 데이터(146)에 저장될 수 있다. 함수 루프 임계값들은 핫 루프들을 포함하는 핫 함수들에 대해 핫 루프들의 분석을 허용하도록 구성된다. 예를 들어, 핫 함수들에 대해 핫 루프들을 분석하는 것은 핫 함수 및 핫 루프 검출의 크로스 체크 및/또는 스핀 루프(들)의 식별을 제공할 수 있다.
명령 임계값은 핫 루프 내의 명령들의 최대 수와 관련된다. 스핀 루프를 포함하는 핫 루프는 전형적으로 명령들의 비교적 작은 수를 포함할 수 있다. 예를 들어, 명령들의 최대 수는 100의 자릿수에 대응할 수 있다. 예를 들어, 명령 임계값은 200일 수 있다. 다른 예에서, 명령 임계값은 200 미만일 수 있다. 다른 예에서, 명령 임계값은 200보다 더 클 수 있다. 명령 임계값은 선험적으로 설정되고 성능 임계값 데이터(146)에 저장될 수 있다. 명령 임계값은 조정 및/또는 갱신될 수 있다.
따라서, 검출 임계값보다 더 큰 플랫폼 프로세서 이용에 응답하여, 커널 성능 모니터 드라이버 로직(140)은 소켓, 코어, 프로세스 및/또는 스레드를 위해 핫 함수(들) 및/또는 핫 루프(들)를 검출하도록 구성된다. 커널 성능 모니터 드라이버 로직(140)은 프로파일 데이터(144) 및 성능 임계값 데이터(146)에 적어도 부분적으로 기초하여 핫 함수(들) 및/또는 핫 루프(들)를 검출하도록 구성된다. 커널 성능 모니터 드라이버 로직(140)은 타겟 프로세스에 포함되는 각각의 함수 및/또는 루프를 위해 하나 이상의 PUP(들)를 각각의 프로세서 UT(들)와 비교하며 그리고/또는 하나 이상의 IRP(들)를 각각의 IRT(들)와 비교하도록 구성될 수 있다. 커널 성능 모니터 드라이버 로직(140)은 각각의 루프에 포함되는 명령들의 수를 결정하도록 더 구성될 수 있다. 그 다음, 명령들의 수는 예를 들어 커널 성능 모니터 드라이버 로직(140)에 의해 명령 임계값과 비교될 수 있다. 예를 들어, 핫 함수는 함수 UT 이상의 연관된 함수 PUP 및 함수 IRT 이상의 연관된 함수 IRP를 갖는 함수에 대응할 수 있다. 예를 들어, 핫 루프는 루프 UT 이상의 연관된 루프 PUP 및 루프 IRT 이상의 연관된 루프 IRP 및 명령 임계값 이하의 명령들의 수를 갖는 루프에 대응할 수 있다.
성능 임계값 데이터(146)는 명령 UT 및 명령 IRT를 저장하도록 더 구성될 수 있다. 예를 들어, 명령 UT 및/또는 명령 IRT는 20% 내지 100%의 범위일 수 있다. 일 예에서, 명령 UT 및 명령 IRT는 각각 20%일 수 있다. 명령 UT 및 명령 IRT 둘 다는 명령을 포함하는 함수(및/또는 루프)를 위한 함수(및/또는 루프) 프로세서 이용 및/또는 명령 회수 데이터에 대한 명령 프로세서 이용 및/또는 명령 회수 데이터의 비율들에 대응한다. 이러한 임계값들은 선험적으로 설정될 수 있고 조정 및/또는 갱신될 수 있다.
커널 성능 모니터 드라이버 로직(140)은 검출된 핫 함수(들) 및 검출된 핫 루프(들)에 적어도 부분적으로 기초하여 스핀 루프(들)를 식별하도록 더 구성된다. 각각 검출된 핫 함수 및 각각 검출된 핫 루프에 대해, 커널 성능 모니터 드라이버 로직(140)은 핫 명령들을 검출하도록 구성될 수 있다. 핫 명령은 핫 루프 및/또는 핫 함수에 포함되는 다른 명령(들)에 비해 높은 명령 PUP 및 높은 명령 IRP를 갖는 명령이다. 따라서, 하나 이상의 핫 명령들은 핫 함수 및/또는 핫 루프에서 선택될 수 있다. 핫 명령(들)은 핫 함수 및/또는 핫 루프에서 비교적 높은 명령 PUP들 및/또는 비교적 높은 명령 IRP들을 갖는 명령(들)을 선택함으로써 선택될 수 있다. 예를 들어, 3 또는 4 핫 명령들이 선택될 수 있다. 그 다음, 커널 성능 모니터 드라이버 로직(140)은 선택된 핫 명령(들)이 중지 명령을 포함하는지를 판단하도록 구성될 수 있다.
예를 들어, 스핀 루프(들)는 중지 명령 UT보다 더 큰 연관된 중지 명령 PUP 및 중지 명령 IRT보다 더 큰 연관된 중지 명령 IRP를 갖는 중지 명령을 포함할 수 있다. 다른 예에서, 스핀 루프(들)는 중지 명령 및 원자적 메모리 액세스 명령을 포함할 수 있다. 따라서, 스핀 루프(들)는 성능 감시 데이터, 성능 프로파일(들), 성능 임계값 데이터, 루프 내의 명령들의 수 및 핫 함수(들) 및/또는 핫 루프(들)에 포함되는 명령들에 적어도 부분적으로 기초하여 식별될 수 있다. 예를 들어, 중지 명령 UT는 1% 내지 100%의 범위일 수 있으며 그리고/또는 중지 명령 IRT는 1% 내지 100%의 범위일 수 있다. 일 예에서, 중지 명령 UT 및 IRT는 각각 10%일 수 있다.
일부 실시예들에서, 커널 성능 모니터 드라이버 로직(140)은 핫 함수(들)로부터 식별되는 스핀 루프(들)를 핫 루프(들)로부터 식별되는 스핀 루프(들)와 비교하도록 구성될 수 있다. 그러한 비교는 크로스 체크를 제공하도록 구성된다. 예를 들어, 핫 함수는 스핀 루프를 포함하는 핫 루프를 포함할 수 있다. 다른 예에서, 핫 루프는 스핀 루프를 포함하는 핫 함수를 포함할 수 있다. 다시 말하면, 스핀 루프는 핫 함수 및 핫 루프 둘 다로부터 식별될 수 있다.
따라서, 본 개시내용에 따른 방법들(및 시스템들)은 플랫폼 프로세서 이용이 검출 임계값 이상이면 핫 함수들 및/또는 핫 루프들의 검출을 개시하기 위해 플랫폼 프로세서 이용을 감시하도록 구성된다. 방법들 및 시스템들은 예를 들어 컴퓨팅 디바이스(100)의 동작 동안 취득되는 성능 감시 데이터에 적어도 부분적으로 기초하여 타겟 프로세스(예를 들어, 타겟 프로세스(132))에서 스핀 루프(들)를 식별하도록 더 구성된다. 성능 프로파일(들)은 성능 감시 데이터에 적어도 부분적으로 기초하여 생성될 수 있다. 그 다음, 스핀 루프(들)는 연관된 원시 코드에의 액세스 없이 타겟 프로세스(132)를 위해 식별될 수 있다. 그 다음, 식별된 스핀 루프(들)는 본원에 설명되는 바와 같이, 수정될 수 있다.
메모리(110)는 이진 변환기 로직(148)을 더 포함한다. 커널 성능 모니터 드라이버(140)는 적어도 각각의 루프 PUP를 감소시키도록 각각 식별된 스핀 루프를 수정하기 위해 이진 변환기 로직(148)을 타겟 프로세스, 예를 들어 타겟 프로세스(132)에 주입하도록 구성된다. 그 다음, 각각 수정된 스핀 루프는 각각 수정된 코드 부분, 예를 들어 이진 변환기 로직(148)을 포함하는 수정된 프로세스 부분(152)에 대응할 수 있다. 이진 변환기 로직(148)은 이진 코드 이미지, 예를 들어 타겟 프로세스(132)를 조작하도록 구성되며, 따라서 원시 코드에의 액세스는 요구되지 않는다. 일 실시예에서, 스핀 루프는 OS가 다른 프로세스, 예를 들어 프로세스(들)(131a,...,131n) 중 하나 이상을 선택하여 실행하게 하도록 구성되는 일드() 함수를 포함하도록 수정될 수 있다. 일딩(Yielding)은 타겟 프로세스(132)가 해제되는 로크를 대기하고 있는 동안 다른 프로세스가 실행되는 것을 허용하도록 구성되며, 따라서 프로세서 사이클들, 및 그것에 의해 대기와 연관되는 프로세서 이용을 감소시킨다. 수정된 스핀 루프는 스핀 루프를 통한 미리 정의된 수의 통과들 후에 일딩하도록 구성될 수 있다. 다른 실시예에서, 스핀 루프는 지수적 백오프를 포함하도록 수정될 수 있다. 지수적 백오프에서, 스핀 루프를 통한 각각의 반복은 증가하는 지속 동안 중지될 수 있다. 지수적 백오프는 시간 기간의 증가하는 부분 동안 중지됨으로써 프로세서 이용 및 시간 기간에서 회수되는 명령들의 비율 둘 다를 감소시키도록 구성된다.
그 다음, 이진 변환기 로직(148)을 포함하는 수정된 프로세스 부분(들)(152)(즉, 수정된 스핀 루프(들))은 메모리(110)에 저장될 수 있다. 커널 성능 모니터 드라이버 로직(140)은 수정된 프로세스 부분(들)(152) 및 이진 변환기 로직(148)을 저장하도록 구성되는 메모리 부분을 할당하도록 구성될 수 있다. 예를 들어, 메모리 부분은 타겟 프로세스(132)에 할당되는 논리 어드레스 공간 내의 사용자 공간(114)에 포함될 수 있다. 다른 예에서, 메모리 부분은 다른 프로세스들(131a,...,131n)에 보이지 않는 보호된 어드레스 공간(115)에 포함될 수 있다. 보호된 어드레스 공간(115)을 이용하는 것은 컴퓨팅 디바이스(110)의 보안을 보존하도록 구성된다.
그 다음, 타겟 프로세스(132)는 프로그램 흐름이 수정된 프로세스 부분(들)(152)으로 진행하고(예를 들어, 점프하고) 비수정된 스핀 루프(들)를 실행하지 않도록 수정될 수 있다. 예를 들어, 이진 변환기 로직(148)은 비수정된 스핀 루프(들)로부터 각각 수정된 프로세스 부분(들)으로 재지향을 구현하도록 구성될 수 있다. 타겟 프로세스(132)에 대한 수정들은 원자적으로 수행될 수 있다. 다시 말하면, 다중 스레드 상황에서, 수정된 프로세스 부분(들)(152)의 실행은 또한 수정된 프로세스 부분(들)(152)을 실행하기 위해 다른 스레드들을 구성하는 것 없이 하나의 스레드에 대해 개시되지 않을 수 있다.
이진 변환은 부가 동작들 및 관련 제어 흐름들(예를 들어, 점프들)을 도입할 수 있다. 그 결과, 하나 이상의 일반 레지스터(들)(122)의 콘텐츠는 수정된 프로세스 부분(152)이 들어갈 때 보존되고 수정된 프로세스 부분(152)이 나갈 때 복원되어야 한다. 이진 변환기 로직(148)은 그러한 레지스터 보존 및 복원 동작들을 수행하도록 구성될 수 있다.
일드() 함수는 서비스를 위한 OS에의 시스템 호출, 즉 함수 호출의 일 예이다. 원시 코드가 실행가능(즉, 이진) 코드를 발생시키기 위해 컴파일되고 링킹될 때, 링커는 전형적으로 사용자 발생 코드를 예를 들어 시스템 라이브러리 루틴들에 링킹하는데 책임이 있다. 이진 변환에서, 이진 변환기 로직, 예를 들어 이진 변환기 로직(148)은 링킹 기능성을 제공하도록 구성된다. 예를 들어, 이진 변환기 로직(148)은 타겟 프로세스(132)와 링킹되는 선택된 라이브러리 루틴의 위치(예를 들어, 어드레스)를 결정하도록 구성될 수 있다. 이러한 예에서, 선택된 라이브러리 루틴은 일드() 함수에 대응할 수 있다. 다른 예에서, 이진 변환기 로직(148)은 시스템 호출을 개시하도록 구성되는 래퍼 함수, 예를 들어 일드()를 구현하도록 구성될 수 있다.
따라서, 핫 함수(들) 및/또는 핫 루프(들)는 취득된 프로세서 성능 감시 데이터 및 연관된 성능 프로파일들에 적어도 부분적으로 기초하여 런타임에 검출될 수 있다. 그 다음, 스핀 루프(들)는 핫 루프(들) 및/또는 핫 함수(들)에 포함되는 명령(들)에 적어도 부분적으로 기초하여 식별될 수 있다. 그 다음, 식별된 스핀 루프(들)는 프로세서 이용을 감소시키기 위해 이진 변환을 사용하여 수정될 수 있고 타겟 프로세스는 비수정된 스핀 루프보다는 오히려 각각의 스핀 루프(즉, 수정된 프로세스 부분)의 각각의 이진 변환을 실행하도록 구성될 수 있다. 따라서, 프로세서 이용은 사용자 개입 없이 런타임에 동적으로 감소될 수 있다. 프로세서 처리량은 로크 컨텐션들의 수를 감소시킴으로써 개선될 수 있다. 프로세서 이용 및 연관된 전력 소비가 유사하게 감소될 수 있다. 본 개시내용에 따른 방법 및 시스템은 원시 코드에의 액세스를 필요로 하는 것 없이 그러한 개선들을 제공하도록 구성된다. 구현은 사용자에게 투명하도록 구성되고 시스템 워크로드 및/또는 프로세서 구성에 의존하지 않을 수 있다. 따라서, 전체 성능이 개선될 수 있다.
도 2는 본 개시내용의 다양한 실시예들에 따른 동기화 동작들의 흐름도(200)이다. 특히, 흐름도(200)는 임계값을 넘는 프로세서 이용을 검출하는 단계, 핫 함수(들) 및/또는 핫 루프(들)를 검출하는 단계, 스핀 루프(들)를 식별하는 단계 및 프로세서 이용을 개선하기 위해 스핀 루프(들)를 수정하는 단계를 예시한다. 동작들은 예를 들어 도 1의 컴퓨팅 디바이스(100), 특히 커널 성능 모니터 드라이버 로직(140), 성능 모니터 로직(142), 모니터 스레드 로직(143) 및/또는 이진 변환기 로직(148)에 의해 수행될 수 있다.
이러한 실시예의 동작들은 시작(202)으로 개시될 수 있다. 프로세서 이용이 검출 임계값보다 더 큰지는 동작(204)에서 판단될 수 있다. 예를 들어, 프로세서 이용은 플랫폼 프로세서 이용, 즉 플랫폼 PUP에 대응할 수 있다. 플랫폼 PUP가 검출 임계값보다 더 크지 않으면, 프로그램 흐름은 동작(204)을 반복할 수 있다. 플랫폼 PUP가 검출 임계값보다 더 크면, 성능 감시 데이터는 동작(206)에서 취득될 수 있다. 성능 감시 데이터는 프로세서 이용 데이터 및/또는 명령 회수 데이터를 포함할 수 있다. 성능 프로파일들(즉, 성능 프로파일 데이터)은 동작(208)에서 발생될 수 있다. 성능 프로파일(들)을 발생시키는 단계는 성능 감시 데이터를 타겟 프로세스와 관련시키는 단계를 포함할 수 있다. 핫 함수(들)는 동작(210)에서 검출될 수 있다. 핫 루프(들)는 동작(212)에서 검출될 수 있다. 핫 함수(들) 및/또는 핫 루프(들)는 PUP(들)를 각각의 UT(들)와 비교함으로써 및/또는 IRP(들)를 각각의 IRT(들)와 비교함으로써 검출될 수 있다. 스핀 루프(들)는 동작(214)에서 식별될 수 있다. 동작(216)은 연관된 수정된 프로세스 부분(들)을 생성하기 위해 이진 변환을 사용하여 식별된 스핀 루프(들)를 수정하는 단계를 포함한다. 수정된 프로세스 부분들은 스핀 루프(들)와 연관될 수 있는 프로세서 이용을 감소시키도록 구성된다. 수정된 프로세스 부분(들)은 동작(218)에서 저장될 수 있다. 예를 들어, 수정된 프로세스 부분(들)은 메모리, 예를 들어 사용자 공간에 저장될 수 있다. 동작(220)은 수정된 프로세스 부분(들)에 재지향을 구현하는 단계를 포함할 수 있다. 재지향은 수정된 프로세스 부분(들)이 비수정된 스핀 루프(들) 대신에 실행되게 하도록 구성된다. 그 다음, 프로그램 흐름은 동작(222)에서 계속될 수 있다.
따라서, 핫 함수(들) 및/또는 핫 루프(들)의 검출은 검출 임계값보다 더 큰 프로세서 이용에 응답하여 개시될 수 있다. 예를 들어, 로크 컨텐션들은 다른 스레드가 로킹했던 메모리 위치에 하나의 스레드가 액세스하려고 시도하는 것을 실패할 때 프로세서 이용을 증가시킬 수 있다. 스핀 루프(들)는 핫 함수(들) 및 핫 루프(들)와 관련되어 식별될 수 있다. 그 다음, 식별된 스핀 루프(들)는 로크 컨텐션과 연관되는 프로세서 이용을 감소시키기 위해 이진 변환을 사용하여 수정될 수 있고 타겟 프로세스는 연관된 스핀 루프(들)보다는 오히려 수정된 프로세스 부분(들)을 실행하도록 수정될 수 있다. 따라서, 프로세서 이용이 개선될 수 있다.
도 3은 본 개시내용의 다양한 실시예들에 따른 스핀 루프 식별 동작들의 흐름도(300)이다. 특히, 흐름도(300)는 도 2의 동작(214)의 일 예를 예시한다. 동작들은 예를 들어 도 1의 컴퓨팅 디바이스(100), 특히 커널 성능 모니터 드라이버 로직(140)에 의해 수행될 수 있다. 이러한 실시예의 동작들은 도 2의 동작들(210 및 212)에서 검출되는 각각의 핫 함수 및/또는 핫 루프를 위해 수행될 수 있다.
이러한 실시예의 동작들은 시작(302)으로 개시될 수 있다. 핫 명령(들)은 동작(304)에서 검출될 수 있다. 예를 들어, 검출된 핫 함수(들) 및/또는 검출된 핫 루프(들)에 대한 성능 프로파일(들), 즉, 성능 프로파일 데이터가 분석될 수 있다. 비교적 높은 연관된 명령 PUP 및/또는 비교적 높은 연관된 명령 IRP를 갖는 명령(들)은 핫 명령들에 대응할 수 있다. 예를 들어, 하나 이상의 핫 명령들은 핫 함수 및/또는 핫 루프에서 높은 명령 PUP들 및/또는 높은 명령 IRP들을 갖는 명령(들)을 선택함으로써 핫 함수 및/또는 핫 루프 내에서 검출될 수 있다. "높은"은 핫 함수 및/또는 핫 루프 내의 다른 명령(들)에 대해 결정될 수 있다. 명령 PUP(들) 및 명령 IRP(들)는 명령(들)을 포함하는 핫 함수 및/또는 핫 루프에 대해 결정될 수 있다.
핫 명령(들)이 중지 명령을 포함하는지는 동작(306)에서 판단될 수 있다. 핫 명령(들)이 중지 명령을 포함하지 않으면, 이때 프로그램 흐름은 동작(308)에서 계속될 수 있다. 핫 명령들 내의 중지 명령의 부재는 대응하는 핫 함수 및/또는 핫 루프가 스핀 루프를 포함하지 않을 가능성이 있는 것을 표시할 수 있다. 핫 명령(들)이 중지 명령을 포함하면, 동작(310)에서 중지 명령 PUP는 중지 명령 UT와 비교될 수 있고 중지 명령 IRP는 중지 명령 IRT와 비교될 수 있다. 중지 명령 PUP가 중지 명령 UT보다 더 크고 중지 명령 IRP가 중지 명령 IRT보다 더 큰지는 동작(312)에서 판단될 수 있다. 동작(312)의 양 조건이 참이면, 이때 중지 명령은 스핀 루프와 연관되고 프로그램 흐름은 동작(314)에서 계속될 수 있다. 동작(312)의 조건들 중 적어도 하나가 참이 아니면, 이때 핫 명령(들)이 원자적 메모리 액세스 명령을 포함하는지는 동작(316)에서 판단될 수 있다. 핫 명령(들)이 원자적 메모리 액세스 명령을 포함하면, 이때 대응하는 핫 함수 및/또는 핫 루프는 스핀 루프를 포함하고 프로그램 흐름은 동작(318)에서 계속될 수 있다. 핫 명령(들)이 원자적 메모리 액세스 명령을 포함하지 않으면, 이때 대응하는 핫 함수 및/또는 핫 루프는 실제 핫 루프를 포함하지 않고 프로그램 흐름은 동작(320)에서 계속될 수 있다.
따라서, 핫 함수(들) 및/또는 핫 루프(들)에 포함되는 핫 명령(들)은 스핀 루프(들)를 식별하기 위해 분석될 수 있다. 스핀 루프(들)는 본원에 설명되는 바와 같이, 스핀 로크와 연관된다. 연관된 임계값들 이상의 중지 명령 및 성능 프로파일 데이터는 스핀 루프에 대응한다. 중지 명령 및 원자적 메모리 액세스 명령은 스핀 루프에 대응한다. 그 다음, 식별된 스핀 루프(들)는 본원에 설명되는 바와 같이, 스핀 로크의 효과들을 완화하도록 수정될 수 있다.
도 2 및 도 3의 흐름도들은 다양한 실시예들에 따른 동작들을 예시하지만, 도 2 및 도 3에 도시된 동작들이 반드시 다른 실시예들을 위해 필요한 것은 아니라는 점이 이해되어야 한다. 게다가, 본 개시내용의 다른 실시예들에서, 도 2 및/또는 도 3에 도시된 동작들, 및/또는 본원에 설명되는 다른 동작들은 도면들 중 어느 것에 구체적으로 도시되지 않은 방식으로 조합될 수 있고, 그러한 실시예들은 도 2 및/또는 도 3에 예시되는 것보다 더 적거나 더 많은 동작들을 포함할 수 있다는 점이 본원에서 충분히 고려된다. 따라서, 하나의 도면에 정확히 도시되지 않은 특징들 및/또는 동작들에 관한 청구항들은 본 개시내용의 범위 및 내용 내에서 생각된다.
제1 사용 예에서, 다른 애플리케이션들을 실행하지 않으면서 데이터베이스 애플리케이션(데이터베이스 프로세스)를 실행하는, 2 소켓들 및 소켓 당 8 코어들로 구성되는 Intel® Xeon® 프로세서는 본원에 설명되는 바와 같이 감시되었다. 플랫폼 PUP는 거의 100%이도록 검출되었고 핫 함수(들) 및/또는 핫 루프(들)의 검출 및 스핀 루프(들)의 식별을 위한 감시가 개시되었다. 89.2%의 연관된 루프 PUP 및 27.5%의 연관된 루프 IRT를 가진 핫 루프가 검출되었다. 핫 루프는 200보다 더 적은 명령들을 더 포함한다. 핫 루프는 핫 함수에 포함되었다. 핫 함수는 96%의 연관된 함수 PUP 및 44%의 연관된 함수 IRP를 가졌다. 추가 분석은 핫 함수가 중지 명령 및 원자적 메모리 액세스 명령(<lock xchgl>)을 포함한 것을 결정했다. 중지 명령은 1%의 중지 명령 PUP 및 11%의 중지 명령 IRP를 가졌다. 원자적 명령은 91%의 연관된 명령 PUP 및 51%의 연관된 명령 IRP를 가졌다. 명령들 둘 다에 대해, 퍼센티지들은 핫 함수를 위한 각각의 파라미터들에 대해 결정되었다.
이러한 사용 예를 계속하면, 이러한 핫 함수를 위한 의사코드는 다음을 포함했다:
Figure 112017044765963-pct00001
Figure 112017044765963-pct00002
따라서, 스핀 루프를 포함한다. 핫 함수 및 스핀 루프는 본원에 설명되는 바와 같이, 일드() 함수를 포함하기 위해 이진 변환을 사용하여 수정되었다. 그 후, 최종 의사코드는 다음을 포함했다:
Figure 112017044765963-pct00003
따라서, 대기 동안 프로세서 자원들을 계속 소비하는 것보다는 오히려, 일드() 시스템 호출은 핫 함수가 해제되는 로크를 대기하고 있었던 동안 다른 프로세스 및/또는 스레드가 실행되는 것을 허용하도록 구성되었다.
제2 사용 예에서, 비즈니스 인텔리전스 애플리케이션을 실행하는 4 소켓들 및 소켓 당 10 코어들로 구성되는 Intel® Xeon® 프로세서는 본원에 설명되는 바와 같이 감시되었다. 플랫폼 PUP는 거의 100%이도록 검출되었고 핫 함수(들) 및/또는 핫 루프(들)의 검출 및 스핀 루프(들)의 식별을 위한 감시가 개시되었다. 43%의 연관된 함수 PUP 및 47%의 연관된 함수 IRP를 가진 핫 함수가 검출되었다. 핫 함수의 핫 명령 분석은 핫 함수에 대해 84%의 조합된 명령 PUP 및 98%의 조합된 명령 IRP를 갖는 4개의 명령들을 나타냈다. 4개의 핫 명령들은 49%의 중지 명령 PUP 및 98%의 중지 명령 IRP를 가진 중지 명령을 포함했다. 스핀 루프의 의사코드는 다음을 포함했다:
Figure 112017044765963-pct00004
Figure 112017044765963-pct00005
따라서, 중지 명령은 스핀 루프와 관련되었다.
제3 사용 예에서, 데이터베이스 애플리케이션을 실행하는 4 소켓들 및 소켓 당 10 코어들로 구성되는 Intel® Xeon® 프로세서는 본원에 설명되는 바와 같이 감시되었다. 플랫폼 PUP는 거의 100%이도록 검출되었고 핫 함수(들) 및/또는 핫 루프(들)의 검출 및 스핀 루프(들)의 식별을 위한 감시가 개시되었다. 32%의 연관된 함수 PUP 및 26%의 연관된 함수 IRP를 가진 핫 함수가 검출되었다. 핫 함수의 핫 명령 분석은 핫 함수에 대해 99%의 조합된 명령 PUP 및 거의 100%의 조합된 명령 IRP를 갖는 3개의 명령들을 나타냈다. 3개의 핫 명령들은 64%의 중지 명령 PUP 및 거의 100%의 중지 명령 IRP를 가진 중지 명령을 포함했다. 스핀 루프의 의사코드는 다음을 포함했다:
Figure 112017044765963-pct00006
따라서, 중지 명령은 스핀 루프와 관련되었다.
제4 사용 예에서, 데이터베이스 애플리케이션을 실행하는 2 소켓들 및 소켓 당 8 코어들로 구성되는 Intel® Xeon® 프로세서는 본원에 설명되는 바와 같이 감시되었다. 플랫폼 PUP는 거의 100%이도록 검출되었고 핫 함수(들) 및/또는 핫 루프(들)의 검출 및 스핀 루프(들)의 식별을 위한 감시가 개시되었다. 36%의 연관된 함수 PUP 및 21%의 연관된 함수 IRP를 가진 핫 함수가 식별되었다. 핫 함수의 핫 명령 분석은 핫 함수에 대해 70%의 조합된 명령 PUP 및 72%의 조합된 명령 IRP를 갖는 3개의 명령들을 나타냈다. 3개의 핫 명령들은 25%의 중지 명령 PUP 및 19%의 중지 명령 IRP를 가진 중지 명령을 포함했다. 스핀 루프의 의사코드는 다음을 포함했다:
Figure 112017044765963-pct00007
의사코드에서, CAS()는 본원에 설명되는 바와 같이, <lock cmpxchgl>, 즉 원자적 비교 및 교환 명령에 대응한다.
중지 명령 PUP는 중지 명령 UT(예를 들어, 20%)보다 더 크지만, 중지 명령 IRP는 중지 명령 IRT(예를 들어, 20%)보다 약간 더 작은 19%이었다. 핫 함수는 본원에 설명되는 바와 같이, 원자적 메모리 액세스 명령(<lock cmpxchgl>)을 포함하며, 따라서 핫 함수는 스핀 루프를 포함한다.
따라서, 본 개시내용에 따른 방법들 및 시스템들은 핫 루프(들) 및/또는 핫 함수(들)를 검출하도록 구성될 수 있다. 방법들 및 시스템들은 핫 루프(들) 및/또는 핫 함수(들)에 적어도 부분적으로 기초하여 스핀 루프(들)를 식별하도록 더 구성된다. 방법들 및 시스템들은 예를 들어 스핀 루프(들)와 연관되는 프로세서 이용을 감소시키기 위해 이진 변환을 사용하여 식별된 스핀 루프(들)를 수정하도록 더 구성될 수 있다.
OS(134)는 각각의 개별 디바이스 및/또는 시스템, 예를 들어 컴퓨팅 디바이스(100) 상에 실행되는 시스템 자원들 및 제어 작업들을 관리하도록 구성될 수 있다. 예를 들어, OS는 마이크로소프트 윈도우즈, HP-UX, 리눅스, 또는 유닉스를 사용하여 구현될 수 있지만, 다른 운영 시스템들이 사용될 수 있다. 일부 실시예들에서, OS는 하나 이상의 처리 유닛들, 예를 들어 코어(들)(120a,..., 120p) 상에 실행하는 다양한 운영 시스템들(가상 머신들)에 기본 하드웨어를 위한 추상화의 계층을 제공할 수 있는 가상 머신 모니터(또는 하이퍼바이저)로 대체될 수 있다.
메모리(110)는 다음의 타입들의 메모리 중 하나 이상을 포함할 수 있다: 반도체 펌웨어 메모리, 프로그램가능 메모리, 비휘발성 메모리, 판독 전용 메모리, 전기적 프로그램가능 메모리, 랜덤 액세스 메모리, 플래시 메모리, 자기 디스크 메모리, 및/또는 광 디스크 메모리. 부가적으로 또는 대안적으로 시스템 메모리는 다른 및/또는 나중에 개발될 타입들의 컴퓨터 판독가능 메모리를 포함할 수 있다.
본원에서 설명되는 동작들의 실시예들은 하나 이상의 프로세서들에 의해 실행될 때 방법들을 수행하는 명령들을 저장하는 컴퓨터 판독가능 저장 디바이스에서 구현될 수 있다. 프로세서는 예를 들어 처리 유닛 및/또는 프로그램가능 회로를 포함할 수 있다. 저장 디바이스는 임의의 타입의 유형의 비일시적 저장 디바이스를 포함하는 머신 판독가능 저장 디바이스, 예를 들어 플로피 디스크들, 광 디스크들, 콤팩트 디스크 판독 전용 메모리들(compact disk read-only memories)(CD-ROMs), 콤팩트 디스크 리라이터블(compact disk rewritables)(CD-RWs), 및 광 자기 디스크들을 포함하는 임의의 타입의 디스크, 반도체 디바이스들 예컨대 판독 전용 메모리들(read-only memories)(ROMs), 랜덤 액세스 메모리들(random access memories)(RAMs) 예컨대 동적 및 정적 RAM들, 소거가능 프로그램가능 판독 전용 메모리들(erasable programmable read-only memories)(EPROMs), 전기적 소거가능 프로그램가능 판독 전용 메모리들(electrically erasable programmable read-only memories)(EEPROMs), 플래시 메모리들, 자기 또는 광학 카드들, 또는 전자 명령들을 저장하는데 적절한 임의의 타입의 저장 디바이스들을 포함할 수 있다.
범용 직렬 버스(USB)는 2000년 4월 27일에 범용 직렬 버스 기구에 의해 발행된 범용 직렬 버스 사양, 리비전 2.0, 및/또는 이러한 사양의 나중 버전들, 예를 들어 2013년 7월 26일에 발행된 범용 직렬 버스 사양, 리비전 3.1을 따르거나 이들과 호환가능할 수 있다.
PCIe는 2010년 11월에 주변 구성요소 상호연결 분과회(Peripheral Component Interconnect Special Interest Group)(PCI-SIG)에 의해 발행된 PCI 익스프레스 3.0 베이스 사양, 리비전 3.0, 및/또는 이러한 사양의 나중 및/또는 관련 버전들을 따르거나 이들과 호환가능할 수 있다.
본원에서의 임의의 실시예에 사용되는 바와 같이, 용어 "로직"은 상술한 동작들 중 어느 것을 수행하도록 구성되는 애플리케이션, 소프트웨어, 펌웨어 및/또는 회로를 언급할 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체 상에 기록되는 소프트웨어 패키지, 코드, 명령들, 명령 세트들 및/또는 데이터로 구체화될 수 있다. 펌웨어는 메모리 디바이스들에서 하드 코딩되는(예를 들어, 비휘발성인) 코드, 명령들 또는 명령 세트들 및/또는 데이터로 구체화될 수 있다.
"회로"는 본원에서의 임의의 실시예에 사용되는 바와 같이, 예를 들어 개별적으로 또는 임의의 조합으로, 하드와이어드 회로, 프로그램가능 회로 예컨대 하나 이상의 개별 명령 처리 코어들을 포함하는 컴퓨터 프로세서들, 상태 머신 회로, 및/또는 프로그램가능 회로에 의해 실행되는 명령들을 저장하는 펌웨어를 포함할 수 있다. 로직은 집합적으로 또는 개별적으로, 더 큰 시스템, 예를 들어 집적 회로(integrated circuit)(IC), 주문형 집적 회로(application-specific integrated circuit)(ASIC), 시스템 온 칩(system on-chip)(SoC), 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 태블릿 컴퓨터들, 서버들, 스마트폰들 등의 일부를 형성하는 회로로 구체화될 수 있다.
일부 실시예들에서, 하드웨어 기술 언어(hardware description language)(HDL)는 본원에 설명되는 다양한 로직 및/또는 회로를 위해 회로 및/또는 로직 구현(들)을 지정하기 위해 사용될 수 있다. 예를 들어, 일 실시예에서, 하드웨어 기술 언어는 본원에 설명되는 하나 이상의 회로들 및/또는 로직의 반도체 제조를 가능하게 할 수 있는 초고속 집적 회로(very high speed integrated circuits)(VHSIC) 하드웨어 기술 언어(VHDL)를 따르거나 이 언어와 호환가능할 수 있다. VHDL은 IEEE 표준 1076-1987, IEEE 표준 1076.2, IEEE1076.1, IEEE 드래프트 3.0의 VHDL-2006, IEEE 드래프트 4.0의 VHDL-2008 및/또는 다른 버전들의 IEEE VHDL 표준들 및/또는 다른 하드웨어 기술 표준들을 따르거나 이들과 호환가능할 수 있다.
따라서, 본 개시내용의 교시들에 따르면, 시스템 및 방법은 프로세서 이용을 개선하기 위해 핫 루프(들) 및/또는 핫 함수(들)를 검출하고, 스핀 루프(들)를 식별하고 식별된 스핀 루프(들)를 수정하도록 구성되는 커널 성능 모니터 드라이버 로직 및 이진 변환기 로직을 포함한다. 취득된 프로세서 성능 감시 데이터 및 연관된 성능 프로파일들에 적어도 부분적으로 기초하여 런타임에 핫 함수(들) 및/또는 핫 루프(들)가 검출될 수 있고 스핀 루프(들)가 식별될 수 있다. 그 다음, 식별된 스핀 루프(들)는 프로세서 이용을 감소시키기 위해 이진 변환을 사용하여 수정될 수 있고 타겟 프로세스는 스핀 루프(즉, 수정된 프로세스 부분)의 이진 변환을 실행하도록 구성될 수 있다. 따라서, 프로세서 이용은 사용자 개입 없이 런타임에 동적으로 감소될 수 있다. 프로세서 처리량은 로크 컨텐션들의 수를 감소시킴으로써 개선될 수 있다. 본 개시내용에 따른 방법 및 시스템은 원시 코드에의 액세스를 필요로 하는 것 없이 그러한 개선들을 제공하도록 구성된다. 구현은 사용자에게 투명하도록 구성되고 시스템 워크로드 및/또는 프로세서 구성의 선험적 지식에 의존하지 않을 수 있다.
예들
본 개시내용의 예들은 아래에 논의되는 바와 같이, 대상 재료 예컨대 방법, 방법의 단계들을 수행하는 수단, 디바이스, 또는 컴퓨팅 디바이스에서의 동기화와 관련되는 장치 또는 시스템을 포함한다.
예 1
이러한 예에 따르면, 장치가 제공된다. 장치는 프로세스를 실행하는 프로세서, 칩셋, 프로세스를 저장하는 메모리, 및 로직을 포함한다. 프로세서는 하나 이상의 코어(들)를 포함한다. 로직은 검출 이용 임계값(UT)보다 더 큰 플랫폼 프로세서 이용 파라미터(PUP)에 응답하여 성능 감시 데이터를 취득하고, 검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나에 적어도 부분적으로 기초하여 스핀 루프를 식별하고, 수정된 프로세스 부분을 생성하기 위해 이진 변환을 사용하여 식별된 스핀 루프를 수정하고, 식별된 스핀 루프로부터 수정된 프로세스 부분으로 재지향을 구현한다.
예 2
이러한 예는 예 1의 요소들을 포함하며, 검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나는 성능 감시 데이터와 관련되는 하나 이상의 성능 프로파일(들)에 적어도 부분적으로 기초하여 검출된다.
예 3
이러한 예는 예 1의 요소들을 포함하며, 식별된 스핀 루프는 중지 명령에 적어도 부분적으로 기초하여 식별된다.
예 4
이러한 예는 예 1의 요소들을 포함하며, 성능 감시 데이터는 프로세서 이용 데이터 및 명령 회수 데이터 중 적어도 하나를 포함한다.
예 5
이러한 예는 예 2의 요소들을 포함하며, 성능 프로파일(들)은 함수 프로세서 이용 파라미터(PUP), 루프 PUP, 명령 PUP, 함수 명령 회수 파라미터(IRP), 루프 IRP 및 명령 IRP를 포함하는 그룹으로부터 선택된다.
예 6
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 함수는 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 검출된다.
예 7
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 루프는 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 검출된다.
예 8
이러한 예는 예 7의 요소들을 포함하며, 검출된 핫 루프는 검출된 핫 루프 내의 명령들의 수에 적어도 부분적으로 기초하여 검출된다.
예 9
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 함수는 함수 프로세서 이용 파라미터(PUP) 및 함수 이용 임계값(UT)의 비교 및 함수 명령 회수 파라미터(IRP) 및 함수 명령 회수 임계값(IRT)의 비교에 적어도 부분적으로 기초하여 검출된다.
예 10
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 루프는 루프 프로세서 이용 파라미터(PUP) 및 루프 이용 임계값(UT)의 비교 및 루프 명령 회수 파라미터(IRP) 및 루프 명령 회수 임계값(IRT)의 비교에 적어도 부분적으로 기초하여 검출된다.
예 11
이러한 예는 예 10의 요소들을 포함하며, 검출된 핫 루프는 명령 임계값과 검출된 핫 루프에 포함되는 명령들의 수의 비교에 적어도 부분적으로 기초하여 검출된다.
예 12
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 함수는 함수 이용 임계값(UT) 이상의 연관된 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 임계값(IRT) 이상의 함수 명령 회수 파라미터(IRP)를 갖는다.
예 13
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 루프는 루프 이용 임계값(UT) 이상의 연관된 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 임계값(IRT) 이상의 루프 명령 회수 파라미터(IRP)를 갖는다.
예 14
이러한 예는 예 13의 요소들을 포함하며, 검출된 핫 루프 내의 명령들의 수는 명령 임계값 이하이다.
예 15
이러한 예는 예 9 또는 예 12의 요소들을 포함하며, 함수 UT는 20 퍼센트(%) 내지 100 퍼센트의 범위이고 함수 IRT는 20% 내지 100%의 범위이다.
예 16
이러한 예는 예 10, 예 11, 예 13 및 예 14 중 어느 하나에 기재된 요소들을 포함하며, 루프 UT는 20 퍼센트(%) 내지 100 퍼센트의 범위이고, 루프 IRT는 20% 내지 100%의 범위이다.
예 17
이러한 예는 예 11 또는 예 14의 요소들을 포함하며, 명령 임계값은 대략 100이다.
예 18
이러한 예는 예 10, 예 11, 예 13 및 예 14 중 어느 하나에 기재된 요소들을 포함하며, 루프 UT는 20%이고, 루프 IRT는 20%이고 명령 임계값은 200이다.
예 19
이러한 예는 예 11 또는 예 14의 요소들을 포함하며, 명령 임계값은 200이다.
예 20
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 로직은 검출된 핫 함수 및 검출된 핫 루프 각각을 위해 하나 이상의 핫 명령들을 더 선택한다.
예 21
이러한 예는 예 20의 요소들을 포함하며, 각각의 핫 명령은 각각의 명령 프로세서 이용 파라미터(PUP)에 적어도 부분적으로 기초하여 그리고 각각의 명령의 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 선택된다.
예 22
이러한 예는 예 21의 요소들을 포함하며, 각각의 개별 명령 PUP 및 각각의 개별 명령 IRP는 검출된 핫 함수 또는 검출된 핫 루프에 대해 결정된다.
예 23
이러한 예는 예 20의 요소들을 포함하며, 하나 이상의 선택된 핫 명령들 각각은 검출된 핫 함수 또는 검출된 핫 루프 내의 다른 명령들에 비해 높은 명령 프로세서 이용 파라미터(PUP) 및/또는 높은 명령의 명령 회수 파라미터(IRP) 중 적어도 하나를 갖는다.
예 24
이러한 예는 예 20의 요소들을 포함하며, 선택된 핫 명령들의 수는 3 또는 4이다.
예 25
이러한 예는 예 20의 요소들을 포함하며, 로직은 하나 이상의 선택된 핫 명령들이 중지 명령을 포함하는지를 더 판단한다.
예 26
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 식별된 스핀 루프는 중지 명령 이용 임계값(UT) 이상의 연관된 중지 명령 프로세서 이용 파라미터(PUP) 및 중지 명령의 명령 회수 임계값(IRT) 이상의 연관된 중지 명령의 명령 회수 파라미터(IRP)를 갖는 중지 명령을 포함한다.
예 27
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 식별된 스핀 루프는 중지 명령 및 원자적 메모리 액세스 명령을 포함한다.
예 28
이러한 예는 예 26의 요소들을 포함하며, 중지 명령 UT는 20 퍼센트(%) 내지 100%의 범위이고 중지 명령 IRT는 20% 내지 100%의 범위이다.
예 29
이러한 예는 예 26의 요소들을 포함하며, 중지 명령 UT는 20 퍼센트(%)이고 중지 명령 IRT는 20%이다.
예 30
이러한 예는 예 2의 요소들을 포함하며, 검출된 핫 함수는 검출된 핫 루프와 관련된다.
예 31
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 수정된 프로세스 부분은 일드 시스템 호출 또는 지수적 백오프 동작 중 적어도 하나를 포함한다.
예 32
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 로직은 메모리에 메모리 부분을 더 할당하며, 메모리 부분은 수정된 프로세스 부분을 저장한다.
예 33
이러한 예는 예 32의 요소들을 포함하며, 메모리는 사용자 공간 및 커널 공간을 포함하고 할당된 메모리 부분은 사용자 공간에 포함된다.
예 34
이러한 예는 예 32의 요소들을 포함하며, 메모리는 사용자 보호 어드레스 공간을 포함하고 할당된 메모리 부분은 사용자 보호 어드레스 공간에 포함된다.
예 35
이러한 예는 예 4의 요소들을 포함하며, 프로세서 이용 데이터는 현재 프로세서 이용에 대응하고 명령 회수 데이터는 완료했고 커밋하는 명령들의 수에 대응한다.
예 36
이러한 예는 예 35의 요소들을 포함하며, 현재 프로세서 이용은 제1 시간 간격에서 프로세서 사이클들의 수에 대응하고 명령 회수 데이터는 제2 시간 간격에서 완료했고 커밋하는 명령들의 수에 대응한다.
예 37
이러한 예는 예 2의 요소들을 포함하며, 로직은 하나 이상의 성능 프로파일(들)을 더 발생시킨다.
예 38
이러한 예는 예 2의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 프로세서 이용 파라미터(PUP) 및 명령 회수 파라미터(IRP) 중 적어도 하나를 포함한다.
예 39
이러한 예는 예 38의 요소들을 포함하며, PUP는 프로세서 이용 데이터 값들의 비율에 대응하고 IRP는 명령 회수 데이터 값들의 비율에 대응한다.
예 40
이러한 예는 예 2의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 파라미터(IRP)를 포함한다.
예 41
이러한 예는 예 2의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 파라미터(IRP)를 포함한다.
예 42
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 스핀 루프는 검출된 핫 함수 및 검출된 핫 루프 둘 다에 포함된다.
예 43
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 메모리는 사용자 공간 및 커널 공간을 포함하고 로직은 사용자 공간에 수정된 프로세스 부분을 저장한다.
예 44
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 검출 이용 임계값(UT)은 20 퍼센트(%) 내지 100%의 범위이다.
예 45
이러한 예는 예 1 내지 예 5 중 어느 하나에 기재된 요소들을 포함하며, 검출 이용 임계값(UT)은 70 퍼센트이다.
예 46
이러한 예에 따르면, 방법이 제공된다. 방법은 하나 이상의 코어(들)를 포함하는 프로세서에 의해, 프로세스를 실행하는 단계를 포함한다. 방법은 검출 이용 임계값(UT)보다 더 큰 플랫폼 프로세서 이용 파라미터(PUP)에 응답하여 성능 감시 데이터를 모니터 스레드 로직에 의해 취득하는 단계; 검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나에 적어도 부분적으로 기초하여 스핀 루프를 커널 성능 모니터 드라이버 로직에 의해 식별하는 단계; 수정된 프로세스 부분을 생성하기 위해 이진 변환을 사용하여 식별된 스핀 루프를 이진 변환기 로직에 의해 수정하는 단계; 및 식별된 스핀 루프로부터 수정된 프로세스 부분으로 재지향을 이진 변환기 로직에 의해 구현하는 단계를 더 포함한다.
예 47
이러한 예는 예 46의 요소들을 포함하며, 성능 감시 데이터와 관련되는 하나 이상의 성능 프로파일(들)에 적어도 부분적으로 기초하여 검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나를 커널 성능 모니터 드라이버 로직에 의해 검출하는 단계를 더 포함한다.
예 48
이러한 예는 예 46의 요소들을 포함하며, 식별된 스핀 루프는 중지 명령에 적어도 부분적으로 기초하여 식별된다.
예 49
이러한 예는 예 46의 요소들을 포함하며, 성능 감시 데이터는 프로세서 이용 데이터 및 명령 회수 데이터 중 적어도 하나를 포함한다.
예 50
이러한 예는 예 47의 요소들을 포함하며, 성능 프로파일(들)은 함수 프로세서 이용 파라미터(PUP), 루프 PUP, 명령 PUP, 함수 명령 회수 파라미터(IRP), 루프 IRP 및 명령 IRP를 포함하는 그룹으로부터 선택된다.
예 51
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 검출된 핫 함수를 커널 성능 모니터 드라이버 로직에 의해 검출하는 단계를 더 포함한다.
예 52
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 검출된 핫 루프를 커널 성능 모니터 드라이버 로직에 의해 검출하는 단계를 더 포함한다.
예 53
이러한 예는 예 52의 요소들을 포함하며, 검출된 핫 루프는 검출된 핫 루프 내의 명령들의 수에 적어도 부분적으로 기초하여 검출된다.
예 54
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 함수 프로세서 이용 파라미터(PUP) 및 함수 이용 임계값(UT)의 비교 및 함수 명령 회수 파라미터(IRP) 및 함수 명령 회수 임계값(IRT)의 비교에 적어도 부분적으로 기초하여 검출된 핫 함수를 커널 성능 모니터 드라이버 로직에 의해 검출하는 단계를 더 포함한다.
예 55
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 루프 프로세서 이용 파라미터(PUP) 및 루프 이용 임계값(UT)의 비교 및 루프 명령 회수 파라미터(IRP) 및 루프 명령 회수 임계값(IRT)의 비교에 적어도 부분적으로 기초하여 검출된 핫 루프를 커널 성능 모니터 드라이버 로직에 의해 검출하는 단계를 더 포함한다.
예 56
이러한 예는 예 55의 요소들을 포함하며, 검출된 핫 루프는 명령 임계값과 검출된 핫 루프에 포함되는 명령들의 수의 비교에 적어도 부분적으로 기초하여 검출된다.
예 57
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 함수는 함수 이용 임계값(UT) 이상의 연관된 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 임계값(IRT) 이상의 함수 명령 회수 파라미터(IRP)를 갖는다.
예 58
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 루프는 루프 이용 임계값(UT) 이상의 연관된 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 임계값(IRT) 이상의 루프 명령 회수 파라미터(IRP)를 갖는다.
예 59
이러한 예는 예 58의 요소들을 포함하며, 검출된 핫 루프 내의 명령들의 수는 명령 임계값 이하이다.
예 60
이러한 예는 예 54 또는 예 57의 요소들을 포함하며, 함수 UT는 20 퍼센트(%) 내지 100 퍼센트의 범위이고 함수 IRT는 20% 내지 100%의 범위이다.
예 61
이러한 예는 예 55, 예 56, 예 58 및 예 59 중 어느 하나에 기재된 요소들을 포함하며, 루프 UT는 20 퍼센트(%) 내지 100 퍼센트의 범위이고, 루프 IRT는 20% 내지 100%의 범위이다.
예 62
이러한 예는 예 56 또는 예 59의 요소들을 포함하며, 명령 임계값은 대략 100이다.
예 63
이러한 예는 예 55, 예 56, 예 58 및 예 59 중 어느 하나에 기재된 요소들을 포함하며, 루프 UT는 20%이고, 루프 IRT는 20%이고 명령 임계값은 200이다.
예 64
이러한 예는 예 56 또는 예 59의 요소들을 포함하며, 명령 임계값은 200이다.
예 65
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 함수 및 검출된 핫 루프 각각을 위해 하나 이상의 핫 명령들을 커널 성능 모니터 드라이버 로직에 의해 선택하는 단계를 더 포함한다.
예 66
이러한 예는 예 65의 요소들을 포함하며, 각각의 핫 명령은 각각의 명령 프로세서 이용 파라미터(PUP)에 적어도 부분적으로 기초하여 그리고 각각의 명령의 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 선택된다.
예 67
이러한 예는 예 66의 요소들을 포함하며, 각각의 개별 명령 PUP 및 각각의 개별 명령 IRP는 검출된 핫 함수 또는 검출된 핫 루프에 대해 결정된다.
예 68
이러한 예는 예 65의 요소들을 포함하며, 하나 이상의 선택된 핫 명령들 각각은 검출된 핫 함수 또는 검출된 핫 루프 내의 다른 명령들에 비해 높은 명령 PUP 및/또는 높은 명령 IRP 중 적어도 하나를 갖는다.
예 69
이러한 예는 예 65의 요소들을 포함하며, 선택된 핫 명령들의 수는 3 또는 4이다.
예 70
이러한 예는 예 65의 요소들을 포함하며, 커널 성능 모니터 드라이버 로직에 의해, 하나 이상의 선택된 핫 명령들이 중지 명령을 포함하는지를 판단하는 단계를 더 포함한다.
예 71
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 식별된 스핀 루프는 중지 명령 이용 임계값(UT) 이상의 연관된 중지 명령 프로세서 이용 파라미터(PUP) 및 중지 명령의 명령 회수 임계값(IRT) 이상의 연관된 중지 명령의 명령 회수 파라미터(IRP)를 갖는 중지 명령을 포함한다.
예 72
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 식별된 스핀 루프는 중지 명령 및 원자적 메모리 액세스 명령을 포함한다.
예 73
이러한 예는 예 71의 요소들을 포함하며, 중지 명령 UT는 20 퍼센트(%) 내지 100%의 범위이고 중지 명령 IRT는 20% 내지 100%의 범위이다.
예 74
이러한 예는 예 71의 요소들을 포함하며, 중지 명령 UT는 20 퍼센트(%)이고 중지 명령 IRT는 20%이다.
예 75
이러한 예는 예 47의 요소들을 포함하며, 검출된 핫 함수는 검출된 핫 루프와 관련된다.
예 76
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 수정된 프로세스 부분은 일드 시스템 호출 또는 지수적 백오프 동작 중 적어도 하나를 포함한다.
예 77
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 메모리에 메모리 부분을 커널 성능 모니터 드라이버 로직에 의해 할당하는 단계를 더 포함하고, 메모리 부분은 수정된 프로세스 부분을 저장한다.
예 78
이러한 예는 예 77의 요소들을 포함하며, 메모리는 사용자 공간 및 커널 공간을 포함하고 할당된 메모리 부분은 사용자 공간에 포함된다.
예 79
이러한 예는 예 77의 요소들을 포함하며, 메모리는 사용자 보호 어드레스 공간을 포함하고 할당된 메모리 부분은 사용자 보호 어드레스 공간에 포함된다.
예 80
이러한 예는 예 49의 요소들을 포함하며, 프로세서 이용 데이터는 현재 프로세서 이용에 대응하고 명령 회수 데이터는 완료했고 커밋하는 명령들의 수에 대응한다.
예 81
이러한 예는 예 80의 요소들을 포함하며, 현재 프로세서 이용은 제1 시간 간격에서 프로세서 사이클들의 수에 대응하고 명령 회수 데이터는 제2 시간 간격에서 완료했고 커밋하는 명령들의 수에 대응한다.
예 82
이러한 예는 예 47의 요소들을 포함하며, 커널 성능 모니터 드라이버 로직에 의해, 하나 이상의 성능 프로파일(들)을 발생시키는 단계를 더 포함한다.
예 83
이러한 예는 예 47의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 프로세서 이용 파라미터(PUP) 및 명령 회수 파라미터(IRP) 중 적어도 하나를 포함한다.
예 84
이러한 예는 예 83의 요소들을 포함하며, PUP는 프로세서 이용 데이터 값들의 비율에 대응하고 IRP는 명령 회수 데이터 값들의 비율에 대응한다.
예 85
이러한 예는 예 47의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 파라미터(IRP)를 포함한다.
예 86
이러한 예는 예 47의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 파라미터(IRP)를 포함한다.
예 87
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 스핀 루프는 검출된 핫 함수 및 검출된 핫 루프 둘 다에 포함된다.
예 88
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 사용자 공간 및 커널 공간을 포함하는 메모리의 사용자 공간에 수정된 프로세스 부분을 커널 성능 모니터 드라이버 로직에 의해 저장하는 단계를 더 포함한다.
예 89
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 검출 이용 임계값(UT)은 20 퍼센트(%) 내지 100%의 범위이다.
예 90
이러한 예는 예 46 내지 예 50 중 어느 하나에 기재된 요소들을 포함하며, 검출 이용 임계값(UT)는 70 퍼센트이다.
예 91
이러한 예에 따르면, 하나 이상의 프로세서들에 의해 실행될 때 하기의 동작들을 야기하는 명령들을 저장하는 컴퓨터 판독가능 저장 디바이스가 제공되며, 이 동작들은 프로세스를 실행하는 단계; 검출 이용 임계값(UT)보다 더 큰 플랫폼 프로세서 이용 파라미터(PUP)에 응답하여 성능 감시 데이터를 취득하는 단계; 검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나에 적어도 부분적으로 기초하여 스핀 루프를 식별하는 단계; 수정된 프로세스 부분을 생성하기 위해 이진 변환을 사용하여 식별된 스핀 루프를 수정하는 단계; 및 식별된 스핀 루프로부터 수정된 프로세스 부분으로 재지향을 구현하는 단계를 포함한다.
예 92
이러한 예는 예 91의 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 성능 감시 데이터와 관련되는 하나 이상의 성능 프로파일(들)에 적어도 부분적으로 기초하여 검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나를 검출하는 단계를 포함하는 부가 동작들을 야기한다.
예 93
이러한 예는 예 91의 요소들을 포함하며, 식별된 스핀 루프는 중지 명령에 적어도 부분적으로 기초하여 식별된다.
예 94
이러한 예는 예 91의 요소들을 포함하며, 성능 감시 데이터는 프로세서 이용 데이터 및 명령 회수 데이터 중 적어도 하나를 포함한다.
예 95
이러한 예는 예 92의 요소들을 포함하며, 성능 프로파일(들)은 함수 프로세서 이용 파라미터(PUP), 루프 PUP, 명령 PUP, 함수 명령 회수 파라미터(IRP), 루프 IRP 및 명령 IRP를 포함하는 그룹으로부터 선택된다.
예 96
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 검출된 핫 함수를 검출하는 단계를 포함하는 부가 동작들을 야기한다.
예 97
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 검출된 핫 루프를 검출하는 단계를 포함하는 부가 동작들을 야기한다.
예 98
이러한 예는 예 97의 요소들을 포함하며, 검출된 핫 루프는 검출된 핫 루프 내의 명령들의 수에 적어도 부분적으로 기초하여 검출된다.
예 99
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 함수 프로세서 이용 파라미터(PUP) 및 함수 이용 임계값(UT)의 비교 및 함수 명령 회수 파라미터(IRP) 및 함수 명령 회수 임계값(IRT)의 비교에 적어도 부분적으로 기초하여 검출된 핫 함수를 검출하는 단계를 포함하는 부가 동작들을 야기한다.
예 100
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 루프 프로세서 이용 파라미터(PUP) 및 루프 이용 임계값(UT)의 비교 및 루프 명령 회수 파라미터(IRP) 및 루프 명령 회수 임계값(IRT)의 비교에 적어도 부분적으로 기초하여 검출된 핫 루프를 검출하는 단계를 포함하는 부가 동작들을 야기한다.
예 101
이러한 예는 예 100의 요소들을 포함하며, 검출된 핫 루프는 명령 임계값과 검출된 핫 루프에 포함되는 명령들의 수의 비교에 적어도 부분적으로 기초하여 검출된다.
예 102
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 함수는 함수 이용 임계값(UT) 이상의 연관된 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 임계값(IRT) 이상의 함수 명령 회수 파라미터(IRP)를 갖는다.
예 103
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 검출된 핫 루프는 루프 이용 임계값(UT) 이상의 연관된 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 임계값(IRT) 이상의 루프 명령 회수 파라미터(IRP)를 갖는다.
예 104
이러한 예는 예 103의 요소들을 포함하며, 검출된 핫 루프 내의 명령들의 수는 명령 임계값 이하이다.
예 105
이러한 예는 예 99 또는 예 102 중 어느 하나에 기재된 요소들을 포함하며, 함수 UT는 20 퍼센트(%) 내지 100 퍼센트의 범위이고 함수 IRT는 20% 내지 100%의 범위이다.
예 106
이러한 예는 예 100, 예 101, 예 103 및 예 104 중 어느 하나에 기재된 요소들을 포함하며, 루프 UT는 20 퍼센트(%) 내지 100 퍼센트의 범위이고, 루프 IRT는 20% 내지 100%t의 범위이다.
예 107
이러한 예는 예 101 또는 예 104 중 어느 하나에 기재된 요소들을 포함하며, 명령 임계값은 대략 100이다.
예 108
이러한 예는 예 100, 예 101, 예 103 및 예 104 중 어느 하나에 기재된 요소들을 포함하며, 루프 UT는 20%이고, 루프 IRT는 20%이고 명령 임계값은 200이다.
예 109
이러한 예는 예 101 또는 예 104 중 어느 하나에 기재된 요소들을 포함하며, 명령 임계값은 200이다.
예 110
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 검출된 핫 함수 및 검출된 핫 루프 각각을 위해 하나 이상의 핫 명령들을 선택하는 단계를 포함하는 부가 동작들을 야기한다.
예 111
이러한 예는 예 110의 요소들을 포함하며, 각각의 핫 명령은 각각의 명령 프로세서 이용 파라미터(PUP)에 적어도 부분적으로 기초하여 그리고 각각의 명령의 명령 회수 파라미터(IRP)에 적어도 부분적으로 기초하여 선택된다.
예 112
이러한 예는 예 111의 요소들을 포함하며, 각각의 개별 명령 PUP 및 각각의 개별 명령 IRP는 검출된 핫 함수 또는 검출된 핫 루프에 대해 결정된다.
예 113
이러한 예는 예 110의 요소들을 포함하며, 하나 이상의 선택된 핫 명령들 각각은 검출된 핫 함수 또는 검출된 핫 루프 내의 다른 명령들에 비해 높은 명령 PUP 및/또는 높은 명령 IRP 중 적어도 하나를 갖는다.
예 114
이러한 예는 예 110의 요소들을 포함하며, 선택된 핫 명령들의 수는 3 또는 4이다.
예 115
이러한 예는 예 110의 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 하나 이상의 선택된 핫 명령들이 중지 명령을 포함하는지를 판단하는 단계를 포함하는 부가 동작들을 야기한다.
예 116
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 식별된 스핀 루프는 중지 명령 이용 임계값(UT) 이상의 연관된 중지 명령 프로세서 이용 파라미터(PUP) 및 중지 명령의 명령 회수 임계값(IRT) 이상의 연관된 중지 명령의 명령 회수 파라미터(IRP)를 갖는 중지 명령을 포함한다.
예 117
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 식별된 스핀 루프는 중지 명령 및 원자적 메모리 액세스 명령을 포함한다.
예 118
이러한 예는 예 116의 요소들을 포함하며, 중지 명령 UT는 1 퍼센트(%) 내지 100%의 범위이고 중지 명령 IRT는 1% 내지 100%의 범위이다.
예 119
이러한 예는 예 116의 요소들을 포함하며, 중지 명령 UT는 10 퍼센트(%)이고 중지 명령 IRT는 10%이다.
예 120
이러한 예는 예 92의 요소들을 포함하며, 검출된 핫 함수는 검출된 핫 루프와 관련된다.
예 121
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 수정된 프로세스 부분은 일드 시스템 호출 또는 지수적 백오프 동작 중 적어도 하나를 포함한다.
예 122
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 메모리에 메모리 부분을 할당하는 단계를 포함하는 부가 동작들을 야기하며, 메모리 부분은 수정된 프로세스 부분을 저장한다.
예 123
이러한 예는 예 122의 요소들을 포함하며, 메모리는 사용자 공간 및 커널 공간을 포함하고 할당된 메모리 부분은 사용자 공간에 포함된다.
예 124
이러한 예는 예 122의 요소들을 포함하며, 메모리는 사용자 보호 어드레스 공간을 포함하고 할당된 메모리 부분은 사용자 보호 어드레스 공간에 포함된다.
예 125
이러한 예는 예 94의 요소들을 포함하며, 프로세서 이용 데이터는 현재 프로세서 이용에 대응하고 명령 회수 데이터는 완료했고 커밋하는 명령들의 수에 대응한다.
예 126
이러한 예는 예 125의 요소들을 포함하며, 현재 프로세서 이용은 제1 시간 간격에서 프로세서 사이클들의 수에 대응하고 명령 회수 데이터는 제2 시간 간격에서 완료했고 커밋하는 명령들의 수에 대응한다.
예 127
이러한 예는 예 92의 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 하나 이상의 성능 프로파일(들)을 발생시키는 단계를 포함하는 부가 동작들을 야기한다.
예 128
이러한 예는 예 92의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 프로세서 이용 파라미터(PUP) 및 명령 회수 파라미터(IRP) 중 적어도 하나를 포함한다.
예 129
이러한 예는 예 128의 요소들을 포함하며, PUP는 프로세서 이용 데이터 값들의 비율에 대응하고 IRP는 명령 회수 데이터 값들의 비율에 대응한다.
예 130
이러한 예는 예 92의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 루프 프로세서 이용 파라미터(PUP) 및 루프 명령 회수 파라미터(IRP)를 포함한다.
예 131
이러한 예는 예 92의 요소들을 포함하며, 하나 이상의 성능 프로파일(들)은 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 파라미터(IRP)를 포함한다.
예 132
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 스핀 루프는 검출된 핫 함수 및 검출된 핫 루프 둘 다에 포함된다.
예 133
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때 사용자 공간 및 커널 공간을 포함하는 메모리의 사용자 공간에 수정된 프로세스 부분을 저장하는 단계를 포함하는 부가 동작들을 야기한다.
예 134
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 검출 이용 임계값(UT)은 70 퍼센트(%) 내지 100%의 범위이다.
예 135
이러한 예는 예 91 내지 예 95 중 어느 하나에 기재된 요소들을 포함하며, 검출 이용 임계값(UT)은 70 퍼센트이다.
예 136
이러한 예에 따르면, 하나 이상의 프로세서들에 의해 실행될 때 예 46 내지 예 90 중 어느 하나에 기재된 방법을 포함하는 동작들을 야기하는 명령들을 저장하는 컴퓨터 판독가능 저장 디바이스가 있다.
예 137
본 개시내용의 다른 예는 예 46 내지 예 90 중 어느 하나의 방법을 수행하도록 구성되는 적어도 하나의 디바이스를 포함하는 시스템이다.
예 138
본 개시내용의 다른 예는 예 46 내지 예 90 중 어느 하나의 방법을 수행하는 수단을 포함하는 디바이스이다.
본원에서 이용되었던 용어들 및 표현들은 설명의 설명의 조건으로 사용되고 제한의 조건으로 사용되지 않으며, 그러한 용어들 및 표현들의 사용에서, 도시되고 설명되는 특징들의 임의의 균등물들(또는 그것의 부분들)을 배제하는 의도가 없고, 다양한 수정들은 청구항들의 범위 내에서 가능하다는 점이 인식된다. 따라서, 청구항들은 모든 그러한 균등물들을 커버하도록 의도된다.
다양한 특징들, 양태들, 및 실시예들은 본원에 설명되었다. 특징들, 양태들, 및 실시예들은 본 기술분야의 통상의 기술자들에 의해 이해되는 바와 같이, 변형 및 수정이 가능할 뿐만 아니라, 서로의 조합이 가능하다. 따라서, 본 개시내용은 그러한 조합들, 변형들, 및 수정들을 포괄하는 것으로 간주되어야 한다.

Claims (24)

  1. 프로세스를 실행하는 프로세서 - 상기 프로세서는 적어도 하나의 코어를 포함함 -;
    상기 프로세스를 저장하는 메모리; 및
    로직
    을 포함하고, 상기 로직은:
    검출 이용 임계값(UT)보다 더 큰 플랫폼 프로세서 이용 파라미터(PUP)에 응답하여 성능 감시 데이터를 취득하고 - 상기 성능 감시 데이터는 프로세서 이용 데이터 및 명령 회수 데이터 중 적어도 하나를 포함함 -;
    적어도 부분적으로, 검출된 핫 함수(hot function) 및/또는 검출된 핫 루프 중 적어도 하나를 상기 취득된 성능 감시 데이터를 사용하여 식별함으로써 상기 프로세스와 연관된 스핀 루프를 식별하고;
    수정된 프로세스 부분을 생성하기 위해 이진 변환을 사용하여 상기 식별된 스핀 루프를 수정하고; 그리고
    상기 식별된 스핀 루프로부터 상기 수정된 프로세스 부분으로 재지향을 구현하는 장치.
  2. 제1항에 있어서, 상기 검출된 핫 함수 및/또는 상기 검출된 핫 루프 중 적어도 하나는 상기 성능 감시 데이터와 관련되는 하나 이상의 성능 프로파일(들)에 적어도 부분적으로 기초하여 식별되는 장치.
  3. 제1항에 있어서, 상기 검출된 핫 함수는 함수 이용 임계값(UT) 이상의 연관된 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 임계값(IRT) 이상의 함수 명령 회수 파라미터(IRP)를 갖고, 상기 검출된 핫 루프는 루프 UT 이상의 연관된 루프 PUP 및 루프 IRT 이상의 루프 IRP를 갖고, 상기 검출된 핫 루프 내의 명령들의 수는 명령 임계값 이하인 장치.
  4. 제3항에 있어서, 상기 함수 UT, 상기 함수 IRT, 상기 루프 UT 및 상기 루프 IRT는 20% 내지 100%의 범위이고 상기 명령 임계값은 명령어들의 최대 수에 관련되고, 상기 명령어들의 최대 수는 100의 자릿수에 대응하는 장치.
  5. 제1항에 있어서, 상기 로직은 상기 검출된 핫 함수 및 상기 검출된 핫 루프 각각을 위해 하나 이상의 핫 명령들을 더 선택하고 상기 하나 이상의 선택된 핫 명령들 각각은 상기 검출된 핫 함수 또는 상기 검출된 핫 루프 내의 다른 명령들에 비해 높은 명령 프로세서 이용 파라미터(PUP) 및/또는 높은 명령의 명령 회수 파라미터(IRP) 중 적어도 하나를 갖는 장치.
  6. 제1항에 있어서, 상기 식별된 스핀 루프 중 적어도 하나는 중지 명령 이용 임계값(UT) 이상의 연관된 중지 명령 프로세서 이용 파라미터(PUP) 및 중지 명령의 명령 회수 임계값(IRT) 이상의 연관된 중지 명령의 명령 회수 파라미터(IRP)를 갖는 중지 명령을 포함하며 그리고/또는 상기 식별된 스핀 루프는 중지 명령 및 원자적 메모리 액세스 명령을 포함하는 장치.
  7. 제1항에 있어서, 상기 수정된 프로세스 부분은 일드(yield) 시스템 호출 또는 지수적 백오프 동작(exponentional back-off operation) 중 적어도 하나를 포함하는 장치.
  8. 하나 이상의 코어(들)를 포함하는 프로세서에 의해, 프로세스를 실행하는 단계;
    검출 이용 임계값(UT)보다 더 큰 플랫폼 프로세서 이용 파라미터(PUP)에 응답하여 성능 감시 데이터를 모니터 스레드 로직에 의해 취득하는 단계 - 상기 성능 감시 데이터는 프로세서 이용 데이터 및 명령 회수 데이터 중 적어도 하나를 포함함 -;
    검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나에 적어도 부분적으로 기초하여 스핀 루프를 커널 성능 모니터 드라이버 로직에 의해 식별하는 단계;
    수정된 프로세스 부분을 생성하기 위해 이진 변환을 사용하여 상기 식별된 스핀 루프를 이진 변환기 로직에 의해 수정하는 단계; 및
    상기 식별된 스핀 루프로부터 상기 수정된 프로세스 부분으로 재지향을 상기 이진 변환기 로직에 의해 구현하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서, 상기 성능 감시 데이터와 관련되는 하나 이상의 성능 프로파일(들)에 적어도 부분적으로 기초하여 상기 검출된 핫 함수 및/또는 상기 검출된 핫 루프 중 적어도 하나를 상기 커널 성능 모니터 드라이버 로직에 의해 검출하는 단계를 더 포함하는 방법.
  10. 제8항에 있어서, 상기 검출된 핫 함수는 함수 이용 임계값(UT) 이상의 연관된 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 임계값(IRT) 이상의 함수 명령 회수 파라미터(IRP)를 갖고, 상기 검출된 핫 루프는 루프 UT 이상의 연관된 루프 PUP 및 루프 IRT 이상의 루프 IRP를 갖고 상기 검출된 핫 루프 내의 명령들의 수는 명령 임계값 이하인 방법.
  11. 제10항에 있어서, 상기 함수 UT, 상기 함수 IRT, 상기 루프 UT 및 상기 루프 IRT는 20% 내지 100%의 범위이고 상기 명령 임계값은 명령어들의 최대 수에 관련되고, 상기 명령어들의 최대 수는 100의 자릿수에 대응하는 방법.
  12. 제8항에 있어서, 상기 검출된 핫 함수 및 상기 검출된 핫 루프 각각을 위해 하나 이상의 핫 명령들을 커널 성능 모니터 드라이버 로직에 의해 선택하는 단계를 더 포함하며, 상기 하나 이상의 선택된 핫 명령들 각각은 상기 검출된 핫 함수 또는 상기 검출된 핫 루프 내의 다른 명령들에 비해 높은 명령 PUP 및/또는 높은 명령 IRP 중 적어도 하나를 갖는 방법.
  13. 제8항에 있어서, 상기 식별된 스핀 루프 중 적어도 하나는 중지 명령 이용 임계값(UT) 이상의 연관된 중지 명령 프로세서 이용 파라미터(PUP) 및 중지 명령의 명령 회수 임계값(IRT) 이상의 연관된 중지 명령의 명령 회수 파라미터(IRP)를 갖는 중지 명령을 포함하며 그리고/또는 상기 식별된 스핀 루프는 중지 명령 및 원자적 메모리 액세스 명령을 포함하는 방법.
  14. 제8항에 있어서, 상기 수정된 프로세스 부분은 일드 시스템 호출 또는 지수적 백오프 동작 중 적어도 하나를 포함하는 방법.
  15. 하나 이상의 프로세서들에 의해 실행될 때 하기의 동작들을 야기하는 명령들을 저장하는 컴퓨터 판독가능 저장 디바이스로서, 상기 동작들은,
    프로세스를 실행하는 단계;
    검출 이용 임계값(UT)보다 더 큰 플랫폼 프로세서 이용 파라미터(PUP)에 응답하여 성능 감시 데이터를 취득하는 단계 - 상기 성능 감시 데이터는 프로세서 이용 데이터 및 명령 회수 데이터 중 적어도 하나를 포함함 -;
    적어도 부분적으로, 검출된 핫 함수 및/또는 검출된 핫 루프 중 적어도 하나를 상기 취득된 성능 감시 데이터를 사용하여 식별함으로써 상기 프로세스와 연관된 스핀 루프를 식별하는 단계;
    수정된 프로세스 부분을 생성하기 위해 이진 변환을 사용하여 상기 식별된 스핀 루프를 수정하는 단계; 및
    상기 식별된 스핀 루프로부터 상기 수정된 프로세스 부분으로 재지향을 구현하는 단계
    를 포함하는 컴퓨터 판독가능 저장 디바이스.
  16. 제15항에 있어서, 상기 프로세스와 연관된 스핀 루프를 식별하는 단계는,
    상기 성능 감시 데이터와 관련되는 하나 이상의 성능 프로파일(들)에 적어도 부분적으로 기초하여 상기 검출된 핫 함수 및/또는 상기 검출된 핫 루프 중 적어도 하나를 검출하는 단계를 더 포함하는 컴퓨터 판독가능 저장 디바이스.
  17. 제15항에 있어서, 상기 검출된 핫 함수는 함수 이용 임계값(UT) 이상의 연관된 함수 프로세서 이용 파라미터(PUP) 및 함수 명령 회수 임계값(IRT) 이상의 함수 명령 회수 파라미터(IRP)를 갖고, 상기 검출된 핫 루프는 루프 UT 이상의 연관된 루프 PUP 및 루프 IRT 이상의 루프 IRP를 갖고 상기 검출된 핫 루프 내의 명령들의 수는 명령 임계값 이하인 컴퓨터 판독가능 저장 디바이스.
  18. 제17항에 있어서, 상기 함수 UT, 상기 함수 IRT, 상기 루프 UT 및 상기 루프 IRT는 20% 내지 100%의 범위이고 상기 명령 임계값은 명령어들의 최대 수에 관련되고, 상기 명령어들의 최대 수는 100의 자릿수에 대응하는 컴퓨터 판독가능 저장 디바이스.
  19. 제15항에 있어서, 상기 명령들은 하나 이상의 프로세서들에 의해 실행될 때 하기의 부가 동작들을 야기하며, 이 부가 동작들은,
    상기 검출된 핫 함수 및 상기 검출된 핫 루프 각각을 위해 하나 이상의 핫 명령들을 선택하는 단계를 포함하고, 상기 하나 이상의 선택된 핫 명령들 각각은 상기 검출된 핫 함수 또는 상기 검출된 핫 루프 내의 다른 명령들에 비해 높은 명령 PUP 및/또는 높은 명령 IRP 중 적어도 하나를 갖는 컴퓨터 판독가능 저장 디바이스.
  20. 제15항에 있어서, 상기 식별된 스핀 루프 중 적어도 하나는 중지 명령 이용 임계값(UT) 이상의 연관된 중지 명령 프로세서 이용 파라미터(PUP) 및 중지 명령의 명령 회수 임계값(IRT) 이상의 연관된 중지 명령의 명령 회수 파라미터(IRP)를 갖는 중지 명령을 포함하며 그리고/또는 상기 식별된 스핀 루프는 중지 명령 및 원자적 메모리 액세스 명령을 포함하는 컴퓨터 판독가능 저장 디바이스.
  21. 제15항에 있어서, 상기 수정된 프로세스 부분은 일드 시스템 호출 또는 지수적 백오프 동작 중 적어도 하나를 포함하는 컴퓨터 판독가능 저장 디바이스.
  22. 삭제
  23. 삭제
  24. 삭제
KR1020177012734A 2014-12-10 2015-11-13 컴퓨팅 디바이스에서의 동기화 KR102443089B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/565,512 2014-12-10
US14/565,512 US9411363B2 (en) 2014-12-10 2014-12-10 Synchronization in a computing device
PCT/US2015/060610 WO2016094030A1 (en) 2014-12-10 2015-11-13 Synchronization in a computing device

Publications (2)

Publication Number Publication Date
KR20170093121A KR20170093121A (ko) 2017-08-14
KR102443089B1 true KR102443089B1 (ko) 2022-09-14

Family

ID=56107930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177012734A KR102443089B1 (ko) 2014-12-10 2015-11-13 컴퓨팅 디바이스에서의 동기화

Country Status (5)

Country Link
US (1) US9411363B2 (ko)
EP (1) EP3230878A4 (ko)
KR (1) KR102443089B1 (ko)
CN (1) CN107003954B (ko)
WO (1) WO2016094030A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10642644B2 (en) 2016-06-27 2020-05-05 Intel Corporation Memory management method and apparatus
US10255717B2 (en) * 2016-11-01 2019-04-09 Nvidia Corporation Geometry shadow maps with per-fragment atomics
US10417057B2 (en) * 2017-01-30 2019-09-17 Oracle International Corporation Mutex profiling based on waiting analytics

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080052498A1 (en) * 2006-08-28 2008-02-28 International Business Machines Corporation Runtime code modification in a multi-threaded environment
US20110320766A1 (en) 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
US20140245306A1 (en) * 2012-05-14 2014-08-28 Qualcomm Incorporated Adaptive Observation of Behavioral Features On A Heterogeneous Platform

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115715A (en) * 1998-06-29 2000-09-05 Sun Microsystems, Inc. Transaction management in a configuration database
US6529921B1 (en) * 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
US6873995B2 (en) * 2002-04-23 2005-03-29 International Business Machines Corporation Method, system, and program product for transaction management in a distributed content management application
US7765543B1 (en) 2003-12-17 2010-07-27 Vmware, Inc. Selective descheduling of idling guests running on a host computer system
US20050240806A1 (en) * 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
JP4287799B2 (ja) 2004-07-29 2009-07-01 富士通株式会社 プロセッサシステムおよびスレッド切り替え制御方法
US7895596B2 (en) 2005-09-13 2011-02-22 Hewlett-Packard Development Company, L.P. Processor assignment in multi-processor systems
CN101441510A (zh) * 2008-11-27 2009-05-27 深圳华为通信技术有限公司 一种实现多处理器处理信息的方法和终端
US20110292834A1 (en) * 2010-05-27 2011-12-01 International Business Machines Corporation Maintaining Time Series Models for Information Technology System Parameters

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080052498A1 (en) * 2006-08-28 2008-02-28 International Business Machines Corporation Runtime code modification in a multi-threaded environment
US20110320766A1 (en) 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
US20140245306A1 (en) * 2012-05-14 2014-08-28 Qualcomm Incorporated Adaptive Observation of Behavioral Features On A Heterogeneous Platform

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Wikipedia: Spinlock. 2014.11.12.

Also Published As

Publication number Publication date
US20160170438A1 (en) 2016-06-16
WO2016094030A1 (en) 2016-06-16
EP3230878A1 (en) 2017-10-18
US9411363B2 (en) 2016-08-09
CN107003954B (zh) 2020-09-08
CN107003954A (zh) 2017-08-01
EP3230878A4 (en) 2018-07-25
KR20170093121A (ko) 2017-08-14

Similar Documents

Publication Publication Date Title
US9465734B1 (en) Coalition based memory management
US9135080B2 (en) Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions
US8904240B2 (en) Monitoring and resolving deadlocks, contention, runaway CPU and other virtual machine production issues
US10977092B2 (en) Method for efficient task scheduling in the presence of conflicts
TWI667588B (zh) 用以偵測未經授權之記憶體存取的計算裝置、方法及機器可讀儲存媒體(二)
JP2016507849A5 (ko)
US10095305B2 (en) Wake lock aware system wide job scheduling for energy efficiency on mobile devices
JP6367490B2 (ja) プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護
US9760411B2 (en) Switching a locking mode of an object in a multi-thread program
US10452443B2 (en) Dynamic tuning of multiprocessor/multicore computing systems
US20160283272A1 (en) Shared resource access control method and apparatus
KR102443089B1 (ko) 컴퓨팅 디바이스에서의 동기화
CN109840151B (zh) 一种用于多核处理器的负载均衡方法和装置
US20180285559A1 (en) Stack pivot detection systems and methods
CN104205043B (zh) 对计算机上的操作***隐藏逻辑处理器
JP2017117451A (ja) バイナリ分析を用いたネイティブコード起動技術
US20170038824A1 (en) Method and apparatus for reducing consumption of standby power through detection of idle state of system
CN110795231B (zh) 一种虚拟cpu的处理方法及装置
US10496387B2 (en) Crowdsourced API resource consumption information for integrated development environments

Legal Events

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