KR20230088211A - 전자 장치의 성능 모니터링 시스템 및 성능 모니터링 방법 - Google Patents

전자 장치의 성능 모니터링 시스템 및 성능 모니터링 방법 Download PDF

Info

Publication number
KR20230088211A
KR20230088211A KR1020220030048A KR20220030048A KR20230088211A KR 20230088211 A KR20230088211 A KR 20230088211A KR 1020220030048 A KR1020220030048 A KR 1020220030048A KR 20220030048 A KR20220030048 A KR 20220030048A KR 20230088211 A KR20230088211 A KR 20230088211A
Authority
KR
South Korea
Prior art keywords
performance
slices
performance data
bus
packet
Prior art date
Application number
KR1020220030048A
Other languages
English (en)
Inventor
김선욱
이희성
양명훈
조만휘
김우일
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US17/988,989 priority Critical patent/US20230184830A1/en
Priority to CN202211567468.XA priority patent/CN116257413A/zh
Publication of KR20230088211A publication Critical patent/KR20230088211A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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
    • 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
    • G06F11/3419Recording 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 by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

성능 모니터링 시스템은, 전자 장치에 분산하여 배치되고, 상기 전자 장치의 성능 데이터들을 생성하여 상기 성능 데이터들을 포함하는 복수의 모니터 출력 신호들을 생성하는 복수의 성능 모니터링 유닛들, 상기 복수의 모니터 출력 신호들을 수신하고 상기 복수의 모니터 출력 신호들에 포함되는 상기 성능 데이터들을 인터리빙하여 하나의 버스 출력 신호를 생성하는 모니터링 버스 및 상기 버스 출력 신호를 수신하고 상기 버스 출력 신호에 포함되는 상기 성능 데이터들을 메모리 장치에 저장하는 임베디드 트레이스 라우터를 포함한다.

Description

전자 장치의 성능 모니터링 시스템 및 성능 모니터링 방법{System and method of monitoring performance of electronic device}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 전자 장치의 성능을 모니터링하기 위한 성능 모니터링 시스템 및 성능 모니터링 방법에 관한 것이다.
갈수록 전자 장치에 포함되는 시스템 온 칩(SOC, system on chip) 또는 애플리케이션 프로세서(AP, application processor)는 더욱 복잡한 형태로 진화하고 있고 클록 주파수(clock frequency) 역시 점점 더 증가하고 있다. 또한 전자 장치 또는 시스템이 처리할 수 있는 능력 역시 점점 향상되고 있다. 이런 추세에 맞춰 전자 장치의 성능(performance)을 분석하는 것은 SOC 등의 설계 경쟁에서 중요한 요인이 되고 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 전자 장치의 성능 데이터를 효율적으로 획득할 수 있는 성능 모니터링 시스템을 제공하는 것이다.
또한 본 발명의 일 목적은, 전자 장치의 성능 데이터를 효율적으로 획득할 수 있는 성능 모니터링 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 성능 모니터링 시스템은, 복수의 성능 모니터링 유닛들, 모니터링 버스 및 임베디드 트레이스 라우터를 포함한다.
상기 복수의 성능 모니터링 유닛들은 전자 장치에 분산하여 배치되고, 상기 전자 장치의 성능 데이터들을 생성하여 상기 성능 데이터들을 포함하는 복수의 모니터 출력 신호들을 생성한다.
상기 모니터링 버스는 상기 복수의 모니터 출력 신호들을 수신하고 상기 복수의 모니터 출력 신호들에 포함되는 상기 성능 데이터들을 인터리빙하여 하나의 버스 출력 신호를 생성한다.
상기 임베디드 트레이스 라우터는 상기 버스 출력 신호를 수신하고 상기 버스 출력 신호에 포함되는 상기 성능 데이터들을 메모리 장치에 저장한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 성능 모니터링 시스템은, 시스템 인터커넥터 및 상기 시스템 인터커넥터에 연결되는 복수의 기능 블록들을 포함하는 시스템 온 칩(SOC, system on chip)의 성능을 모니터링하기 위하여 상기 시스템 온 칩 내부에 집적된다.
상기 성능 모니터링 시스템은, 복수의 성능 모니터링 유닛들, 모니터링 버스 및 임베디드 트레이스 라우터를 포함한다.
상기 복수의 성능 모니터링 유닛들은 상기 시스템 온 칩에 분산하여 배치되고, 상기 시스템 온 칩의 성능 데이터들을 생성하여 상기 성능 데이터들을 포함하는 복수의 모니터 출력 신호들을 생성한다.
상기 모니터링 버스는 상기 복수의 모니터 출력 신호들을 수신하고 상기 복수의 모니터 출력 신호들에 포함되는 상기 성능 데이터들을 인터리빙하여 하나의 버스 출력 신호를 생성한다.
상기 임베디드 트레이스 라우터는 상기 버스 출력 신호를 수신하고 상기 버스 출력 신호에 포함되는 상기 성능 데이터들을 메모리 장치에 저장한다.
상기 복수의 성능 모니터링 유닛들의 각각은, 하나의 단위 시간 동안 수집된 성능 데이터를 하나의 패킷으로 패킷화하고 복수의 단위 시간들에 각각 상응하는 복수의 패킷들을 상기 단위 시간마다 하나씩 순차적으로 출력하고, 상기 복수의 패킷들의 각각을 복수의 슬라이스들로 분할하고 상기 복수의 슬라이스들을 순차적으로 출력한다.
상기 모니터링 버스는, 상기 복수의 성능 모니터링 유닛들로부터 출력되는 패킷들을 슬라이스 단위로 순차적으로 인터리빙하여 상기 버스 출력 신호를 생성하도록 복수의 스테이지들을 형성하는 복수의 직렬 인터커넥트 유닛들을 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 성능 모니터링 방법은, 전자 장치에 분산하여 배치되는 복수의 성능 모니터링 유닛들을 이용하여, 상기 전자 장치의 성능 데이터들을 생성하여 상기 성능 데이터들을 포함하는 복수의 모니터 출력 신호들을 생성하는 단계, 상기 복수의 모니터 출력 신호들을 수신하는 모니터링 버스를 이용하여, 상기 복수의 모니터 출력 신호들에 포함되는 상기 성능 데이터들을 인터리빙하여 하나의 버스 출력 신호를 생성하는 단계 및 상기 버스 출력 신호를 수신하는 임베디드 트레이스 라우터에 의해, 상기 버스 출력 신호에 포함되는 상기 성능 데이터들을 메모리 장치에 저장하는 단계를 포함한다.
본 발명의 실시예들에 따른 성능 모니터링 시스템 및 성능 모니터링 방법은, 복수의 성능 모니터링 유닛들이 각각 독립적으로 성능 데이터들을 생성하여 모니터링 버스로 전달하고 모니터링 버스를 이용하여 인터리빙 방식으로 성능 데이터들을 하나의 임베디드 트레이스 라우터로 집약하여 제공함으로써 수집되는 성능 데이터의 양을 증가할 수 있다. 성능 데이터의 양을 증가시킴으로써 정밀한(fine-grained) 성능 분석을 수행할 수 있다.
또한, 본 발명의 실시예들에 따른 성능 모니터링 시스템 및 성능 모니터링 방법은, 성능 데이터를 시간 단위로 패킷화하고 각 패킷을 복수의 슬라이스들로 분할하여 슬라이스 단위의 인터리빙을 수행함으로써 성능 데이터의 전송 속도를 증가시키고 성능 데이터의 양을 더욱 증가시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 성능 모니터링 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 성능 모니터링 방법을 나타내는 순서도이다.
도 3은 본 발명의 실시예들에 따른 성능 모니터링 시스템을 포함하는 전자 장치를 나타내는 블록도이다.
도 4는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 포함되는 성능 모니터링 유닛의 일 실시예를 나타내는 블록도이다.
도 5a 및 5b는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 의한 성능 데이터의 생성 주기를 설명하기 위한 도면들이다.
도 6a 및 6b는 본 발명의 실시예들에 따른 성능 모니터링 시스템의 동작을 위한 패킷의 일 실시예를 나타내는 도면들이다.
도 7a 및 7b는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 포함되는 직렬 인터커넥트 유닛의 일 실시예를 나타내는 도면들이다.
도 8a, 8b 및 8c는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 의해 수행되는 트랜잭션의 일 실시예를 나타내는 도면들이다.
도 9a, 9b 및 9c는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 의한 성능 데이터 저장의 실시예들을 나타내는 도면들이다.
도 10은 본 발명의 실시예들에 따른 성능 모니터링 시스템을 포함하는 시스템 온 칩을 전자 장치에 응용한 예를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 성능 모니터링 시스템을 나타내는 블록도이고, 도 2는 본 발명의 실시예들에 따른 성능 모니터링 방법을 나타내는 순서도이다.
도 1을 참조하면, 성능 모니터링 시스템(100)은 복수의 성능 모니터링 유닛들(PMU1~PMU8), 모니터링 버스(MBUS) 및 임베디드 트레이스 라우터(ETR)를 포함할 수 있다. 실시예들에 따라서, 성능 모니터링 시스템(100)은 인텍스 라이터(IDXW) 및/또는 메모리 장치(MEM)(200)를 더 포함할 수 있다. 메모리 장치(200)는 성능 모니터링 시스템(100)에 전속되는 메모리 장치로서 성능 모니터링 시스템(100)에 포함될 수도 있고, 성능 모니터링 시스템이 집적되는 전자 장치에 포함되는 메모리 장치로서 성능 모니터링 시스템(100)의 외부에 배치될 수도 있다.
도 3을 참조하여 후술하는 바와 같이, 성능 모니터링 시스템(100)은 전자 장치의 성능을 모니터링하기 위하여 상기 전자 장치에 집적될 수 있다. 복수의 성능 모니터링 유닛들(PMU1~PMU8)은 상기 전자 장치에 분산하여 배치될 수 있다.
도 1에는 도시의 편의상 8개의 성능 모니터링 유닛들(PMU1~PMU8)이 도시되어 있으나, 성능 모니터링 시스템(100)에 포함되는 성능 모니터링 유닛들의 개수는 다양하게 결정될 수 있다.
도 1 및 2를 참조하면, 전자 장치에 분산하여 배치되는 복수의 성능 모니터링 유닛들(PMU1~PMU8)을 이용하여, 상기 전자 장치의 성능 데이터들을 생성하여 상기 성능 데이터들을 포함하는 복수의 모니터 출력 신호들(PDT1~PDT8)을 생성할 수 있다(S100).
복수의 모니터 출력 신호들(PDT1~PDT8)을 수신하는 모니터링 버스(MBUS)를 이용하여, 복수의 모니터 출력 신호들(PDT1~PDT8)에 포함되는 상기 성능 데이터들을 인터리빙하여 하나의 버스 출력 신호(SDT4)를 생성할 수 있다(S200).
버스 출력 신호(SDT4)를 수신하는 임베디드 트레이스 라우터(ETR)에 의해, 버스 출력 신호(SDT4)에 포함되는 상기 성능 데이터들을 메모리 장치(200)에 저장할 수 있다(S300).
일 실시예에서, 도 4 내지 6b를 참조하여 후술하는 바와 같이, 복수의 성능 모니터링 유닛들(PMU1~PMU8)의 각각은, 하나의 단위 시간 동안 수집된 성능 데이터를 하나의 패킷으로 패킷화하고 복수의 단위 시간들에 각각 상응하는 복수의 패킷들을 상기 단위 시간마다 하나씩 순차적으로 출력할 수 있다.
또한, 복수의 성능 모니터링 유닛들(PMU1~PMU8)의 각각은, 상기 복수의 패킷들의 각각을 복수의 슬라이스들로 분할하고 상기 복수의 슬라이스들을 순차적으로 출력할 수 있다. 다시 말해, 복수의 모니터 출력 신호들(PDT1~PDT8)의 각각은 이와 같이 출력되는 슬라이스들을 순차적으로 포함할 수 있다.
이 경우 모니터링 버스(MBUS)는, 복수의 성능 모니터링 유닛들(PMU1~PMU8)로부터 출력되는 패킷들을 슬라이스 단위로 인터리빙하여 버스 출력 신호(SDT4)를 생성할 수 있다.
임베디드 트레이스 라우터(ETR)는, 버스 출력 신호(SDT4)를 통하여 슬라이스들을 순차적으로 수신하고 상기 슬라이스들을 수신하는 순서에 따라서 상기 슬라이스들을 하나씩 순차적으로 메모리 장치(200)에 저장할 수 있다.
일 실시예에서, 성능 모니터링 시스템(100)은 밸리드 신호 및 레디 신호를 이용하는 핸드쉐이크 방식에 따라서 성능 데이터들을 복수의 성능 모니터링 유닛들(PMU1~PMU8)로부터 모니터링 버스(MBUS)를 거쳐 임베디드 트레이스 라우터(ETR)로 전달할 수 있다.
다시 말해, 복수의 성능 모니터링 유닛들(PMU1~PMU8)은, 밸리드 신호 및 레디 신호를 이용하는 핸드쉐이크 방식에 따라서 복수의 모니터 출력 신호들(PDT1~PDT8)에 포함되는 성능 데이터들을 모니터링 버스(MBUS)로 전송하고, 모니터링 버스(MBUS)는 상기 핸드쉐이크 방식에 따라서 버스 출력 신호(SDT4)에 포함되는 성능 데이터들을 임베디드 트레이스 라우터(ETR)로 전송할 수 있다. 핸드쉐이크 방식에 따른 성능 데이터들의 전송은 도 7a 내지 8c를 참조하여 후술하기로 한다.
일 실시예에서, 도 1에 도시된 바와 같이, 모니터링 버스(MBUS)는 성능 데이터들을 순차적으로 인터리빙하여 임베디드 트레이스 라우터(ETR)로 전달하는 복수의 스테이지들(STG1~STG3)을 포함할 수 있다. 도 1에는 도시의 편의상 모니터링 버스(MBUS)가 3개의 스테이지들(STG1~STG3)을 포함하는 예를 도시하고 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니다. 실시예들에 따라서 모니터링 버스(MBUS)는 다양한 개수의 스테이지들을 포함할 수 있다.
복수의 스테이지들(STG1~STG3)의 각각은 하나 이상의 직렬 인터커넥트 유닛들을 포함할 수 있다. 예를 들어, 도 1의 실시예에서, 제1 스테이지(STG1)는 2개의 직렬 인터커넥트 유닛들, 즉 제1 직렬 인터커넥트 유닛(SIU1) 및 제2 직렬 인터커넥트 유닛(SIU2)을 포함하고, 제2 스테이지(STG2)는 1개의 직렬 인터커넥트 유닛, 즉 제3 직렬 인터커넥트 유닛(SIU3)을 포함하고, 제3 스테이지(STG3)은 1개의 직렬 인터커넥트 유닛, 즉 제4 직렬 인터커넥트 유닛(SIU4)을 포함할 수 있다. 각 스테이지에 포함되는 직렬 인터커넥트 유닛들의 개수는 다양하게 결정될 수 있다.
직렬 인터커넥트 유닛들(SIU1~SIU4)의 각각은 복수의 입력 신호들을 수신하고 하나의 출력 신호를 출력할 수 있다.
예를 들어, 도 1의 실시예에서, 제1 직렬 인터커넥트 유닛(SIU1)은 4개의 입력 신호들, 즉 제1 내지 제4 모니터 출력 신호들(PDT1~PDT4)을 수신하고 제1 인터커넥트 신호(SDT1)를 출력할 수 있다.
제2 직렬 인터커넥트 유닛(SIU2)은 2개의 입력 신호들, 즉 제5 및 제6 모니터 출력 신호들(PDT5, PDT6)을 수신하고 제2 인터커넥트 신호(SDT2)를 출력할 수 있다.
제3 직렬 인터커넥트 유닛(SIU3)은 4개의 입력 신호들, 즉 제1 및 제2 인터커넥트 신호들(SDT1, SDT2)과 제7 및 제8 모니터 출력 신호들(PDT7, PDT8)을 수신하고 제3 인터커넥트 신호(SDT3)를 출력할 수 있다.
제4 직렬 인터커넥트 유닛(SIU4)은 2개의 입력 신호들, 즉 제3 인터커넥트 신호(SDT3) 및 인덱스 라이터(IDXW)의 출력 신호(DSLC)를 수신하고 제4 인터커넥트 신호(SDT4)를 출력할 수 있다.
마지막의 제3 스테이지(STG3)에 포함되는 제4 직렬 인터커넥트 유닛(SIU4)에서 출력되는 제4 인터커넥트 신호(SDT4)는 전술한 버스 출력 신호로서 임베디드 트레이스 라우터(ETR)로 제공된다.
인덱스 라이터(IDXW)는 단위 시간마다 순차적으로 증가하는 패킷 식별 번호를 포함하는 복수의 인덱스 슬라이스들(DSLC)을 생성하고, 복수의 인덱스 슬라이스들(DSLC)을 상기 단위 시간마다 하나씩 순차적으로 제4 직렬 인터커넥트 유닛(SIU4)을 통하여 임베디드 트레이스 라우터(ETR)로 전송할 수 있다.
이 경우, 모니터링 버스(MBUS)의 제4 직렬 인터커넥트 유닛(SIU4)은, 복수의 성능 모니터링 유닛들(PMU)로부터 출력되는 패킷들의 슬라이스들 및 복수의 인덱스 슬라이스들(DSLC)을 슬라이스 단위로 인터리빙하여 버스 출력 신호(SDT4)를 생성할 수 있다. 복수의 인덱스 슬라이스들(DSLC)은 도 9c를 참조하여 후술한다.
이와 같이, 전자 장치에 분산하여 배치되는 복수의 성능 모니터링 유닛들(PMU1~PMU8)을 이용하여 전자 장치의 성능을 모니터링할 수 있다. 복수의 성능 모니터링 유닛들(PMU1~PMU8)은 전자 장치의 전반에 설치되어 있고, 설치된 곳의 성능을 측정하여 DRAM 등의 메모리 장치에 저장한다. 모든 측정이 완료되면 사용자는 저장소, 즉 메모리 장치(200)의 성능 데이터를 확인하여 시스템의 성능 정보를 분석할 수 있다.
한편, 주기적으로 성능 정보를 수집해야 시간에 따른 성능 변화를 파악할 수 있다. 따라서 단위 시간으로 여러 번 측정하는 것이 중요한데, 이는 복수의 성능 모니터링 유닛들(PMU1~PMU8)로부터 임베디드 트레이스 라우터(ETR)로 성능 데이터의 전송을 반복해야 한다는 것을 말한다. 일반적으로 내부 CPU 등을 활용하여 복수의 성능 모니터링 유닛들(PMU1~PMU8)로부터 성능 데이터를 읽어서 저장소에 쓰는 작업을 반복한다. 시스템에 포함되는 성능 모니터링 유닛들의 개수가 증가할수록 제한된 대역폭(bandwidth) 내에서 성능 데이터의 저장이 완료되어야 하므로 처리속도가 제한된다. 이 제한된 처리속도 때문에 좀 더 짧은 시간 단위의 충분히 정밀한(fine-grained) 성능 데이터를 수집할 수 없다.
본 발명의 실시예들에 따른 성능 모니터링 시스템(100) 및 성능 모니터링 방법은, 복수의 성능 모니터링 유닛들이 각각 독립적으로 성능 데이터들을 생성하여 모니터링 버스로 전달하고 모니터링 버스를 이용하여 인터리빙 방식으로 성능 데이터들을 하나의 임베디드 트레이스 라우터로 집약하여 제공함으로써 수집되는 성능 데이터의 양을 증가할 수 있다. 성능 데이터의 양을 증가시킴으로써 정밀한(fine-grained) 성능 분석을 수행할 수 있다.
또한, 본 발명의 실시예들에 따른 성능 모니터링 시스템(100) 및 성능 모니터링 방법은, 성능 데이터를 시간 단위로 패킷화하고 각 패킷을 복수의 슬라이스들로 분할하여 슬라이스 단위의 인터리빙을 수행함으로써 성능 데이터의 전송 속도를 증가시키고 성능 데이터의 양을 더욱 증가시킬 수 있다.
도 3은 본 발명의 실시예들에 따른 성능 모니터링 시스템을 포함하는 전자 장치를 나타내는 블록도이다.
도 3을 참조하면, 전자 장치(1000)는 시스템 온 칩(SOC)(1100)과 워킹 메모리(1130), 디스플레이 장치(DIS)(1152), 터치 패널(1154), 저장 장치(1170), 전력 관리 집적 회로(PMIC)(1200), 등을 포함할 수 있다.
SOC(1100)는 프로세서(CPU)(1110), 디램 컨트롤러(1120), 성능 제어기(PFMC)(1140), 사용자 인터페이스(UI) 컨트롤러(1150), 스토리지 인터페이스(1160), 가속기(1180), 파워 관리 유닛(PMU)(1144), 클록 관리 유닛(CMU)(1146), 복수의 성능 모니터링 유닛들(PMU), 모니터링 버스(MBU), 임베디드 트레이스 라우터(ETR)(1115) 등을 포함할 수 있다. 복수의 성능 모니터링 유닛들(PMU), 모니터링 버스(MBU) 및 임베디드 트레이스 라우터(1115)는 도 1을 참조하여 설명한 바와 같은 성능 모니터링 시스템(100)에 해당한다.
전자 장치(1000)의 구성 요소들은 도 3에 도시된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 전자 장치(1000)는 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록, 엔피유(NPU, neural processing unit) 등을 더 포함할 수 있다.
프로세서(1110)는 전자 장치(1000)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 멀티-코어 프로세서(1110)는 워킹 메모리(1130)에 로드되는 운영 체제(OS)를 실행할 수 있다. 또한 프로세서(1110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 수 있다. 프로세서(1110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동 가능한 프로세서 코어(이하, 코어)들을 갖는 컴퓨팅 컴포넌트(Computing component)이다. 코어들 각각은 프로그램 명령들(Program Instructions)을 독립적으로 읽고 실행할 수 있다.
프로세서(1110)의 프로세서 코어들은 독립된 구동 클록 및/또는 독립된 구동 전압에 의해서 동작하는 복수의 클러스터들로 그룹화될 수 있다. 즉 동일한 클러스터에 속하는 프로세서 코어들은 동일한 클록 신호에 기초하여 동작하는 클록 도메인(clock domain) 및/또는 동일한 구동 전압에 기초하여 동작하는 파워 도메인(Power Domain)에 포함될 수 있다. 멀티-코어들 각각에 공급되는 구동 전압과 구동 클록 신호를 코어 단위로 차단 또는 연결할 수 있다.
운영 체제(OS)의 커널(Kernel)에서는 이러한 방식의 프로세서(1110) 제어를 위해서 런 큐(Run Queue)에 있는 태스크들의 수와 프로세서(1110)의 구동 전압 및 구동 클록을 특정 시간 간격으로 모니터링할 수 있다. 또한, 운영체제(OS)의 커널은 모니터링된 정보를 참조하여 프로세서(1110)의 핫플러그-인(Hotplug-in) 또는 핫플러그-아웃(Hotplug-out)을 제어할 수 있다.
디램 컨트롤러(1120)는 워킹 메모리(130)와 SOC(1100) 사이에서 인터페이싱을 제공한다. 디램 컨트롤러(1120)는 프로세서(1110)나 다른 기능 블록(Intellectual Property: IP)의 요청에 따라 워킹 메모리(1130)를 액세스할 수 있다.
워킹 메모리(1130)에는 부팅시에 운영 체제(OS)나 기본 응용 프로그램들(Application Program)이 로드될 수 있다. 예를 들면, 전자 장치(1000)의 부팅시에 저장 장치(1170)에 저장된 OS 이미지가 부팅 시퀀스에 의거하여 워킹 메모리(1130)로 로드된다. 운영 체제(OS)에 의해서 전자 장치(1000)의 제반 입출력 동작들이 지원될 수 있다. 워킹 메모리(1130)는 SRAM(Static Random Access Memory)이나 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리이거나, PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등의 비휘발성 메모리일 수 있다.
성능 제어기(1140)는 운영 체제(OS)의 커널(Kernel)로부터 제공되는 제어 요청에 따라 SOC(1100)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 제어기(1140)는 SOC(1100)의 성능을 높이기 위해서 DVFS의 전력 레벨을 조정할 수 있다. 또는, 성능 제어기(1140)는 커널(Kernel)의 요청에 따라 프로세서(1110)의 프로세서 코어들의 동작 주파수를 각각 제어하기 위해 주파수 선택 신호들을 생성할 수 있다. 이때, 성능 제어기(1140)는 내부에 구동 전압 및 구동 클록의 동작 주파수를 설정하는 성능 테이블(1142)을 포함할 수 있다. 성능 제어기(1140)는 파워 관리 집적 회로(1200)에 연결된 파워 관리 유닛(PMU)(1144) 및 클록 관리 유닛(CMU)(1146)이 각 파워 도메인에 지정된 구동 전압 및 구동 클록을 제공하도록 제어할 수 있다.
사용자 인터페이스 컨트롤러(1150)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 사용자 인터페이스 컨트롤러(1150)는 프로세서(1110)의 제어에 따라 디스플레이 장치(1152)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또는, 사용자 인터페이스 컨트롤러(1150)는 사용자가 요청한 데이터를 표시하도록 디스플레이 장치(1152)를 제어할 수 있다. 사용자 인터페이스 컨트롤러(1150)는 터치 패널(1154)과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.
스토리지 인터페이스(1160)는 프로세서(1110)의 요청에 따라 저장 장치(1170)를 액세스한다. 즉, 스토리지 인터페이스(1160)는 SOC(1100)과 저장 장치(1170) 사이의 인터페이스를 제공한다. 프로세서(1110)에 의해서 처리된 데이터가 스토리지 인터페이스(1160)를 통해 저장 장치(1170)에 저장될 수 있고, 저장 장치(1170)에 저장된 데이터는 스토리지 인터페이스(1160)를 통해 프로세서(1110)에 제공될 수 있다.
저장 장치(1170)는 전자 장치(1000)의 저장 매체(Storage Medium)로서 제공된다. 저장 장치(1170)는 응용 프로그램들(Application Program), 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 저장 장치(1170)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 저장 장치(1170)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 저장 장치(1710)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다.
가속기(1180)는 멀티미디어 또는 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 기능 블록(IP)으로 제공될 수 있다. 예를 들면, 가속기(1180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다.
시스템 인터커넥터(1190)는 SOC(1100)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(1190)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 워킹 메모리(130)이나 저장 장치(170)로의 메모리 접근 경로를 제공될 것이다.
어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(1190)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
도 3에 도시된 바와 같이, 복수의 성능 모니터링 유닛들(PMU), 모니터링 버스(MBU) 및 임베디드 트레이스 라우터(1115)를 포함하는 성능 모니터링 시스템은 시스템 온 칩(1100)의 성능을 모니터링하기 위해 시스템 온 칩(1100)의 내부에 집적될 수 있다. 복수의 성능 모니터링 유닛들(PMU)은 다양한 성능 데이터들을 수집하기 위하여 시스템 온 칩(1100) 내부에 분산하여 배치될 수 있다.
프로세서(CPU)(1110), 태스크 모니터 회로(TMON)(1115), 디램 컨트롤러(1120), 성능 제어기(PFMC)(1140), 사용자 인터페이스(UI) 컨트롤러(1150), 스토리지 인터페이스(1160), 가속기(1180), 파워 관리 유닛(PMU)(1144), 클록 관리 유닛(CMU)(1146) 등과 같은 복수의 기능 블록들은 시스템 인터커넥터(1190)에 연결된다.
반면에 복수의 성능 모니터링 유닛들(PMU)은 모니터링 버스(MBUS)에 연결된다. 모니터링 버스(MBUS)는 시스템 인터커넥터(1190)와 독립적으로 동작하고 시스템 인터커넥터(1190)와 물리적으로 구별되는 별개의 구성요소로서 구현될 수 있다.
일 실시예에서, 임베디드 트레이스 라우터(1115)는 모니터링 버스(MBUS)뿐만 아니라 시스템 인터커넥터(1190)에도 연결될 수 있다. 이 경우, 임베디드 트레이스 라우터(1115)는 시스템 인터커넥터(1190)에 연결된 디램 컨트롤러(1120)를 통하여 워킹 메모리(1130)에 성능 데이터를 저장하거나, 시스템 인터커넥터(1190)에 연결된 스토리지 인터페이스(1160)를 통하여 저장 장치(1170)에 성능 데이터를 저장할 수 있다.
도 4는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 포함되는 성능 모니터링 유닛의 일 실시예를 나타내는 블록도이다.
도 4를 참조하면, 성능 모니터링 유닛(PMU)(300)은 제어 로직(CLOG)(310), 입력 회로(CIN)(320), 저장 회로(CST)(330) 및 출력 회로(COUT)(340)를 포함할 수 있다. 성능 모니터링 유닛(300)은 클록 신호(CLK)에 기초하여 동작하고 리셋 신호(RST)에 기초하여 리셋될 수 있다.
제어 로직(310)은 외부로부터(예를 들어, 도 3의 프로세서(1110))로부터 제공되는 제어 신호(CTRL)에 기초하여 입력 회로(320), 저장 회로(330) 및 출력 회로(340)의 전반적인 동작들을 제어할 수 있다. 제어 로직(310)은 특수 기능 레지스터(SFR, special function register), 마이크로 프로세서 등으로 구현될 수 있다.
입력 회로(320)는 다양한 성능 항목들을 나타내는 복수의 모니터링 신호들(MON)을 수신하고 성능 데이터를 위한 정보 또는 신호들을 저장 회로(330)로 제공할 수 있다. 복수의 모니터링 신호들(MON)은 캐시 미스, 인터럽트 발생 등의 외부 이벤트 신호들, 데이터 대역폭, 프로세서의 처리 속도, 레이턴시 등과 같은 다양한 성능 항목들을 나타내는 신호들을 포함할 수 있다.
저장 회로(330)는 입력 회로(320)로부터 제공되는 정보 또는 신호들에 기초하여 하나 이상의 성능 항목들에 해당하는 성능 데이터들(DATA0~DATA7)을 생성할 수 있다.
일 실시예에서, 저장 회로(320)는 복수의 플랫폼 성능 카운터들(ppc0~ppc7)을 포함할 수 있다. 이 경우, 복수의 플랫폼 성능 카운터들(ppc0~ppc7)은 입력 회로(310)에서 선택된 성능 항목들에 해당하는 이벤트 신호들을 수신하고 상응하는 이벤트 신호가 활성화될 때마다 저장된 카운트 값을 1씩 증가시킬 수 있다. 최종적인 카운터 값들은 성능 데이터들(DATA0~DATA7)로서 출력될 수 있다.
입력 회로(320) 및 저장 회로(330)는 성능 모니터링 유닛마다 서로 다른 구성을 가질 수 있으며, 도 4의 실시예에 한정되는 것은 아니다.
출력 회로(340)는 패킷 생성기(PKTG)(341) 및 모니터 마스터 인터페이스 회로(MSP)(342)를 포함할 수 있다.
패킷 생성기(341)는 하나의 단위 시간 동안 수집된 성능 데이터들(DATA0~DATA7)을 하나의 패킷으로 패킷화하고 복수의 단위 시간들에 각각 상응하는 복수의 패킷들을 상기 단위 시간마다 하나씩 순차적으로 출력할 수 있다.
모니터 마스터 인터페이스 회로(342)는 상기 복수의 패킷들의 각각을 복수의 슬라이스들로 분할하고 상기 복수의 슬라이스들을 순차적으로 모니터링 버스에 포함되는 직렬 인터커넥트 유닛(SIU)(400)으로 전송할 수 있다. 모니터 마스터 인터페이스 회로(342)는 후술하는 바와 같은 핸드쉐이크 방식에 따라서 상기 복수의 슬라이스들을 직렬 인터커넥트 유닛(400)에 포함되는 슬레이브 인터페이스 회로(SL)(410)로 전달할 수 있다.
일 실시예에서, 저장 회로(330) 및 출력 회로(340)는 외부에서 제공되는 타이밍 제어 신호(TM)에 동기화하여 동작할 수 있다. 도 5a를 참조하여 후술하는 바와 같이, 타이밍 제어 신호(TM)는 단위 시간마다 주기적으로 활성화되는 신호일 수 있다. 다른 실시예에서, 제어 로직(310)은 상기 단위 시간을 설정하기 위한 값을 저장하고, 상기 저장된 값에 기초하여 상기 단위 시간마다 하나의 패킷을 생성하도록 저장 회로(330) 및 출력 회로(340)를 제어할 수 있다.
도 5a 및 5b는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 의한 성능 데이터의 생성 주기를 설명하기 위한 도면들이다.
도 5a를 참조하면, 타이밍 제어 신호(TM)는 단위 시간(UT)을 나타낼 수 있다. 예를 들어, 제1 경우(CS1)와 같이 타이밍 제어 신호(TM)는 단위 시간(UT)마다 주기적으로 펄스 형태로 활성화될 수도 있고, 제2 경우(CS2)와 같이 단위 산간(UT)마다 로직 하이 레벨 및 로직 로우 레벨 사이에서 교호적으로(alternately) 천이할 수도 있다. 도 4의 저장 회로(330)는 단위 시간 동안 입력 회로(320)로부터 제공되는 정보를 누적(integration)할 수 있다. 출력 회로(340)는 타이밍 제어 신호(TM)의 활성화에 응답하여 저장 회로(330)의 출력, 즉 성능 데이터들(DATA0~DATA7)을 래치할 수 있다. 성능 데이터들(DATA0~DATA7)의 래치가 완료된 후 저장 회로(330) 및 출력 회로(340)는 초기화될 수 있다.
이와 같은 방식으로 하나의 단위 시간(UT)에 해당하는 시구간(T1~T2) 동안에 누적된 성능 데이터들이 시점(T2)에서 하나의 패킷으로 생성되고, 하나의 단위 시간(UT)에 해당하는 시구간(T2~T3) 동안에 누적된 성능 데이터들이 시점(T3)에서 하나의 패킷으로 생성되고, 하나의 단위 시간(UT)에 해당하는 시구간(T3~T4) 동안에 누적된 성능 데이터들이 시점(T4)에서 하나의 패킷으로 생성될 수 있다.
도 5b의 위쪽 부분에는 단위 시간(UT)이 1ms(millisecond)인 경우 주기적으로 측정된 평균 레이턴시(ALT)의 일 예가 도시되어 있고, 도 5b의 아래쪽 부분에는 단위 시간(UT)이 100us(microsecond)인 경우 주기적으로 측정된 평균 레이턴시(ALT)의 일 예가 도시되어 있다.
예를 들어, 평균 레이턴시가 기준 값(RV)을 초과하는 경우 문제 상황이 발생한 것으로 간주될 수 있다. 도 5b에 도시된 바와 같이, 1ms의 단위 시간마다 주기적으로 성능 데이터를 수집한 경우에는 문제 상황을 인식할 수 없지만, 100us의 단위 시간마다 주기적으로 성능 데이터를 수집한 경우에는 문제 상황의 인식이 가능해질 수 있다.
모니터링 버스의 병목(bottleneck)이 없다고 가정할 때, 성능 모니터링 유닛(PMU)이 생성하는 패킷의 속도는 아래의 수학식과 같이 표현된다.
Figure pat00001
위의 수학식에서,
Figure pat00002
는 성능 모니터링 유닛의 패킷 생성 주파수를 나타내고,
Figure pat00003
는 성능 모니터링 유닛의 패킷 사이즈를 나타내고,
Figure pat00004
는 성능 모니터링 시스템에 포함되고 하나의 임베디드 트레이스 라우터로 성능 데이터를 전달하는 성능 모니터링 유닛들의 개수를 나타내고,
Figure pat00005
은 임베디드 트레이스 라우터의 최대 처리 속도를 나타낸다.
위의 식에서
Figure pat00006
가 작아질수록 정밀한(fine-grained) 분석이 가능해지는데, 예를 들어보면 다음과 같다:
Figure pat00007
,
Figure pat00008
,
Figure pat00009
로 가정한다면,
Figure pat00010
는 최대 62,500Hz까지 가능하고 레이턴시(latency)로 변환하면 16us가 된다. 즉 다른 지장이 없을 때 이상적으로는 16us의 단위 시간 주기로 200개의 PMU들의 성능 데이터를 임베디드 트레이스 라우터로 집약하여 메모리 장치로 수집 또는 덤프(dump)하는 것이 가능해진다. 이와 같이, 제한된 조건 내에서 패킷 생성 주파수를 증가시킬수록, 즉 패킷 생성의 단위 시간을 감소할수록 더 많은 양의 성능 데이터를 수집할 수 있고 더 정밀한(fine-grained) 성능 분석을 수행할 수 있다.
도 6a 및 6b는 본 발명의 실시예들에 따른 성능 모니터링 시스템의 동작을 위한 패킷의 일 실시예를 나타내는 도면들이다.
도 6a 및 6b에는 슬라이스의 비트 사이즈가 64이고, 헤더의 비트 사이즈가 32인 예가 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니다.
도 6a를 참조하면, 각각의 패킷에 상응하는 상기 복수의 슬라이스들은, 정보 슬라이스 및 하나 이상의 데이터 슬라이스들을 포함할 수 있다. 슬라이스 번호(NSLC)가 0인 슬라이스가 정보 슬라이스에 해당하고, 슬라이스 번호(NSLC)가 1 내지 6인 슬라이스들이 데이터 슬라이스들에 해당한다. 하나의 패킷에 포함되는 데이터 슬라이스들의 개수는 다양하게 변경될 수 있다.
정보 슬라이스는 상기 각각의 패킷의 시작을 나타내는 프리앰블 및 상기 각각의 패킷에 관한 정보를 나타내는 헤더를 포함한다. 데이터 슬라이스들은 성능 데이터들(DATA0~DAT8)을 포함한다. "rsvd"는 유보된 비트들을 나타낸다. 한편, 상기 데이터 슬라이스들의 각각은, 상기 각각의 패킷을 생성한 성능 모니터링 유닛을 나타내는 모니터 식별자(PID)를 더 포함할 수 있다.
도 6b를 참조하면, 상기 헤더는, 상기 각각의 패킷에 상응하는 상기 복수의 슬라이스들의 개수를 나타내는 패킷 길이(PL), 상기 각각의 패킷에 포함되는 상기 성능 데이터들의 구성을 나타내는 데이터 타입(DTP), 상기 각각의 패킷을 생성한 성능 모니터링 유닛을 나타내는 모니터 식별자(PID) 및 상기 각각의 패킷이 상기 성능 모니터링 유닛에 의해 생성된 패킷들 중 몇 번째 패킷인지를 나타내는 패킷 식별 번호(NIT) 또는 반복 번호(iteration number)를 포함할 수 있다.
저장소(예를 들어, 도 1의 메모리 장치(200))를 읽어서 성능 분석 등의 후처리를 하는 과정에서 서로 다른 패킷의 슬라이스들이 인접해 있다. 직렬 인터커넥트 유닛들(SIU)을 거쳐 내려오면서 인터리브가 일어날 수 있기 때문이다. 각 슬라이스에 포함되는 모니터 식별자(PID)를 확인하여 같은 식별자끼리 묶어주는 후처리 과정이 필요하다. 사용자는 헤더에서 모니터 식별자와 패킷 길이를 바탕으로 슬라이스들을 모아 완전한 패킷을 복원할 수 있다.
도 7a 및 7b는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 포함되는 직렬 인터커넥트 유닛의 일 실시예를 나타내는 도면들이다.
도 7a에는 도 1의 제1 직렬 인터커넥트 유닛(SIU1)에 해당하는 구성이 도시되어 있고 도 7b에는 도 1의 제3 직렬 인터커넥트 유닛(SIU3)에 해당하는 구성이 도시되어 있다.
도 7a 및 7b를 참조하면, 직렬 인터커넥트 유닛들의 각각은, 두 개 이상의 슬레이브 인터페이스 회로들, 멀티플렉서, 중재기 및 하나의 마스터 인터페이스 회로를 포함할 수 있다.
상기 두 개 이상의 슬레이브 인터페이스 회로들은 복수의 성능 모니터링 유닛들 및 이전의 스테이지에 포함되는 직렬 인터커넥트 유닛들 중 두 개 이상으로부터 전송되는 성능 데이터들을 각각 수신할 수 있다.
상기 멀티플렉서는 상기 두 개 이상의 슬레이브 인터페이스 회로들로부터 출력되는 성능 데이터들을 선택하여 순차적으로 출력할 수 있다.
상기 중재기는 상기 멀티플렉서의 동작을 제어할 수 있다. 일 실시예에서, 상기 중재기는, 상기 멀티플렉서가 라운드 로빈(round robin) 방식 또는 최저 사용 빈도(LRU, least recently used) 방식에 따라서 상기 두 개 이상의 슬레이브 인터페이스 회로들로부터 출력되는 성능 데이터들을 선택하여 출력하도록 제어할 수 있다.
상기 마스터 인터페이스 회로는 상기 멀티플렉서로부터 출력되는 성능 데이터들을 다음의 스테이지에 포함되는 직렬 인터커넥트 유닛 또는 상기 임베디드 트레이스 라우터로 전송할 수 있다.
예를 들어, 도 7a의 제1 직렬 인터커넥트 유닛(SIU1)은 네 개의 슬레이브 인터페이스 회로들(SL11, SL12, SL13, SL14), 멀티플렉서(MUX1), 중재기(ABT1) 및 마스터 인터페이스 회로(MS1)를 포함할 수 있다.
네 개의 슬레이브 인터페이스 회로들(SL11, SL12, SL13, SL14)은 제1 내지 제4 성능 모니터링 유닛들(PMU1, PMU2, PMU3, PMU4))로부터 전송되는 성능 데이터들을 각각 수신하여 멀티플렉서(MUX1)로 제공할 수 있다. 전술한 바와 같이, 네 개의 슬레이브 인터페이스 회로들(SL11, SL12, SL13, SL14)은 상기 성능 데이터들을 포함하는 패킷들을 슬라이스 단위로 수신할 수 있다.
멀티플렉서(MUX1)는, 중재기(ABT1)의 제어에 따라서 네 개의 슬레이브 인터페이스 회로들(SL11, SL12, SL13, SL14)로부터 출력되는 성능 데이터들을 선택하여 순차적으로 출력할 수 있다.
중재기(ARB1)는 멀티플렉서(MUX1)가 라운드 로빈(round robin) 방식 또는 최저 사용 빈도(LRU, least recently used) 방식에 따라서 상기 두 개 이상의 슬레이브 인터페이스 회로들로부터 출력되는 성능 데이터들을 선택하여 출력하도록 제어할 수 있다.
마스터 인터페이스 회로(MS1)는 멀티플렉서(MUX1)로부터 출력되는 성능 데이터들을 다음의 스테이지에 포함되는 직렬 인터커넥트 유닛, 즉 도 1의 제2 스테이지(STG2)에 포함되는 제3 직렬 인터커넥트 유닛(SIU3)으로 전송할 수 있다.
예를 들어, 도 7b의 제3 직렬 인터커넥트 유닛(SIU3)은 네 개의 슬레이브 인터페이스 회로들(SL31, SL32, SL33, SL34), 멀티플렉서(MUX3), 중재기(ABT3) 및 마스터 인터페이스 회로(MS3)를 포함할 수 있다.
네 개의 슬레이브 인터페이스 회로들(SL31, SL32, SL33, SL34)은 제1 직렬 인터커넥트 유닛(SIU1), 제2 직렬 인터커넥트 유닛(SIU2), 제7 성능 모니터링 유닛(PMU7) 및 제8 성능 모니터링 유닛(PMU8)으로부터 전송되는 성능 데이터들을 각각 수신하여 멀티플렉서(MUX3)로 제공할 수 있다. 전술한 바와 같이, 네 개의 슬레이브 인터페이스 회로들(SL31, SL32, SL33, SL34)은 상기 성능 데이터들을 포함하는 패킷들을 슬라이스 단위로 수신할 수 있다.
멀티플렉서(MUX3)는, 중재기(ABT1)의 제어에 따라서 네 개의 슬레이브 인터페이스 회로들(SL31, SL32, SL33, SL34)로부터 출력되는 성능 데이터들을 선택하여 순차적으로 출력할 수 있다.
중재기(ARB3)는 멀티플렉서(MUX3)가 라운드 로빈(round robin) 방식 또는 최저 사용 빈도(LRU, least recently used) 방식에 따라서 상기 두 개 이상의 슬레이브 인터페이스 회로들로부터 출력되는 성능 데이터들을 선택하여 출력하도록 제어할 수 있다.
마스터 인터페이스 회로(MS3)는 멀티플렉서(MUX3)로부터 출력되는 성능 데이터들을 다음의 스테이지에 포함되는 직렬 인터커넥트 유닛, 즉 도 1의 제3 스테이지(STG3)에 포함되는 제4 직렬 인터커넥트 유닛(SIU4)으로 전송할 수 있다.
이와 같이, 복수의 스테이지들을 거치면서 복수의 성능 모니터링 유닛들로부터 제공되는 성능 데이터들이 슬라이스 단위로 인터리빙되고, 결과적으로 최후단의 직렬 인터커넥트 유닛, 예를 들어, 도 1의 제4 직렬 인터커넥트 유닛(SIU4)은 하나의 버스 출력 신호, 즉 제4 인터커넥트 신호(SDT4)를 임베디드 트레이스 라우터(ETR)로 출력할 수 있다.
도 8a, 8b 및 8c는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 의해 수행되는 트랜잭션의 일 실시예를 나타내는 도면들이다.
도 8a에는 2개의 연속한 스테이지들에 각각 포함되는 하나의 마스터 인터페이스 회로(MS) 및 하나의 슬레이브 인터페이스 회로(SL)가 도시되어 있다. 마스터 인터페이스 회로(MS) 및 슬레이브 인터페이스 회로(SL)는 레디 신호(RDY), 밸리드 신호(VLD), 라스트 신호(LST) 및 데이터 신호(DT)를 교신하기 위한 포트들을 각각 포함할 수 있다.
도 8b에는 각 신호에 해당하는 포트들, 포트들의 비트 사이지, 포트들의 입출력(I/O) 타입 및 설명(DESCRIPTION)이 도시되어 있다. 도 8b에는 도 6a의 64비트의 패킷 사이즈에 상응하도록 데이터 신호(DT)의 비트 사이즈가 64인 예가 도시되어 있으나 본 발명의 실시예들이 이에 한정되는 것은 아니다.
도 8c는 본 발명의 실시예들에 따른 시스템에 의해 수행되는 트랜잭션의 일 예를 나타내는 타이밍도이다.
도 8c에는 설명의 편의를 위하여 AXI(advanced extensible interface) 프로토콜에 따른 트랜잭션의 예가 도시되어 있다. AXI 프로토콜은 밸리드 신호(VLD) 및 레디 신호(RDY)를 이용하는 핸드쉐이크 방식(handshake mechanism)을 채택하고 있다. 도 8c에서 시점들(T1~T13)은 클록 신호(CLK)의 상승 에지들을 나타낸다.
도 8a, 8b 및 8c를 참조하면, 핸드쉐이크 방식에 따라서, 마스터 인터페이스 회로(MS)는 패킷(PKT)을 전송할 준비가 되었을 때 밸리드 신호(VLD)를 활성화하고 슬레이브 인터페이스 회로(SL)에서는 데이터 신호(DT), 즉 패킷(PKT)의 각 슬라이스를 수신할 준비가 되었을 때 레디 신호(RDY)를 활성화한다. 한편, 마스터 인터페이스 회로(MS)는 패킷(PKT)의 마지막 슬라이스를 전송할 때 라스트 신호(LST)를 활성화할 수 있다.
마스터 인터페이스 회로(MS) 및 슬레이브 인터페이스 회로(SL)의 양자 모두에서 클록 신호(CLK)의 상승 에지에 동기하여 전송 신호의 샘플링이 수행된다. 따라서 밸리드 신호(VLD) 및 상응하는 레디 신호(RDY)가 클록 신호(CLK)의 상승 에지에서 모두 활성화될 때만 유효한 신호 전송이 이루어진다. 따라서, 도 8c에 예시된 바와 같이 시점들(T6, T9, T10, T13)에서 슬라이스들(SLC1, SLC2, SLC4, SLC4)이 각각 마스터 인터페이스 회로(MS)로부터 슬레이브 인터페이스 회로(SL)로 전달될 수 있다.
도 8a, 8b 및 8c를 참조하여 설명한 바와 같이, 복수의 성능 모니터링 유닛들의 각각 및 이전의 스테이지에 포함되는 직렬 인터커넥트 유닛들의 각각은 밸리드 신호 및 레디 신호를 이용하는 핸드쉐이크 방식에 따라서 상기 복수의 모니터 출력 신호들에 포함되는 상기 성능 데이터들을 다음의 스테이지에 포함되는 직렬 인터커넥트 유닛 또는 임베디드 트레이스 라우터로 전송할 수 있다.
도 9a, 9b 및 9c는 본 발명의 실시예들에 따른 성능 모니터링 시스템에 의한 성능 데이터 저장의 실시예들을 나타내는 도면들이다.
도 9a를 참조하면, 임베디드 트레이스 라우터(ETR)는 슬라이스들(SLC)을 순차적으로 메모리 장치(MEM)의 메모리 영역(MRG)에 저장할 수 있다. 예를 들어, 슬라이스들(SLC)을 저장하기 위한 메모리 영역(MRG)은 시작 어드레스(SADD) 및 종료 어드레스(EADD)로 정의될 수 있다.
도 9b는 도 1의 인덱스 라이터(IDXW)를 포함하지 않는 경우 메모리 장치(MEM)의 메모리 영역(MRG)에 순차적으로 저장되는 슬라이스들을 나타낸다. 임베디드 트레이스 라우터(ETR)는 쓰기 포인터(WPT)를 이용하여 현재 슬라이스의 저장 어드레스를 생성하여 메모리 장치(MEM)에 제공할 수 있다. 쓰기 포인터(WPT)는 슬라이스들(SLC1~SLC6)이 저장되지 않은 비점유(UNOCCUPIED) 영역의 위치를 나타낼 수 있다.
실시예들에 따라서, 메모리 영역(MRG)의 시작 어드레스(SADD)부터 종료 어드레스(EADD)까지 슬라이스들이 저장된 후, 이후에 저장되는 슬라이스들을 시작 어드레스(SADD)부터 시작하여 덮어 쓸 수도 있다. 이와 같은 방식으로 메모리 영역(MRG)에는 가장 최근의 슬라이스들만을 일정 개수만큼 포함할 수 있다.
전술한 바와 같이, 임베디드 트레이스 라우터(ETR)는 모니터링 버스로부터 제공되는 버스 출력 신호를 통하여 슬라이스들을 순차적으로 수신하고 상기 슬라이스들을 수신하는 순서에 따라서 상기 슬라이스들을 하나씩 순차적으로 메모리 장치(MEM)에 저장할 수 있다. 즉, 도 9b의 예에서, 제1 슬라이스(SLC1)는 임베디드 트레이스 라우터(ETR)가 가장 먼저 수신한 슬라이스이고, 제6 슬라이스(SLC6)은 임베디드 트레이스 라우터(ETR)가 가장 늦게 수신한 슬라이스일 수 있다.
메모리 장치(MEM)의 메모리 영역(MRG)에 저장된 슬라이스들(SLC1~SLC6)은 복수의 성능 모니터링 유닛들로부터 생성되어 인터리빙 방식에 의해 저장된 것이므로 인접한 슬라이스들은 서로 다른 성능 모니터링 유닛들에 상응할 수 있다. 사용자는 전술한 바와 같은 프래앰블, 헤더와 같은 정보를 이용하여 각 성능 모니터링 유닛에 상응하는 패킷을 복원할 수 있다. 프리앰블을 통해서 패킷의 시작을 알 수 있고 따라오는 헤더를 통해서 패킷의 크기를 판단할 수 있다.
도 9c는 도 1의 인덱스 라이터(IDXW)를 포함하는 경우 메모리 장치(MEM)의 영역(MRG)에 순차적으로 저장되는 슬라이스들을 나타낸다.
전술한 바와 같이, 도 1의 인덱스 라이터(IDXW)는 단위 시간마다 순차적으로 증가하는 패킷 식별 번호를 포함하는 복수의 인덱스 슬라이스들(DSLC)을 생성하고 상기 복수의 인덱스 슬라이스들(DSLC)을 상기 단위 시간마다 하나씩 순차적으로 최후단의 직렬 인터커넥트 유닛(SIU4)을 통하여 임베디드 트레이스 라우터(ETR)로 전송할 수 있다.
결과적으로, 도 9c에 도시된 바와 같이, 복수의 인덱스 슬라이스들(DSLC1~DSLC3)이 성능 모니터링 유닛들에 의해 생성된 슬라이스들(SLC1~SLC8) 사이에 인터리빙되어 저장될 수 있다. 사용자는 이러한 인덱스 슬라이스들(DSLC1~DSLC3)을 참조하여 각 단위 시간에 해당하는 슬라이스들의 시작을 판단할 수 있다.
도 10은 본 발명의 실시예들에 따른 성능 모니터링 시스템을 포함하는 시스템 온 칩을 전자 장치에 응용한 예를 나타내는 블록도이다.
도 10을 참조하면, 전자 기기(2000)는 시스템 온 칩(2010), 메모리 장치(2020), 저장 장치(2030), 입출력 장치(2040), 파워 서플라이(2050) 및 이미지 센서(2060)를 포함할 수 있다. 한편, 도 10에는 도시되지 않았지만, 전자 기기(2000)는 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다.
시스템 온 칩(2010)은 애플리케이션 프로세서(AP) 또는 시스템 온 칩(SOC)으로서 인터커넥트 장치(INT)와 이에 연결된 복수의 지능 소자들(또는 기능 블록들)을 포함할 수 있다. 예를 들어, 상기 지능 소자들은 메모리 컨트롤러(memory controller)(MC), 중앙 처리부(central processing unit), 디스플레이 컨트롤러(display controller)(DIS), 파일 시스템 블록(file system block)(FSYS), 그래픽 처리부(graphic processing unit)(GPU), 이미지 신호 프로세서(image signal processor)(ISP), 멀티 포맷 코덱 블록(multi-format codec block)(MFC) 등을 포함할 수 있다. 메모리 컨트롤러(MC)는 전술한 슬레이브 지능 소자들 중 하나에 해당하고 다른 지능 소자들 중 복수의 지능 소자들은 메모리 컨트롤러(MC)를 공통 자원으로 이용하는 마스터 지능 소자들에 해당한다.
시스템 온 칩(2010)는 전술한 바와 같은 성능 모니터링 시스템(PMS)(100)을 포함할 수 있다. 성능 모니터링 시스템(100)은 복수의 성능 모니터링 유닛들, 모니터링 버스 및 임베디드 트레이스 라우터를 포함할 수 있다. 상기 복수의 성능 모니터링 유닛들은 시스템 온 칩(2010)에 분산하여 배치되고, 시스템 온 칩(2010)의 성능 데이터들을 생성하여 상기 성능 데이터들을 포함하는 복수의 모니터 출력 신호들을 생성할 수 있다. 상기 모니터링 버스는 상기 복수의 모니터 출력 신호들을 수신하고 상기 복수의 모니터 출력 신호들에 포함되는 상기 성능 데이터들을 인터리빙하여 하나의 버스 출력 신호를 생성할 수 있다. 상기 임베디드 트레이스 라우터는 상기 버스 출력 신호를 수신하고 상기 버스 출력 신호에 포함되는 상기 성능 데이터들을 메모리 장치, 예를 들어, 메모리 장치(2020) 또는 저장 장치(2030)에 저장할 수 있다.
시스템 온 칩(2010)은 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus)를 통하여 메모리 장치(2020), 저장 장치(2030), 입출력 장치(2040) 및 이미지 센서(2060)와 통신을 수행할 수 있다. 실시예에 따라, 시스템 온 칩(2010)은 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
메모리 장치(2020)는 전자 기기(2000)의 동작에 필요한 데이터 및 프로그램 코드를 저장할 수 있다. 예를 들어, 메모리 장치(2020)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다. 저장 장치(2030)는 솔리드 스테이트 드라이브(solid state drive), 하드 디스크 드라이브(hard disk drive), 씨디롬(CD-ROM) 등을 포함할 수 있다. 입출력 장치(2040)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 파워 서플라이(2050)는 전자 기기(2000)의 동작에 필요한 동작 전압을 공급할 수 있다.
이미지 센서(2060)는 상기 버스들 또는 다른 통신 링크를 통해서 시스템 온 칩(1010)과 연결되어 통신을 수행할 수 있다. 이미지 센서(1060)는 시스템 온 칩(1010)과 함께 하나의 칩에 집적될 수도 있고, 서로 다른 칩에 각각 집적될 수도 있다.
도 10에 도시된 전자 기기(2000)의 구성 요소들의 적어도 일부는 다양한 형태들의 패키지로 구현될 수 있다. 예를 들어, 적어도 일부의 구성들은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 전자 기기(2000)는 적어도 하나의 시스템 온 칩을 포함하는 모든 장치 및 시스템으로 해석되어야 할 것이다. 예를 들어, 전자 기기(2000)는 디지털 카메라, 이동 전화기, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 스마트폰 등을 포함할 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 본 발명의 실시예들에 따른 성능 모니터링 시스템 및 성능 모니터링 방법은, 복수의 성능 모니터링 유닛들이 각각 독립적으로 성능 데이터들을 생성하여 모니터링 버스로 전달하고 모니터링 버스를 이용하여 인터리빙 방식으로 성능 데이터들을 하나의 임베디드 트레이스 라우터로 집약하여 제공함으로써 수집되는 성능 데이터의 양을 증가할 수 있다. 성능 데이터의 양을 증가시킴으로써 정밀한(fine-grained) 성능 분석을 수행할 수 있다.
또한, 본 발명의 실시예들에 따른 성능 모니터링 시스템 및 성능 모니터링 방법은, 성능 데이터를 시간 단위로 패킷화하고 각 패킷을 복수의 슬라이스들로 분할하여 슬라이스 단위의 인터리빙을 수행함으로써 성능 데이터의 전송 속도를 증가시키고 성능 데이터의 양을 더욱 증가시킬 수 있다.
본 발명의 실시예들은 성능 분석이 요구되는 장치 및 이를 포함하는 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기, 서버 시스템, 자율 주행 장치, 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 전자 장치에 분산하여 배치되고, 상기 전자 장치의 성능 데이터들을 생성하여 상기 성능 데이터들을 포함하는 복수의 모니터 출력 신호들을 생성하는 복수의 성능 모니터링 유닛들;
    상기 복수의 모니터 출력 신호들을 수신하고 상기 복수의 모니터 출력 신호들에 포함되는 상기 성능 데이터들을 인터리빙하여 하나의 버스 출력 신호를 생성하는 모니터링 버스; 및
    상기 버스 출력 신호를 수신하고 상기 버스 출력 신호에 포함되는 상기 성능 데이터들을 메모리 장치에 저장하는 임베디드 트레이스 라우터를 포함하는 성능 모니터링 시스템.
  2. 제1 항에 있어서,
    상기 복수의 성능 모니터링 유닛들의 각각은,
    하나의 단위 시간 동안 수집된 성능 데이터를 하나의 패킷으로 패킷화하고 복수의 단위 시간들에 각각 상응하는 복수의 패킷들을 상기 단위 시간마다 하나씩 순차적으로 출력하고,
    상기 복수의 패킷들의 각각을 복수의 슬라이스들로 분할하고 상기 복수의 슬라이스들을 순차적으로 출력하는 것을 특징으로 하는 성능 모니터링 시스템.
  3. 제2 항에 있어서,
    상기 모니터링 버스는,
    상기 복수의 성능 모니터링 유닛들로부터 출력되는 패킷들을 슬라이스 단위로 인터리빙하여 상기 버스 출력 신호를 생성하고,
    상기 임베디드 트레이스 라우터는,
    상기 버스 출력 신호를 통하여 슬라이스들을 순차적으로 수신하고 상기 슬라이스들을 수신하는 순서에 따라서 상기 슬라이스들을 하나씩 순차적으로 상기 메모리 장치에 저장하는 것을 특징으로 하는 성능 모니터링 시스템.
  4. 제2 항에 있어서,
    상기 성능 모니터링 시스템은,
    상기 단위 시간마다 순차적으로 증가하는 패킷 식별 번호를 포함하는 복수의 인덱스 슬라이스들을 생성하고 상기 복수의 인덱스 슬라이스들을 상기 단위 시간마다 하나씩 순차적으로 상기 임베디드 트레이스 라우터로 전송하는 인덱스 라이터를 더 포함하고,
    상기 모니터링 버스는,
    상기 복수의 성능 모니터링 유닛들로부터 출력되는 패킷들의 슬라이스들 및 상기 복수의 인덱스 슬라이스들을 슬라이스 단위로 인터리빙하여 상기 버스 출력 신호를 생성하는 것을 특징으로 하는 성능 모니터링 시스템.
  5. 제1 항에 있어서,
    상기 복수의 성능 모니터링 유닛들의 각각은,
    하나의 단위 시간 동안 수집된 성능 데이터들을 하나의 패킷으로 패킷화하고 복수의 단위 시간들에 각각 상응하는 복수의 패킷들을 상기 단위 시간마다 하나씩 순차적으로 출력하는 패킷 생성기; 및
    상기 복수의 패킷들의 각각을 복수의 슬라이스들로 분할하고 상기 복수의 슬라이스들을 순차적으로 상기 모니터링 버스로 전송하는 모니터 마스터 인터페이스 회로를 포함하는 것을 특징으로 하는 성능 모니터링 시스템.
  6. 제5 항에 있어서,
    각각의 패킷에 상응하는 상기 복수의 슬라이스들은,
    상기 각각의 패킷의 시작을 나타내는 프리앰블 및 상기 각각의 패킷에 관한 정보를 나타내는 헤더를 포함하는 정보 슬라이스; 및
    상기 성능 데이터들을 포함하는 하나 이상의 데이터 슬라이스들을 포함하는 것을 특징으로 하는 성능 모니터링 시스템.
  7. 제6 항에 있어서,
    상기 헤더는,
    상기 각각의 패킷에 상응하는 상기 복수의 슬라이스들의 개수를 나타내는 패킷 길이;
    상기 각각의 패킷에 포함되는 상기 성능 데이터들의 구성을 나타내는 데이터 타입;
    상기 각각의 패킷을 생성한 성능 모니터링 유닛을 나타내는 모니터 식별자; 및
    상기 각각의 패킷이 상기 성능 모니터링 유닛에 의해 생성된 패킷들 중 몇 번째 패킷인지를 나타내는 패킷 식별 번호를 포함하고,
    상기 데이터 슬라이스들의 각각은,
    상기 각각의 패킷을 생성한 성능 모니터링 유닛을 나타내는 모니터 식별자를 더 포함하는 것을 특징으로 하는 성능 모니터링 시스템.
  8. 제1 항에 있어서,
    상기 모니터링 버스는,
    상기 성능 데이터들을 순차적으로 인터리빙하여 상기 임베디드 트레이스 라우터로 전달하는 복수의 스테이지들을 포함하고,
    상기 복수의 스테이지들의 각각은,
    하나 이상의 직렬 인터커넥트 유닛들을 포함하는 것을 특징으로 하는 성능 모니터링 시스템.
  9. 제8 항에 있어서,
    상기 직렬 인터커넥트 유닛들의 각각은,
    상기 복수의 성능 모니터링 유닛들 및 이전의 스테이지에 포함되는 직렬 인터커넥트 유닛들 중 두 개 이상으로부터 전송되는 성능 데이터들을 각각 수신하는 두 개 이상의 슬레이브 인터페이스 회로들;
    상기 두 개 이상의 슬레이브 인터페이스 회로들로부터 출력되는 성능 데이터들을 선택하여 순차적으로 출력하는 멀티플렉서;
    상기 멀티플렉서의 동작을 제어하는 중재기; 및
    상기 멀티플렉서로부터 출력되는 성능 데이터들을 다음의 스테이지에 포함되는 직렬 인터커넥트 유닛 또는 상기 임베디드 트레이스 라우터로 전송하는 하나의 마스터 인터페이스 회로를 포함하는 것을 특징으로 하는 성능 모니터링 시스템.
  10. 전자 장치에 분산하여 배치되는 복수의 성능 모니터링 유닛들을 이용하여, 상기 전자 장치의 성능 데이터들을 생성하여 상기 성능 데이터들을 포함하는 복수의 모니터 출력 신호들을 생성하는 단계;
    상기 복수의 모니터 출력 신호들을 수신하는 모니터링 버스를 이용하여, 상기 복수의 모니터 출력 신호들에 포함되는 상기 성능 데이터들을 인터리빙하여 하나의 버스 출력 신호를 생성하는 단계; 및
    상기 버스 출력 신호를 수신하는 임베디드 트레이스 라우터에 의해, 상기 버스 출력 신호에 포함되는 상기 성능 데이터들을 메모리 장치에 저장하는 단계를 포함하는 전자 장치의 성능 모니터링 방법.
KR1020220030048A 2021-12-10 2022-03-10 전자 장치의 성능 모니터링 시스템 및 성능 모니터링 방법 KR20230088211A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/988,989 US20230184830A1 (en) 2021-12-10 2022-11-17 System and method of monitoring performance of an electronic device
CN202211567468.XA CN116257413A (zh) 2021-12-10 2022-12-07 监测电子装置的性能的系统和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210176820 2021-12-10
KR1020210176820 2021-12-10

Publications (1)

Publication Number Publication Date
KR20230088211A true KR20230088211A (ko) 2023-06-19

Family

ID=86988588

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220030048A KR20230088211A (ko) 2021-12-10 2022-03-10 전자 장치의 성능 모니터링 시스템 및 성능 모니터링 방법

Country Status (1)

Country Link
KR (1) KR20230088211A (ko)

Similar Documents

Publication Publication Date Title
Huangfu et al. Medal: Scalable dimm based near data processing accelerator for dna seeding algorithm
Sadri et al. Energy and performance exploration of accelerator coherency port using Xilinx ZYNQ
US8904392B2 (en) Shared performance monitor in a multiprocessor system
JP2020537785A (ja) ホスト通信されるマージされた重みと層単位命令のパッケージとを使用するニューラルネットワークアクセラレータによる多層ニューラルネットワーク処理
CN106598184A (zh) 在处理器中执行跨域热控制
EP3869348A1 (en) Changing a processor state based on states of io drivers tunnelling traffic on a serial bus
EP3910488A1 (en) Systems, methods, and devices for near data processing
US9304775B1 (en) Dispatching of instructions for execution by heterogeneous processing engines
CN112346557B (zh) 多核系统及其控制操作
US11868626B2 (en) Storage device set including storage device and reconfigurable logic chip, and storage system including the storage device set
KR20160063974A (ko) 워크로드를 이용하여 전력을 제어할 수 있는 시스템 온 칩, 이의 작동 방법, 및 이를 포함하는 컴퓨팅 장치
CN111782580B (zh) 复杂计算装置、方法、人工智能芯片和电子设备
Torabzadehkashi et al. Accelerating hpc applications using computational storage devices
JP7377811B2 (ja) 集積回路のためのデータ処理エンジンタイルアーキテクチャ
US7606698B1 (en) Method and apparatus for sharing data between discrete clusters of processors
Kim et al. SMT: Software-defined memory tiering for heterogeneous computing systems with CXL memory expander
KR20230088211A (ko) 전자 장치의 성능 모니터링 시스템 및 성능 모니터링 방법
US20230184830A1 (en) System and method of monitoring performance of an electronic device
Xue et al. Softssd: Software-defined ssd development platform for rapid flash firmware prototyping
Arif et al. Accelerating performance of gpu-based workloads using cxl
Schmidt Accelerating checkpoint/restart application performance in large-scale systems with network attached memory
US11119787B1 (en) Non-intrusive hardware profiling
Yun et al. CLAY: CXL-based Scalable NDP Architecture Accelerating Embedding Layers
CN118311916B (zh) 一种可编程逻辑系统和微处理器
US11741043B2 (en) Multi-core processing and memory arrangement