KR20200036010A - 적응적 서비스 품질 제어 회로 - Google Patents
적응적 서비스 품질 제어 회로 Download PDFInfo
- Publication number
- KR20200036010A KR20200036010A KR1020207006592A KR20207006592A KR20200036010A KR 20200036010 A KR20200036010 A KR 20200036010A KR 1020207006592 A KR1020207006592 A KR 1020207006592A KR 20207006592 A KR20207006592 A KR 20207006592A KR 20200036010 A KR20200036010 A KR 20200036010A
- Authority
- KR
- South Korea
- Prior art keywords
- memory controller
- metric
- circuit
- memory
- circuits
- Prior art date
Links
- 230000003044 adaptive effect Effects 0.000 title description 3
- 238000003908 quality control method Methods 0.000 title 1
- 238000012545 processing Methods 0.000 claims abstract description 21
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims description 45
- 241001522296 Erithacus rubecula Species 0.000 claims description 22
- 230000008859 change Effects 0.000 claims description 21
- 230000008878 coupling Effects 0.000 claims description 6
- 238000010168 coupling process Methods 0.000 claims description 6
- 238000005859 coupling reaction Methods 0.000 claims description 6
- 238000013459 approach Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 6
- 230000011664 signaling Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 101000879673 Streptomyces coelicolor Subtilisin inhibitor-like protein 3 Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000004260 weight control Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3027—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/349—Performance evaluation by tracing or monitoring for interfaces, buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1621—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Logic Circuits (AREA)
Abstract
메모리 트랜잭션들을 서비스할 시에 서비스 품질을 제어하는 개시된 접근법들은, 서비스 품질 관리(QM) 회로(116)에 의해, 요청기 회로들(106, 108, 110, 112)이 메모리 트랜잭션들을 메모리 제어기(104)에 활성적으로 송신하고 있는 동안, 요청기 회로들로부터 개개의 제1 데이터 레이트 메트릭들 및 개개의 레이턴시 메트릭들을 주기적으로 판독하는 것(206)을 포함한다. QM 회로는, 메모리 제어기가 메모리 트랜잭션들을 프로세싱하고 있는 동안, 메모리 제어기로부터 제2 데이터 레이트 메트릭을 주기적으로 판독(208)하고, 요청기 회로들이 메모리 트랜잭션들을 메모리 제어기에 활성적으로 송신하고 있는 동안, 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키는지 여부를 결정(210)한다. 동작 메트릭들이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, QM 회로는, 요청기 회로(들) 및 메모리 제어기의 제어 파라미터(들)의 값(들)을 동적으로 변화(212)시킨다.
Description
본 개시내용은 일반적으로 메모리 트랜잭션들을 프로세싱할 시에 서비스 품질을 관리하는 것에 관한 것이다.
시스템-온-칩(SOC)은 종종 컴포넌트들, 이를테면 메모리, 하나 이상의 프로세서들, 및 입력/출력(I/O) 회로망을 포함하며, 이들 모두는 단일 집적 회로 다이 상에서 제조된다. SOC들은 또한, 필드 프로그래밍가능 게이트 어레이(FPGA)들에서 발견되는 것과 같은 프로그래밍가능 로직 회로망을 포함할 수 있다. SOC들은 메모리 트래픽을 조절하고 서비스 품질(QOS)을 제어하기 위한 다양한 구성 파라미터들을 제공한다.
메모리 리소스들에 액세스할 시의 서비스 품질(QOS)은 종종 레이턴시 및 대역폭 이용도의 관점들에서 측정된다. 레이턴시는, 메모리 트랜잭션이 요청기에 의해 발행될 때로부터 요청기가 판독 트랜잭션으로부터 데이터를 수신하거나 또는 기입 트랜잭션이 완료되었다는 확인응답을 수신할 때까지의 시간의 양이다. 메모리 대역폭은, 데이터가 하나 이상의 요청기들에 의해 메모리로부터 판독되거나 메모리에 기입될 수 있는 이론적이거나 통지된 레이트(예컨대, 바이트/초)이고, 대역폭 이용도는 사용자 애플리케이션을 구동시키는 시스템에서 제출되는 메모리 트랜잭션들을 프로세싱할 시에 소비되는 메모리 대역폭의 퍼센티지이다.
SOC에서 다수의 요청기들 및 트래픽 타입들 사이에서의 메모리 대역폭 할당을 효과적으로 조절하는 것은 SOC들 상에 배치될 수 있는 방대한 수의 상이한 애플리케이션들 및 SOC 아키텍처들의 복잡성 및 가변성으로 인해 난제일 수 있다. 부가적으로, 많은 제어 파라미터들의 개별적인 제어 파라미터에 대한 메모리 시스템의 성능은 종종, 성능에 영향을 줄 수 있는 단일 제어 파라미터를 넘어 많은 인자들이 존재하므로 비-선형적이다.
메모리 트랜잭션들을 서비스할 시에 서비스 품질을 제어하는 개시된 방법은, 시스템 온 칩(SOC) 상에 배치된 서비스 품질 관리(QM) 회로에 의해, SOC 상에 또한 배치된 복수의 요청기 회로들이 메모리 트랜잭션들을 SOC 상의 메모리 제어기에 활성적으로 송신하고 있는 동안, 복수의 요청기 회로들로부터 개개의 제1 데이터 레이트 메트릭들 및 개개의 레이턴시 메트릭들을 주기적으로 판독하는 단계를 포함한다. QM 회로는 또한, 메모리 제어기가 메모리 트랜잭션들을 프로세싱하고 있는 동안 메모리 제어기로부터 제2 데이터 레이트 메트릭을 주기적으로 판독한다. QM 회로는, 복수의 요청기 회로들이 메모리 트랜잭션들을 메모리 제어기에 활성적으로 송신하고 있는 동안, 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키는지 여부를 결정한다. 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, QM 회로는 복수의 요청기 회로들 및 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 동적으로 변화시킨다.
개시된 시스템은 메모리 제어기, 복수의 요청기 회로들, 및 서비스 품질 관리(QM) 회로를 포함한다. 복수의 요청기 회로들은 메모리 제어기에 커플링되며, 메모리 액세스 트랜잭션들을 메모리 제어기에 송신하도록 구성된다. QM 회로는 메모리 제어기 및 요청기 회로들에 커플링된다. QM 회로는, 복수의 요청기 회로들이 메모리 트랜잭션들을 메모리 제어기에 활성적으로 송신하고 있는 동안, 복수의 요청기 회로들로부터 개개의 제1 데이터 레이트 메트릭들 및 개개의 레이턴시 메트릭들을 주기적으로 판독하도록 구성된다. QM 회로는 메모리 제어기가 메모리 트랜잭션들을 프로세싱하고 있는 동안 메모리 제어기로부터 제2 데이터 레이트 메트릭을 주기적으로 판독하도록 추가로 구성된다. QM 회로는, 복수의 요청기 회로들이 메모리 트랜잭션들을 메모리 제어기에 활성적으로 송신하고 있는 동안, 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키는지 여부를 결정하도록 구성된다. 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, QM 회로는 복수의 요청기 회로들 및 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 동적으로 변화시키도록 구성된다.
다른 특징들은 후속하는 상세한 설명 및 청구항들을 고려할 때 인식될 것이다.
방법 및 시스템의 다양한 양상들 및 특징들은 다음의 상세한 설명의 검토 시에 그리고 도면들을 참조할 시에 자명해질 것이다.
도 1은 요청기 회로들과 메모리 사이의 경로 상의 다수의 포인트들에서 QoS 제어 파라미터들을 동적으로 조정할 수 있는 QM을 갖는 예시적인 SoC를 도시한다.
도 2는 QoS 메트릭들을 모니터링하고 QoS 제어 파라미터들의 값들을 조정하는 예시적인 프로세스의 흐름도를 도시한다.
도 3은 메모리 트랜잭션들을 발행할 시에 요청 회로의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다.
도 4는 메모리 트랜잭션들을 중재할 시에 상호연결 회로의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다.
도 5는 메모리 트랜잭션들을 중재할 시에 메모리 제어기의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다.
도 6은 개시된 회로망에 따라 구성될 수 있는 예시적인 프로그래밍가능 IC를 도시한다.
도 1은 요청기 회로들과 메모리 사이의 경로 상의 다수의 포인트들에서 QoS 제어 파라미터들을 동적으로 조정할 수 있는 QM을 갖는 예시적인 SoC를 도시한다.
도 2는 QoS 메트릭들을 모니터링하고 QoS 제어 파라미터들의 값들을 조정하는 예시적인 프로세스의 흐름도를 도시한다.
도 3은 메모리 트랜잭션들을 발행할 시에 요청 회로의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다.
도 4는 메모리 트랜잭션들을 중재할 시에 상호연결 회로의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다.
도 5는 메모리 트랜잭션들을 중재할 시에 메모리 제어기의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다.
도 6은 개시된 회로망에 따라 구성될 수 있는 예시적인 프로그래밍가능 IC를 도시한다.
다음의 설명에서, 다수의 특정한 세부사항들이 본 명세서에 제시되는 특정한 예들을 설명하기 위해 기재된다. 그러나, 하나 이상의 다른 예들 및/또는 이들 예들의 변경들이 아래에서 주어지는 모든 특정 세부사항들 없이도 실시될 수 있다는 것이 당업자에게 자명해야 한다. 다른 예시들에서, 잘 알려진 특징들은 본 명세서의 예들의 설명을 모호하게 하지 않기 위해 상세히 설명되지는 않는다. 예시의 용이함을 위해, 동일한 엘리먼트들 또는 동일한 엘리먼트의 부가적인 인스턴스들을 지칭하도록 동일한 참조 부호들이 상이한 다이어그램들에서 사용될 수 있다.
개시된 방법들 및 회로들은, 메모리 트랜잭션들을 발행하는 요청기 회로들과 메모리에 대한 액세스를 중재하는 메모리 제어기 사이의 경로 내의 다양한 포인트들에서 QoS 메트릭들을 모니터링하고 제어 파라미터들을 적응적으로 그리고 동적으로 조정함으로써 메모리 트랜잭션들을 프로세싱할 시에 서비스 품질(QoS)을 관리하기 위한 접근법들을 제공한다. 제어 파라미터들은, 요청기 회로들이 제어 파라미터들을 변화시키고 제어 파라미터들이 효력을 나타나게 하기 위해 중지되고 재시작할 필요가 없다는 점에서 동적으로 조정된다. 제어 파라미터들은 원하는 QoS를 달성하기 위해 시간에 걸쳐 점진적으로 조정될 수 있다.
제어 파라미터들이 동적으로 조정될 수 있을 뿐만 아니라, 개시된 접근법들은 원하는 QoS를 달성하기 위해 제어 파라미터들의 값들을 적응적으로 조정하는 데 이용될 수 있다. 제어 파라미터들의 값들은 시스템을 시작하기 전에 정확하게 알려지지 않을 수 있거나 알려질 필요가 없다. 본 명세서에 개시된 적응적 기법들을 사용하여, 시스템은 제어 파라미터들의 추정된 값들로 초기화될 수 있고, 이후, 시스템은 성능을 모니터링하고, 성능이 원하는 서비스 품질 프로파일을 만족시키는지 여부를 결정하며, 시스템이 짧은 시간 기간 내에서 원하는 QoS로 수렴하도록 제어 파라미터들의 값들을 조정할 수 있다.
QoS 관리자 회로(QM)는 요청기 회로들 및 메모리 제어기로부터 QoS 메트릭들을 주기적으로 수집함으로써 메모리 트랜잭션들을 프로세싱하는 QoS를 모니터링한다. QoS 메트릭들은, 예컨대 요청기 회로들로부터의 그리고 메모리 제어기로부터의 대역폭 및 레이턴시 통계들, 메트릭들(대역폭, 이용도, 및 유휴 시간을 포함함)을 포함한다. 데이터베이스로부터 판독된 QoS 프로파일 및 QoS 메트릭들에 기반하여, QM은 하나 이상의 QoS 제어 파라미터들의 값들을 조정한다. QoS 프로파일은 메모리 제어기 이용도를 특정하며, 각각의 타입 또는 클래스의 메모리 트랜잭션에 대해서는 최대 레이턴시 및 예상된 대역폭 할당을 특정할 수 있다.
요청기 회로들, 상호연결 회로, 및 메모리 제어기는 각각, QM에 의해 조정될 수 있는 QoS 제어 파라미터들을 갖는다. 예컨대, 각각의 요청기 회로는 요청 간격 파라미터 및 아웃스탠딩(outstanding) 트랜잭션 제한 파라미터를 갖는다. 상호연결 회로는 라운드 로빈(round robin) 가중치들을 가질 수 있다. 메모리 제어기는 상이한 트래픽 클래스들 및 트래픽 타입들에 대한 절대적인 대역폭 제어들 및 포트 중재를 위한 라운드 로빈 가중치들을 갖는다.
QoS 프로파일을 만족시키는 것과 함께, QM은 대역폭 이용도 대 레이턴시의 곡선 상의 최적의 포인트에서 또는 그 아래에서 메모리가 동작하게 하기 위해 QoS 제어 파라미터들을 동적으로 조정할 수 있다. 대역폭 이용도는 사용중인 회로의 대역폭(관측된 데이터 레이트/회로에 의해 획득가능한 가장 큰 데이터 레이트)의 퍼센티지이다. 당업자들이 인식하는 바와 같이, 대역폭 이용도 대 레이턴시 곡선은 대역폭 이용도와 메모리 트랜잭션들의 레이턴시 사이의 관계를 설명한다. 대역폭 이용도가 증가함에 따라, 메모리 트랜잭션들의 레이턴시가 또한 증가하며, 곡선 상의 일부 포인트를 넘어서면, 대역폭 이용도가 증가함에 따라, 레이턴시가 기하급수적으로 증가한다. 곡선 상의 포인트(그 포인트를 넘어서면, 레이턴시가 기하급수적으로 증가함)는 "최적의 포인트"로 지칭된다. QM은 QoS 메트릭들을 모니터링하고, QoS 제어 파라미터 값들 중 하나 이상을 조정하여, 최적의 포인트에 있거나 그보다 약간 작은 대역폭 이용도로 시스템이 동작하게 유지한다. "동작 포인트"는 메모리 제어기에 의해 리포팅되고 QM에 의해 모니터링되는 실제 대역폭 이용도이다. 동작 포인트가 상이한 시간들에서의 상이한 작업로드들의 결과로서 변할 수 있으므로, QM은, 동작 포인트가 연장된 시간 기간 동안 최적의 포인트 위에 머무르지 않는다는 것을 보장하기 위해 QoS 제어 파라미터들을 조정할 수 있다.
도 1은 요청기 회로들과 메모리 사이의 경로 상의 다수의 포인트들에서 QoS 제어 파라미터들을 동적으로 조정할 수 있는 QM을 갖는 예시적인 SoC(100)를 도시한다. 시스템은 메모리(102), 이를테면 DRAM의 하나 이상의 뱅크(bank)들, 메모리에 대한 액세스를 제어하기 위한 메모리 제어기(104), 다수의 요청기 회로들, 이를테면 하나 이상의 프로세서들(106 내지 108), 및/또는 프로그래밍가능 로직(110 내지 112)으로 구현된 하나 이상의 요청기들, 및 요청기 회로들을 메모리 제어기 뿐만 아니라 다른 컴포넌트들에 연결시키는 상호연결 회로(114)를 포함한다. QM(116)은 하드와이어링된 제어기(hardwired controller), 시스템 내의 프로세서 상에서 다른 태스크들과 함께 실행되는 태스크, 또는 시스템 내의 전용 프로세서 상에서 실행되는 태스크일 수 있다.
QM(116)은 요청기 회로들(106 내지 108 및 110 내지 112), 상호연결 회로(114), 및 메모리 제어기(104)에 커플링된다. 요청기 회로들(106 내지 108 및 110 내지 112), 상호연결 회로(114), 및 메모리 제어기(104)는 모니터 회로들(118, 120, 122, 124, 126, 및 128)을 각각 갖는다. 개개의 모니터 회로들은 컴포넌트들 각각에서의 동작 통계들을 수집하여 모니터 회로들의 레지스터들에 저장하는 로직을 포함한다. 예컨대, 요청기 회로들에서, 모니터 회로들 각각은 대역폭 및 레이턴시 통계들을 수집한다. 관측된 대역폭은, 모니터에 의해 관측되는 바와 같이 데이터가 요청기들 및 메모리 제어기로부터/로 이동되는 레이트이며, 종종 바이트/초로 표현된다. 레이턴시는, 메모리 트랜잭션이 발행되는 시간과 요청된 데이터가 요청기로 리턴되는 시간 사이의 간격의 지속기간이다. 모니터 회로들에 의해 컴퓨팅되는 관측된 대역폭 및 레이턴시는, 예컨대 이동 평균들 및/또는 다른 통계 측정치들일 수 있다.
메모리 제어기(104)의 모니터 회로(128)는, 전체 데이터 레이트, 대역폭 이용도, 및 (메모리 제어기가 메모리 트랜잭션들을 프로세싱하고 있지 않은 시간의 퍼센티지인) 유휴 시간을 표시하는 메트릭들을 수집하여 저장하는 로직을 포함한다.
요청기 회로들(106 내지 108 및 110 내지 112), 상호연결 회로(114), 및 메모리 제어기(104)는 개개의 제어 회로들(130, 132, 134, 136, 138, 및 140)을 가지며, 각각의 제어 회로는 제어 파라미터들의 값들을 저장하기 위한 하나 이상의 레지스터들 및 큐잉(queue)된 메모리 트랜잭션들의 발행 및/또는 중재를 제어하는 제어 회로망을 포함한다. 요청기 회로들에서의 제어 파라미터들은 요청 간격들 및 아웃스탠딩 트랜잭션 제한들을 포함하며, 요청 간격 및 아웃스탠딩 트랜잭션 제한 파라미터들의 값들은 QM(116)에 의해 동적으로 변화될 수 있다. 각각의 요청기 회로에 대한 요청 간격 파라미터는, 요청기 회로가 하나의 메모리 트랜잭션의 송신과 다음 메모리 트랜잭션의 송신 사이에서 대기할 시간 기간을 특정한다. 당업자들은 요청기 회로들의 대역폭을 조절하기 위한 다른 접근법들을 인식할 것이다. 예컨대, 다수의 파라미터들은 시간에 걸쳐 상이한 요청 간격들의 원하는 통계적 분배를 특정하는 데 사용될 수 있다.
각각의 요청기 회로에 대한 아웃스탠딩 트랜잭션 제한 파라미터는, 요청기 회로에 허용되는 완료되지 않은 메모리 트랜잭션들의 최대 수를 특정한다. 일단 요청기 회로로부터의 완료되지 않은 메모리 트랜잭션들의 수가 아웃스탠딩 트랜잭션 제한에 도달하면, 요청기 블록들의 제어 회로는, 아웃스탠딩 메모리 트랜잭션이 완료될 때까지 요청기 회로가 다른 메모리 트랜잭션을 발행하는 것을 차단한다.
상호연결 회로에서의 제어 파라미터들은, 예컨대 라운드 로빈 가중치들을 포함한다. 라운드 로빈 가중치들은, QM(116)에 의해 동적으로 변화될 수 있고, 요청 회로들로부터의 트랜잭션들의 큐들과 연관된 가중치들에 비례하여 요청 회로들로부터의 메모리 트랜잭션들 사이에서 선택하기 위해 상호연결 회로의 제어 회로(138)에 의해 사용될 수 있다. 가중치는 각각의 큐에 할당되고, 가중치는 큐에 할당된 대역폭의 양을 제어한다.
예컨대, 메모리 제어기에서의 제어 파라미터들은 절대적인 대역폭 제어들 및 포트 중재 가중치들을 포함한다. 메모리 제어기는 다수의 포트들을 가질 수 있으며, 각각의 포트에 대해, 메모리 제어기는 상이한 타입들 및 클래스들의 메모리 트랜잭션들에 대해 다수의 큐들을 가질 수 있다. 각각의 타입 또는 클래스의 메모리 트랜잭션은 연관된 절대적인 대역폭 파라미터를 가질 수 있으며, 제어 회로(140)는 각각의 포트에서의 상이한 큐들의 절대적인 대역폭 파라미터들에 따라 메모리 트랜잭션들을 제한한다. 포트들 사이에서와 같이, 제어 회로는 연관된 가중치들에 비례하여 포트들로부터 메모리 트랜잭션들을 선택하기 위해 포트 중재 가중치들을 사용한다.
예시적인 시스템(100)에서, 디바이스 정보 데이터베이스(142)는 시스템 내의 컴포넌트들에 대한 원하는 QoS 메트릭들을 특정한다. 요청기 회로들(106 내지 108 및 110 내지 112) 각각은 그 요청기 회로로부터의 메모리 트랜잭션들의 최대 레이턴시를 특정하는 연관된 QoS 메트릭을 가질 수 있다. 예컨대, 모니터 회로(118)에 의해 리포팅된 레이턴시 메트릭이 최대 레이턴시보다 크다고 QM이 결정하면, QM은 더 큰 부분의 이용가능한 대역폭을 요청 회로(106)에 할당하기 위해 다른 요청 회로들(108 및 110 내지 112) 중 하나 이상의 요청 회로들의 제어 파라미터들을 조정할 수 있다.
디바이스 정보 데이터베이스는 각각의 트래픽 타입 또는 트래픽 클래스에 대한 대역폭 할당을 추가로 특정할 수 있다. 예컨대, 상이한 트래픽 타입들은 버스티(bursty) 및 균일성을 포함하며, 상이한 트래픽 클래스들은 높은 우선순위 판독, 등시성(isochronous) 판독, 베스트 에포트(best effort) 판독, 등시성 기입 및 베스트 에포트 기입을 포함한다. QoS 프로파일은 상이한 트래픽 타입들 및 클래스들에 대한 상이한 대역폭 할당들을 특정할 수 있다.
동작 동안, QM(116)은, 요청기 회로들이 메모리 요청들을 메모리 제어기(104)에 활성적으로 송신하고 있는 동안, 요청기 회로들(106 내지 108 및 110 내지 112)로부터 개개의 데이터 레이트 메트릭들 및 레이턴시 메트릭들을 주기적으로 판독한다. QM 또한, 메모리 제어기가 메모리 요청들을 프로세싱하고 있는 동안 메모리 제어기로부터 데이터 레이트 메트릭, 대역폭 이용도 메트릭, 및 유휴 시간 메트릭을 주기적으로 판독한다. 요청기 회로들이 메모리 트랜잭션들을 활성적으로 송신하고 있는 동안, QM은 개개의 데이터 레이트 메트릭들, 레이턴시 메트릭들, 대역폭 이용도, 및 유휴 시간 메트릭이 디바이스 정보 데이터베이스(142)로부터의 QoS 프로파일의 메트릭들을 만족시키는지 여부를 결정한다. QoS 프로파일이 만족되지 않으면, QM은 요청기 회로들, 상호연결 회로, 및/또는 메모리 제어기의 하나 이상의 제어 파라미터들의 값(들)을 동적으로 변화시킨다.
제어 파라미터들은 즉시(on the fly) 변화될 수 있으며, 새로운 값(들)이 데이터 흐름을 인터럽트(interrupt)하지 않는 방식으로 효력을 나타낸다. 예컨대, 요청 간격을 변화시키기 위해, 제어 파라미터의 새로운 값은 QM에 의해 요청기 회로의 적절한 레지스터에 기입될 수 있으며, 요청 디바이스의 제어 회로는 다음 요청 간격 경계 상에서 새로운 값을 판독할 것이다. 유사하게, 라운드 로빈 가중치들은 QM에 의해 메모리 제어기의 레지스터들에 기입될 수 있으며, 메모리 제어기의 중재 상태 머신은 매 조절 간격마다 가중치들을 복사한다. 요청기 회로들, 상호연결 회로, 및 메모리 제어기는, 큐잉된 트랜잭션들을 요청 또는 중재하기 위한 판단이 이루어질 때마다 새로운 제어 파라미터 값들을 판독한다. QM과 요청기 회로들, 상호연결 회로, 및 메모리 제어기 사이의 제어 시그널링은 트랜지션들 동안 부분적인 또는 일치되지 않은 값들의 사용을 막는다.
도 2는 QoS 메트릭들을 모니터링하고 QoS 제어 파라미터들의 값들을 조정하는 예시적인 프로세스의 흐름도를 도시한다. 블록(202)에서, QM(116)은 요청기 회로들(106 내지 108), 상호연결 회로(114), 및 메모리 제어기(104)의 제어 파라미터들에서 초기 값들을 세팅한다. 초기 값들은 다른 시스템들에 대한 경험들에 기반하여 근사될 수 있다. QM은 시간에 걸쳐, 원하는 QoS를 달성하는 값들로 제어 파라미터들의 값들을 적응시킬 것이다.
QM은 QoS를 주기적으로 평가하고, 그에 따라 제어 파라미터들 중 하나 이상의 제어 파라미터들의 값(들)을 조정한다. 블록(204)에서, QM은 프로그래밍된 시간 간격 동안 대기하고, 블록(206)에서, QM은 요청기 회로들로부터 성능 메트릭들을 판독한다. 요청기 회로들의 성능 메트릭들은 개개의 데이터 레이트들 및 레이턴시들을 포함할 수 있다. 블록(208)에서, QM은 메모리 제어기로부터 성능 메트릭들을 판독한다. 메모리 제어기의 성능 메트릭들은 총 데이터 레이트, 대역폭 이용도, 및 유휴 시간을 포함할 수 있다.
블록(210)에서, QM은 디바이스 정보 데이터베이스로부터의 QoS 메트릭 및/또는 QoS 프로파일과 성능 메트릭들을 비교한다. 성능 메트릭들이 QoS 메트릭 및/또는 QoS 프로파일을 만족시키면, 프로세스는 블록(204)으로 복귀하고, 위에서 설명된 바와 같은 프로세싱을 계속한다. 성능 메트릭들이 QoS 메트릭 및/또는 QoS 프로파일을 만족시키지 않으면, QM은 블록(212)에서 하나 이상의 제어 파라미터들의 값(들)을 변화시킨다. 예컨대, QM은 요청 회로들 중 하나 이상의 요청 회로들의 요청 간격 및/또는 아웃스탠딩 트랜잭션 제한 제어 파라미터들을 변화시키고, 그리고/또는 상호연결 회로의 라운드 로빈 가중치들을 변화시키며, 그리고/또는 메모리 제어기에 의해 사용되는 데이터 레이트 제한 및/또는 라운드 로빈 가중치들을 변화시킬 수 있다. 메모리 제어기의 유휴 시간이 임계치보다 크면, QM은 요청기 회로들 중 하나 이상의 요청기 회로들에 대한 요청 간격을 감소시킬 수 있다.
제어 파라미터들의 값들을 조정하기 위한 예시적인 접근법에서, 관측된 QoS가 점진적인 조정을 통해 원하는 QoS로 수렴되도록 값들을 조정하기 위해 네거티브 피드백이 사용된다. 에러 값은 원하는 값과 관측된 값 사이의 차이이며, QM은 에러 값의 일부(인식된 방법들에 의해 수학적으로-도출될 수 있음)를 조정 또는 보정 값으로 사용하고, 이 값에 의해, 제어 파라미터들 중 하나 이상의 제어 파라미터들의 값(들)이 조정된다.
QM과 요청기 회로들, 상호연결 회로, 및 메모리 제어기 사이의 제어 시그널링은 트랜지션들 동안 제어 파라미터들의 부분적인 또는 일치되지 않은 값들의 사용을 막는다. 예컨대, QM 및 컴포넌트들은 파라미터 값들의 변화들의 개시 및 완료를 시그널링하기 위해 핸드쉐이크(handshake) 메커니즘을 이용할 수 있다.
도 3은 메모리 트랜잭션들을 발행할 시에 요청 회로의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다. 블록(302)에서, 제어 회로는 메모리 트랜잭션을 발행하는 각각의 반복의 시작 시에, 제어 파라미터들의 값들을 판독한다. 각각의 반복에 대한 제어 파라미터들의 값들을 판독하는 것은 QM에 의한 제어 파라미터들에 대한 적응적 및 동적 변화들을 인식한다. QM과 요청기 회로들의 제어 회로들 사이의 제어 시그널링은 트랜지션들 동안 부분적인 또는 일치되지 않은 값들의 사용을 막는다.
블록(304)에서, 제어 회로는 요청 회로로부터, 메모리 제어기에 발행할 메모리 트랜잭션을 수신한다. 블록(306)에서, 제어 회로는, 요청 간격 파라미터에 의해 특정된 시간의 양이 경과되지 않았다면 대기한다. 요청 간격은, 제어 회로가 하나의 메모리 트랜잭션의 발행과 다음 메모리 트랜잭션의 발행 사이에서 대기할 시간 양을 특정한다.
블록(308)에서, 제어 회로는, 아웃스탠딩 트랜잭션들의 수가 아웃스탠딩 트랜잭션 제한 제어 파라미터보다 크거나 그와 동일하면 대기한다. 제어 회로는, 아웃스탠딩 트랜잭션들의 수가 아웃스탠딩 트랜잭션 제한 제어 파라미터보다 작을 때까지 대기한다.
블록(310)에서, 제어 회로는 메모리 트랜잭션을 송신하고, 아웃스탠딩 트랜잭션들의 카운트를 증분시키며, 요청 간격 타이머를 리세팅한다. 블록(312)에서, 메모리 트랜잭션의 완료에 대한 응답으로, 제어 회로는 아웃스탠딩 트랜잭션들의 카운트를 감분시키고, 위에서 설명된 바와 같은 블록(302)으로 프로세스를 복귀시킨다.
도 4는 메모리 트랜잭션들을 중재할 시에 상호연결 회로의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다. 상호연결 회로는 요청기 회로들에 각각 연결되는 다수의 입력 포트들을 갖는다. 블록(402)에서, 상호연결부는 각각의 입력 포트에서 트래픽 클래스 또는 가상 채널에 의해 메모리 트랜잭션들을 큐잉한다.
큐들로부터의 메모리 트랜잭션들을 중재하는 각각의 반복의 시작 시에, 블록(404)에서, 메모리 트랜잭션들이 아웃스탠딩, 즉 완료되지 않은 동안, QM이 제어 파라미터들(라운드 로빈 가중치들)의 값들을 변화시킬 수 있으므로, 상호연결 회로는 파라미터들의 값들을 판독한다. QM과 상호연결 회로의 제어 회로 사이의 제어 시그널링은 트랜지션들 동안 부분적인 또는 일치되지 않은 값들의 사용을 막는다.
블록(406)에서, 상호연결 회로의 제어 회로는 트래픽 클래스들 또는 가상 채널들과 연관된 라운드 로빈 가중치들을 사용하여 각각의 포트의 큐들 사이를 중재한다. 가중된 라운드 로빈 중재는 큐들, 트래픽 클래스들, 및/또는 가상 채널들과 연관된 가중치들에 기반하여 큐들로부터 메모리 트랜잭션들을 선택할 수 있다. 블록(408)에서, 제어 회로는 포트들과 연관된 라운드 로빈 가중치들에 따라 포트들로부터 선택된 트랜잭션들 사이를 중재한다. 메모리 제어기로 송신할 메모리 트랜잭션의 선택 이후, 상호연결 회로의 제어 회로는 위에서 설명된 바와 같은 블록(404)으로 복귀한다.
도 5는 메모리 트랜잭션들을 중재할 시에 메모리 제어기의 제어 회로에 의해 수행되는 예시적인 프로세스의 흐름도를 도시한다. 블록(502)에서, 메모리 제어기의 제어 회로는 메모리 트랜잭션들을 중재하기 위한 제어 파라미터들의 값들을 판독한다. QM과 메모리 제어기 사이의 제어 시그널링은 트랜지션들 동안 부분적인 또는 일치되지 않은 값들의 사용을 막는다.
메모리 제어기의 각각의 입력 포트에서, 제어 회로는 블록(504)에서, 트래픽 클래스들/가상 채널들에 대한 절대적인 대역폭 제한들을 특정하는 제어 파라미터들의 값들에 따라 인입 트랜잭션들을 조절한다. 메모리 제어기는 특정한 트래픽 클래스/가상 채널의 메모리 트랜잭션들이 그 포트에서 트래픽 클래스/가상 채널에 대한 특정된 절대적인 대역폭 제한을 초과하게 허용하지 않는다.
블록(506)에서, 메모리 제어기의 제어 회로는 메모리 트랜잭션들을 선택할 시에 포트들 사이를 중재한다. 포트 중재는 제어 파라미터들의 값들에 따른 라운드 로빈 또는 가중된 라운드 로빈일 수 있다. 라운드 로빈 가중치들의 값들은 포트들에 걸친 대역폭의 원하는 할당을 강제(enforce)한다. 블록(508)에서, 선택된 메모리 트랜잭션들은 트래픽 클래스/가상 채널에 의해 큐잉될 수 있다. 블록(510)에서, 제어 회로는 큐들 사이를 중재하고(라운드 로빈 또는 가중된 라운드 로빈), 트랜잭션들을 메모리에 제출하기 위해 단일의 선입-선출 큐에 트랜잭션들을 배치한다.
도 6은 개시된 회로망에 따라 구성될 수 있는 예시적인 프로그래밍가능 IC(602)를 도시한다. 프로그래밍가능 IC는 또한, 프로세서 서브시스템(610) 및 프로그래밍가능 로직 서브시스템(630)을 포함하는 시스템 온 칩(SOC)으로 지칭될 수 있다. 프로세서 서브시스템(610)은 사용자 프로그램의 실행을 통해 사용자 설계의 소프트웨어 부분을 구현하도록 프로그래밍될 수 있다. 프로그램은 구성 데이터 스트림의 일부로서 특정될 수 있거나, 또는 온-칩 또는 오프-칩 데이터 저장 디바이스로부터 리트리브(retrieve)될 수 있다. 프로세서 서브시스템(610)은 하나 이상의 소프트웨어 프로그램들을 실행하기 위한 다양한 회로들(612, 614, 616, 및 618)을 포함할 수 있다. 회로들(612, 614, 616, 및 618)은, 예컨대 하나 이상의 프로세서 코어들, 부동 소수점 유닛(FPU)들, 인터럽트 프로세싱 유닛, 온 칩-메모리, 메모리 캐시들, 및/또는 캐시 코히런트(coherent) 상호연결부를 포함할 수 있다.
프로그래밍가능 IC(602)의 프로그래밍가능 로직 서브시스템(630)은 사용자 설계의 하드웨어 부분을 구현하도록 프로그래밍될 수 있다. 예컨대, 프로그래밍가능 로직 서브시스템은, 구성 데이터 스트림에서 특정된 회로들의 세트를 구현하도록 프로그래밍될 수 있는 다수의 프로그래밍가능 리소스들(632)을 포함할 수 있다. 프로그래밍가능 리소스들(632)은, 예컨대 프로그래밍가능 상호연결 회로들, 프로그래밍가능 로직 회로들, 및 구성 메모리 셀들을 포함한다. 프로그래밍가능 로직은, 예컨대, 기능 생성기들, 레지스터들, 산술 로직 등을 포함할 수 있는 프로그래밍가능 엘리먼트들을 사용하여 사용자 설계의 로직을 구현한다. 프로그래밍가능 상호연결 회로들은 프로그래밍가능 상호연결 포인트(PIP)들에 의해 상호연결된 다양한 길이들의 많은 수의 상호연결 라인들을 포함할 수 있다.
프로그래밍가능 리소스들(632)은, 프로그래밍가능 상호연결 회로들 및 프로그래밍가능 로직 회로들이 어떻게 구성되는지를 정의하는 구성 데이터 스트림을 구성 메모리 셀들에 로딩함으로써 프로그래밍될 수 있다. 예컨대, 구성가능 래치에 대한 구성 메모리 셀을 제1 값으로 세팅하는 것은 단일-에지-구동 래치로서 동작하도록 구성가능 래치에게 지시할 수 있다. 구성 메모리 셀을 제2 값으로 세팅하는 것은 더블-에지-구동 래치로서 동작하도록 구성가능 래치에게 지시할 수 있다. 이어서, 개별 메모리 셀들의 집합 상태들은 프로그래밍가능 리소스들(632)의 기능을 결정한다. 구성 데이터는 메모리로부터(예컨대, 외부 PROM으로부터) 판독되거나 또는 외부 디바이스에 의해 프로그래밍가능 IC(602)로 기입될 수 있다. 일부 구현들에서, 프로그래밍가능 로직 서브시스템(630)에 포함된 구성 제어기(634)는, 프로그래밍가능 IC에 커플링된 비-휘발성 메모리로부터 구성 데이터를 리트리브하고 구성 데이터를 구성 메모리 셀들로 로딩함으로써, 프로그래밍가능 IC를 파워 온(power on)하는 것에 대한 응답으로, 프로그래밍가능 리소스들을 프로그래밍할 수 있다. 일부 다른 구현들에서, 구성 데이터는 프로세서 서브시스템(610)에 의해 실행되는 기동 프로세스에 의해 구성 메모리 셀들로 로딩될 수 있다.
프로그래밍가능 IC(602)는 프로그래밍가능 로직 서브시스템(630) 내에 구현된 회로망과 프로세서 서브시스템(610)을 상호연결시키기 위한 다양한 회로들을 포함할 수 있다. 이러한 예에서, 프로그래밍가능 IC(602)는 프로세서 서브시스템(610)의 다양한 데이터 포트들과 프로그래밍가능 로직 서브시스템(630) 사이에 데이터 신호들을 라우팅할 수 있는 코어 스위치(626)를 포함한다. 코어 스위치(626)는 또한, 프로그래밍가능 로직 또는 프로세싱 서브시스템들(610 및 630) 중 어느 하나와 프로그래밍가능 IC의 다양한 다른 회로들, 이를테면 내부 데이터 버스 사이에 데이터 신호들을 라우팅할 수 있다. 대안적으로 또는 부가적으로, 프로세서 서브시스템(610)은 프로그래밍가능 로직 서브시스템와 직접 연결되어 코어 스위치(626)를 우회하기 위한 인터페이스를 포함할 수 있다. 그러한 인터페이스는, 예컨대 ARM에 의해 공개된 바와 같은 AMBA AXI 프로토콜 규격(AXI)을 사용하여 구현될 수 있다.
일부 구현들에서, 프로세서 서브시스템(610) 및 프로그래밍가능 로직 서브시스템(630)은 또한, 메모리 제어기(621)를 통해 온-칩 메모리(622) 또는 오프-칩 메모리(도시되지 않음)의 메모리 위치들을 판독하거나 또는 그 메모리 위치들에 기입할 수 있다. 메모리 제어기(621)는 16비트인지, 32비트인지, ECC를 갖는 16비트인지에 관계없이, DDR(Dual Data Rate) 2, DDR3, LP(Low Power) DDR2 타입들의 메모리 등을 포함하는(그러나 이에 제한되지 않음) 하나 이상의 상이한 타입들의 메모리 회로들과 통신하도록 구현될 수 있다. 메모리 제어기(621)가 통신할 수 있는 상이한 메모리 타입들의 리스트는 예시의 목적들을 위해서만 제공되며, 제한으로서 또는 총망라한 것으로서 의도되지 않는다. 도 6에 도시된 바와 같이, 프로그래밍가능 IC(602)는 특정 메모리 위치들에 액세스하기 위해, 서브시스템들(610 및 630)에 의해 사용되는 가상 메모리 어드레스들을 메모리 제어기(621)에 의해 사용되는 물리적 메모리 어드레스들로 변환하도록 메모리 관리 유닛(620) 및 변환 색인 버퍼(translation look-aside buffer)(624)를 포함할 수 있다.
프로그래밍가능 IC는 외부 회로들과의 데이터의 통신을 위한 입력/출력(I/O) 서브시스템(650)을 포함할 수 있다. I/O 서브시스템(650)은, 예컨대 플래시 메모리 타입 I/O 디바이스들, 더 높은 성능 I/O 디바이스들, 더 낮은 성능 인터페이스들, 디버깅 I/O 디바이스들, 및/또는 RAM I/O 디바이스들을 포함하는 다양한 타입들의 I/O 디바이스들 또는 인터페이스들을 포함할 수 있다.
I/O 서브시스템(650)은 660A 및 660B로 예시된 하나 이상의 플래시 메모리 인터페이스들(660)을 포함할 수 있다. 예컨대, 플래시 메모리 인터페이스들(660) 중 하나 이상은 4비트 통신을 위해 구성된 QSPI(Quad-Serial Peripheral Interface)로 구현될 수 있다. 플래시 메모리 인터페이스들(660) 중 하나 이상은 병렬 8비트 NOR/SRAM 타입의 인터페이스로 구현될 수 있다. 플래시 메모리 인터페이스들(660) 중 하나 이상은 8비트 및/또는 16비트 통신을 위해 구성된 NAND 인터페이스로 구현될 수 있다. 설명된 특정한 인터페이스들이 제한이 아니라 예시의 목적들을 위해 제공된다는 것이 인식되어야 한다. 상이한 비트 폭들을 갖는 다른 인터페이스들이 사용될 수 있다.
I/O 서브시스템(650)은 플래시 메모리 인터페이스들(660)보다 더 높은 레벨의 성능을 제공하는 하나 이상의 인터페이스들(662)을 포함할 수 있다. 인터페이스들(662A 내지 662C) 각각은 DMA 제어기(664A 내지 664C)에 각각 커플링될 수 있다. 예컨대, 인터페이스들(662) 중 하나 이상은 USB(Universal Serial Bus) 타입의 인터페이스로 구현될 수 있다. 인터페이스들(662) 중 하나 이상은 기가비트 이더넷 타입의 인터페이스로 구현될 수 있다. 인터페이스들(662) 중 하나 이상은 SD(Secure Digital) 타입의 인터페이스로 구현될 수 있다.
I/O 서브시스템(650)은 또한, 인터페이스들(662)보다 더 낮은 레벨의 성능을 제공하는 하나 이상의 인터페이스들(666), 이를테면 인터페이스들(666A 내지 666D)을 포함할 수 있다. 예컨대, 인터페이스들(666) 중 하나 이상은 GPIO(General Purpose I/O) 타입의 인터페이스로 구현될 수 있다. 인터페이스들(666) 중 하나 이상은 UART(Universal Asynchronous Receiver/Transmitter) 타입의 인터페이스로 구현될 수 있다. 인터페이스들(666) 중 하나 이상은 SPI(Serial Peripheral Interface) 버스 타입의 인터페이스의 형태로 구현될 수 있다. 인터페이스들(666) 중 하나 이상은 CAN(Controller-Area-Network) 타입의 인터페이스 및/또는 I2C 타입의 인터페이스의 형태로 구현될 수 있다. 인터페이스들(666) 중 하나 이상은 또한 타이머 타입의 인터페이스의 형태로 구현될 수 있다.
I/O 서브시스템(650)은 하나 이상의 디버그 인터페이스들(668), 이를테면 프로세서 JTAG(PJTAG) 인터페이스(668A) 및 트레이스(trace) 인터페이스(668B)를 포함할 수 있다. PJTAG 인터페이스(668A)는 프로그래밍가능 IC(602)에 대한 외부 디버그 인터페이스를 제공할 수 있다. 트레이스 인터페이스(668B)는 프로세서 서브시스템(610) 또는 프로그래밍가능 로직 서브시스템(630)으로부터 디버그, 예컨대 트레이스 정보를 수신하기 위한 포트를 제공할 수 있다.
도시된 바와 같이, 인터페이스들(660, 662, 666, 및 668) 각각은 멀티플렉서(670)에 커플링될 수 있다. 멀티플렉서(670)는 프로그래밍가능 IC(602)의 외부 핀들, 예컨대 패키지(그 내에 프로그래밍가능 IC(602)가 배치됨)의 볼(ball)들에 직접 라우팅되거나 커플링될 수 있는 복수의 출력들을 제공한다. 예컨대, 프로그래밍가능 IC(602)의 I/O 핀들은 인터페이스들(660, 662, 666, 및 668) 사이에서 공유될 수 있다. 사용자는, 인터페이스들(660 내지 668) 중 어느 것이 사용되고 그에 따라 멀티플렉서(670)를 통해 프로그래밍가능 IC(602)의 I/O 핀들에 커플링될지를 선택하도록 구성 데이터 스트림을 통해 멀티플렉서(670)를 구성할 수 있다. I/O 서브시스템(650)은 또한, 인터페이스들(662 내지 668)을 프로그래밍가능 로직 서브시스템의 프로그래밍가능 로직 회로들에 연결시키기 위한 FMIO(fabric multiplexer I/O) 인터페이스(도시되지 않음)를 포함할 수 있다. 부가적으로 또는 대안적으로, 프로그래밍가능 로직 서브시스템(630)은 프로그래밍가능 로직 내에 하나 이상의 I/O 회로들을 구현하도록 구성될 수 있다. 일부 구현들에서, 프로그래밍가능 IC(602)는 또한 전력 및/또는 안전 관리를 위한 다양한 회로들을 갖는 서브시스템(640)을 포함할 수 있다. 예컨대, 서브시스템(640)은 프로그래밍가능 IC(602)의 다양한 서브시스템들에 전력공급하는 데 사용되는 하나 이상의 전압 도메인들을 모니터링 및 유지하도록 구성된 전력 관리 유닛(646)을 포함할 수 있다. 일부 구현들에서, 전력 관리 유닛(646)은, 사용중인 서브시스템들로의 전력을 디스에이블링시키지 않으면서 전력 소비를 감소시키기 위해, 유휴일 경우 개별 서브시스템들의 전력을 디스에이블링시킬 수 있다.
서브시스템(640)은 또한, 정확한 동작을 보장하기 위해 서브시스템들의 상태를 모니터링하기 위한 안전 회로들을 포함할 수 있다. 예컨대, 서브시스템(640)은 (예컨대, 상태 레지스터들(644)에 표시된 바와 같이) 다양한 서브시스템들의 상태를 모니터링하도록 구성된 하나 이상의 실시간 프로세서들(642)을 포함할 수 있다. 실시간 프로세서들(642)은 에러들을 검출하는 것에 대한 응답으로 다수의 태스크들을 수행하도록 구성될 수 있다. 예컨대, 일부 에러들의 경우, 실시간 프로세서들(642)은 에러를 검출하는 것에 대한 응답으로 경고를 생성할 수 있다. 다른 예로서, 실시간 프로세서들(642)은 동작을 보정하도록 서브시스템을 복원하려고 시도하기 위해 서브시스템을 리세팅할 수 있다. 서브시스템(640)은 다양한 서브시스템들을 상호연결시키는 데 사용될 수 있는 스위치 네트워크(648)를 포함한다. 예컨대, 스위치 네트워크(648)는 다양한 서브시스템들(610, 630, 및 640)을 I/O 서브시스템(650)의 다양한 인터페이스들에 연결시키도록 구성될 수 있다. 일부 애플리케이션들에서, 스위치 네트워크(648)는 또한, 모니터링될 서브시스템들로부터 실시간 프로세서들(642)을 격리시키는 데 사용될 수 있다. 그러한 격리는, 실시간 프로세서들(642)이 다른 서브시스템들에서 발생하는 에러들에 의해 영향을 받지 않는 것을 보장하도록 특정한 애플리케이션 표준들(예컨대, IEC-61508 SIL3 또는 ISO-26262 표준들)에 의해 요구될 수 있다.
일부 경우들에서, 양상들 및 특징들이 개별 도면들에서 설명될 수 있지만, 결합이 명시적으로 도시되지 않거나 또는 조합으로서 명시적으로 설명되지 않더라도, 하나의 도면으로부터의 특징들이 다른 도면의 특징들과 조합될 수 있음을 인식할 것이다.
일 예에서, 메모리 트랜잭션들을 서비스할 시에 서비스 품질을 제어하는 방법이 제공된다. 그러한 방법은, 시스템 온 칩(SOC) 상에 배치된 서비스 품질 관리(QM) 회로에 의해, SOC 상에 배치된 복수의 요청기 회로들이 메모리 트랜잭션들을 SOC 상의 메모리 제어기에 활성적으로 송신하고 있을 수 있는 동안, 복수의 요청기 회로들로부터 개개의 제1 데이터 레이트 메트릭들 및 개개의 레이턴시 메트릭들을 주기적으로 판독하는 단계; 메모리 제어기가 메모리 트랜잭션들을 프로세싱하고 있는 동안, QM 회로에 의해 메모리 제어기로부터 제2 데이터 레이트 메트릭을 주기적으로 판독하는 단계; 및 복수의 요청기 회로들이 메모리 트랜잭션들을 메모리 제어기에 활성적으로 송신하고 있을 수 있는 동안, QM 회로에 의해 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, QM 회로에 의해 복수의 요청기 회로들 및 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 동적으로 변화시키는 단계를 포함할 수 있다.
일부 그러한 방법은, 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, 복수의 요청기 회로들을 메모리 제어기에 커플링시키는 상호연결 회로의 제어 파라미터의 값을 변화시키는 단계를 더 포함할 수 있다.
일부 그러한 방법은, 메모리 제어기가 메모리 트랜잭션들을 프로세싱하고 있을 때 메모리 제어기로부터 유휴 시간 메트릭을 주기적으로 판독하는 단계; 및 유휴 시간 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 단계를 더 포함할 수 있다.
일부 그러한 방법에서, 결정하는 단계는, 제2 데이터 레이트 메트릭 및 메모리 제어기의 대역폭 등급(rating)에 기반하여 이용도 메트릭을 결정하는 단계; 및 이용도 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 단계를 포함한다.
일부 그러한 방법에서, 주기적으로 판독하는 단계는, QM 회로에 의해 메모리 제어기의 대역폭 이용도 메트릭을 주기적으로 판독하는 단계를 포함하고; 변화시키는 단계는, 대역폭 이용도 메트릭이 임계 대역폭 이용도보다 크다고 결정하는 것에 대한 응답으로, 복수의 요청기 회로들 및 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 변화시키는 단계를 포함할 수 있다.
일부 그러한 방법에서, 변화시키는 단계는, 복수의 요청기 회로들 중 하나 이상과 연관된 하나 이상의 요청 간격들의 하나 이상의 개개의 값들을 변화시키는 단계를 포함할 수 있다.
일부 그러한 방법에서, 변화시키는 단계는, 복수의 요청기 회로들 중 하나 이상과 연관된 하나 이상의 아웃스탠딩 트랜잭션 제한들의 하나 이상의 개개의 값들을 변화시키는 단계를 포함할 수 있다.
일부 그러한 방법에서, 변화시키는 단계는, 복수의 요청기 회로들을 메모리 제어기에 커플링시키는 상호연결 회로 상의 하나 이상의 포트들과 연관된 하나 이상의 라운드 로빈 가중치들의 하나 이상의 개개의 값들을 변화시키는 단계를 포함할 수 있다.
일부 그러한 방법에서, 변화시키는 단계는, 메모리 제어기의 대역폭 제어의 값을 변화시키는 단계를 포함할 수 있다.
일부 그러한 방법에서, 변화시키는 단계는, 메모리 제어기의 포트들과 연관된 하나 이상의 라운드 로빈 가중치들의 하나 이상의 값들을 변화시키는 단계를 포함할 수 있다.
다른 예에서, 시스템이 제공될 수 있다. 그러한 시스템은, 메모리 제어기; 메모리 제어기에 커플링되며, 메모리 액세스 트랜잭션들을 메모리 제어기에 송신하도록 구성된 복수의 요청기 회로들; 및 메모리 제어기 및 요청기 회로들에 커플링된 서비스 품질 관리(QM) 회로를 포함할 수 있으며, 여기서 QM 회로는, 복수의 요청기 회로들이 메모리 트랜잭션들을 메모리 제어기에 활성적으로 송신하고 있을 수 있는 동안, 복수의 요청기 회로들로부터 개개의 제1 데이터 레이트 메트릭들 및 개개의 레이턴시 메트릭들을 주기적으로 판독(206)하고; 메모리 제어기가 메모리 트랜잭션들을 프로세싱하고 있는 동안, 메모리 제어기로부터 제2 데이터 레이트 메트릭을 주기적으로 판독(208)하며; 그리고 복수의 요청기 회로들이 메모리 트랜잭션들을 메모리 제어기에 활성적으로 송신하고 있는 동안, 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, 복수의 요청기 회로들 및 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 동적으로 변화시키도록 구성된다.
일부 그러한 시스템에서, QM 회로는, 개개의 제1 데이터 레이트 메트릭들, 개개의 레이턴시 메트릭들, 및 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, 복수의 요청기 회로들을 메모리 제어기에 커플링시키는 상호연결 회로의 제어 파라미터의 값을 변화시키도록 추가로 구성된다.
일부 그러한 시스템에서, QM 회로는, 메모리 제어기가 메모리 트랜잭션들을 프로세싱하고 있을 때 메모리 제어기로부터 유휴 시간 메트릭을 주기적으로 판독하고; 그리고 유휴 시간 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하도록 추가로 구성된다.
일부 그러한 시스템에서, QM 회로는, 제2 데이터 레이트 메트릭 및 메모리 제어기의 대역폭 등급에 기반하여 이용도 메트릭을 결정하고; 그리고 이용도 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하도록 추가로 구성된다.
일부 그러한 시스템에서, QM 회로는, 메모리 제어기의 대역폭 이용도 메트릭을 주기적으로 판독하고; 그리고 대역폭 이용도 메트릭이 임계 대역폭 이용도보다 크다고 결정하는 것에 대한 응답으로, 복수의 요청기 회로들 및 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 변화시키도록 추가로 구성될 수 있다.
일부 그러한 시스템에서, QM 회로는, 복수의 요청기 회로들 중 하나 이상과 연관된 하나 이상의 요청 간격들의 하나 이상의 개개의 값들을 변화시키도록 추가로 구성될 수 있다.
일부 그러한 시스템에서, QM 회로는, 복수의 요청기 회로들 중 하나 이상과 연관된 하나 이상의 아웃스탠딩 트랜잭션 제한들의 하나 이상의 개개의 값들을 변화시키도록 추가로 구성될 수 있다.
일부 그러한 시스템에서, QM 회로는, 복수의 요청기 회로들을 메모리 제어기에 커플링시키는 상호연결 회로 상의 하나 이상의 포트들과 연관된 하나 이상의 라운드 로빈 가중치들의 하나 이상의 개개의 값들을 변화시키도록 추가로 구성될 수 있다.
일부 그러한 시스템에서, QM 회로는, 메모리 제어기의 대역폭 제어의 값을 변화시키도록 추가로 구성될 수 있다.
일부 그러한 시스템에서, QM 회로는, 메모리 제어기의 포트들과 연관된 하나 이상의 라운드 로빈 가중치들의 하나 이상의 값들을 변화시키도록 추가로 구성될 수 있다.
개시된 방법들 및 시스템은 메모리 트래픽을 프로세싱할 시에 서비스 품질을 관리하기 위한 다양한 시스템들에 적용가능한 것으로 간주된다. 다른 양상들 및 특징들은 명세서를 고려할 시에 당업자들에게 자명할 것이다. 방법들 및 시스템은, 소프트웨어를 실행하도록 구성된 하나 이상의 프로세서들, 주문형 집적 회로(ASIC), 또는 프로그래밍가능 로직 디바이스 상의 로직으로서 구현될 수 있다. 명세서 및 도면들은 단지 예들로서만 고려되며, 본 발명의 실제 범위는 다음의 청구항들에 의해 표시된다는 것이 의도된다.
Claims (15)
- 메모리 트랜잭션들을 서비스할 시에 서비스 품질을 제어하는 방법으로서,
시스템 온 칩(SOC) 상에 배치된 서비스 품질 관리(QM) 회로에 의해, 상기 SOC 상에 배치된 복수의 요청기 회로들이 메모리 트랜잭션(memory transaction)들을 상기 SOC 상의 메모리 제어기에 활성적으로 송신하고 있는 동안, 상기 복수의 요청기 회로들로부터 개개의 제1 데이터 레이트 메트릭들 및 개개의 레이턴시 메트릭들을 주기적으로 판독하는 단계;
상기 메모리 제어기가 상기 메모리 트랜잭션들을 프로세싱하고 있는 동안, 상기 QM 회로에 의해 상기 메모리 제어기로부터 제2 데이터 레이트 메트릭을 주기적으로 판독하는 단계; 및
상기 복수의 요청기 회로들이 상기 메모리 트랜잭션들을 상기 메모리 제어기에 활성적으로 송신하고 있는 동안, 상기 QM 회로에 의해 상기 개개의 제1 데이터 레이트 메트릭들, 상기 개개의 레이턴시 메트릭들, 및 상기 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, 상기 QM 회로에 의해 상기 복수의 요청기 회로들 및 상기 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 동적으로 변화시키는 단계를 포함하는, 서비스 품질을 제어하는 방법. - 제1항에 있어서,
상기 개개의 제1 데이터 레이트 메트릭들, 상기 개개의 레이턴시 메트릭들, 및 상기 제2 데이터 레이트 메트릭이 상기 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, 상기 복수의 요청기 회로들을 상기 메모리 제어기에 커플링시키는 상호연결 회로의 제어 파라미터의 값을 변화시키는 단계를 더 포함하는, 서비스 품질을 제어하는 방법. - 제1항 또는 제2항에 있어서,
상기 메모리 제어기가 상기 메모리 트랜잭션들을 프로세싱하고 있을 때 상기 메모리 제어기로부터 유휴 시간 메트릭을 주기적으로 판독하는 단계; 및
상기 유휴 시간 메트릭이 상기 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 단계를 더 포함하는, 서비스 품질을 제어하는 방법. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 결정하는 단계는,
상기 제2 데이터 레이트 메트릭 및 상기 메모리 제어기의 대역폭 등급(rating)에 기반하여 이용도 메트릭을 결정하는 단계; 및
상기 이용도 메트릭이 상기 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 단계를 포함하는, 서비스 품질을 제어하는 방법. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 주기적으로 판독하는 단계는, 상기 QM 회로에 의해 상기 메모리 제어기의 대역폭 이용도 메트릭을 주기적으로 판독하는 단계를 포함하고; 그리고
상기 변화시키는 단계는, 상기 대역폭 이용도 메트릭이 임계 대역폭 이용도보다 크다고 결정하는 것에 대한 응답으로, 상기 복수의 요청기 회로들 및 상기 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 변화시키는 단계를 포함하는, 서비스 품질을 제어하는 방법. - 시스템으로서,
메모리 제어기;
상기 메모리 제어기에 커플링되며, 메모리 액세스 트랜잭션들을 상기 메모리 제어기에 송신하도록 구성된 복수의 요청기 회로들; 및
상기 메모리 제어기 및 상기 요청기 회로들에 커플링된 서비스 품질 관리(QM) 회로를 포함하며,
상기 QM 회로는,
상기 복수의 요청기 회로들이 메모리 트랜잭션들을 상기 메모리 제어기에 활성적으로 송신하고 있는 동안, 상기 복수의 요청기 회로들로부터 개개의 제1 데이터 레이트 메트릭들 및 개개의 레이턴시 메트릭들을 주기적으로 판독(206)하고;
상기 메모리 제어기가 상기 메모리 트랜잭션들을 프로세싱하고 있는 동안, 상기 메모리 제어기로부터 제2 데이터 레이트 메트릭을 주기적으로 판독(208)하며; 그리고
상기 복수의 요청기 회로들이 상기 메모리 트랜잭션들을 상기 메모리 제어기에 활성적으로 송신하고 있는 동안, 상기 개개의 제1 데이터 레이트 메트릭들, 상기 개개의 레이턴시 메트릭들, 및 상기 제2 데이터 레이트 메트릭이 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, 상기 복수의 요청기 회로들 및 상기 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 동적으로 변화시키도록
구성되는, 시스템. - 제6항에 있어서,
상기 QM 회로는, 상기 개개의 제1 데이터 레이트 메트릭들, 상기 개개의 레이턴시 메트릭들, 및 상기 제2 데이터 레이트 메트릭이 상기 서비스 품질 메트릭을 만족시키지 않는다고 결정하는 것에 대한 응답으로, 상기 복수의 요청기 회로들을 상기 메모리 제어기에 커플링시키는 상호연결 회로의 제어 파라미터의 값을 변화시키도록 추가로 구성되는, 시스템. - 제6항 또는 제7항에 있어서,
상기 QM 회로는,
상기 메모리 제어기가 상기 메모리 트랜잭션들을 프로세싱하고 있을 때 상기 메모리 제어기로부터 유휴 시간 메트릭을 주기적으로 판독하고; 그리고
상기 유휴 시간 메트릭이 상기 서비스 품질 메트릭을 만족시키지 않는다고 결정하도록
추가로 구성되는, 시스템. - 제6항 내지 제8항 중 어느 한 항에 있어서,
상기 QM 회로는,
상기 제2 데이터 레이트 메트릭 및 상기 메모리 제어기의 대역폭 등급에 기반하여 이용도 메트릭을 결정하고; 그리고
상기 이용도 메트릭이 상기 서비스 품질 메트릭을 만족시키지 않는다고 결정하도록
추가로 구성되는, 시스템. - 제6항 내지 제9항 중 어느 한 항에 있어서,
상기 QM 회로는,
상기 메모리 제어기의 대역폭 이용도 메트릭을 주기적으로 판독하고; 그리고
상기 대역폭 이용도 메트릭이 임계 대역폭 이용도보다 크다고 결정하는 것에 대한 응답으로, 상기 복수의 요청기 회로들 및 상기 메모리 제어기의 하나 이상의 제어 파라미터들의 하나 이상의 개개의 값들을 변화시키도록
추가로 구성되는, 시스템. - 제6항 내지 제10항 중 어느 한 항에 있어서,
상기 QM 회로는, 상기 복수의 요청기 회로들 중 하나 이상과 연관된 하나 이상의 요청 간격들의 하나 이상의 개개의 값들을 변화시키도록 추가로 구성되는, 시스템. - 제6항 내지 제11항 중 어느 한 항에 있어서,
상기 QM 회로는, 상기 복수의 요청기 회로들 중 하나 이상과 연관된 하나 이상의 아웃스탠딩 트랜잭션 제한들의 하나 이상의 개개의 값들을 변화시키도록 추가로 구성되는, 시스템. - 제6항 내지 제12항 중 어느 한 항에 있어서,
상기 QM 회로는, 상기 복수의 요청기 회로들을 상기 메모리 제어기에 커플링시키는 상호연결 회로 상의 하나 이상의 포트들과 연관된 하나 이상의 라운드 로빈 가중치들의 하나 이상의 개개의 값들을 변화시키도록 추가로 구성되는, 시스템. - 제6항 내지 제13항 중 어느 한 항에 있어서,
상기 QM 회로는,상기 메모리 제어기의 대역폭 제어의 값을 변화시키도록 추가로 구성되는, 시스템. - 제6항 내지 제14항 중 어느 한 항에 있어서,
상기 QM 회로는, 상기 메모리 제어기의 포트들과 연관된 하나 이상의 라운드 로빈 가중치들의 하나 이상의 값들을 변화시키도록 추가로 구성되는, 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/673,220 US10481944B2 (en) | 2017-08-09 | 2017-08-09 | Adaptive quality of service control circuit |
US15/673,220 | 2017-08-09 | ||
PCT/US2018/045865 WO2019032740A1 (en) | 2017-08-09 | 2018-08-08 | ADAPTIVE SERVICE QUALITY CONTROL CIRCUIT |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200036010A true KR20200036010A (ko) | 2020-04-06 |
Family
ID=63371791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207006592A KR20200036010A (ko) | 2017-08-09 | 2018-08-08 | 적응적 서비스 품질 제어 회로 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10481944B2 (ko) |
EP (1) | EP3665574B1 (ko) |
JP (1) | JP7167130B2 (ko) |
KR (1) | KR20200036010A (ko) |
CN (1) | CN111095220B (ko) |
WO (1) | WO2019032740A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102480017B1 (ko) * | 2017-08-11 | 2022-12-21 | 삼성전자 주식회사 | 입출력 장치의 성능 및 전력소모를 조절하는 메모리 컨트롤러, 어플리케이션 프로세서 및 메모리 컨트롤러의 동작방법 |
CN107894963B (zh) * | 2017-11-27 | 2021-07-27 | 上海兆芯集成电路有限公司 | 用于系统单芯片的通信控制器与通信方法 |
US11196678B2 (en) * | 2018-10-25 | 2021-12-07 | Tesla, Inc. | QOS manager for system on a chip communications |
US11343176B2 (en) * | 2019-06-24 | 2022-05-24 | Amazon Technologies, Inc. | Interconnect address based QoS regulation |
US11513848B2 (en) * | 2020-10-05 | 2022-11-29 | Apple Inc. | Critical agent identification to modify bandwidth allocation in a virtual channel |
CN118140215A (zh) * | 2021-09-30 | 2024-06-04 | 华为技术有限公司 | 一种内存控制器和带内存控制器的数据处理系统 |
CN118502323B (zh) * | 2024-07-16 | 2024-10-11 | 杭州康吉森自动化科技有限公司 | 工业以太网数据的传输方法和fpga |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6961834B2 (en) * | 2001-10-12 | 2005-11-01 | Sonics, Inc. | Method and apparatus for scheduling of requests to dynamic random access memory device |
US6941538B2 (en) | 2002-02-22 | 2005-09-06 | Xilinx, Inc. | Method and system for integrating cores in FPGA-based system-on-chip (SoC) |
US7058921B1 (en) | 2002-02-22 | 2006-06-06 | Xilinx, Inc. | Method and system for resource allocation in FPGA-based system-on-chip (SoC) |
JP2003256358A (ja) * | 2002-02-28 | 2003-09-12 | Sony Corp | アービタ装置及び方法、並びに、リソース共有システム |
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
US6941428B2 (en) * | 2002-09-25 | 2005-09-06 | International Business Machines Corporation | Memory controller optimization |
TWI227398B (en) | 2003-04-15 | 2005-02-01 | Asustek Comp Inc | Automatic adjusting device of computer system performance |
US7007264B1 (en) | 2003-05-02 | 2006-02-28 | Xilinx, Inc. | System and method for dynamic reconfigurable computing using automated translation |
US8020163B2 (en) | 2003-06-02 | 2011-09-13 | Interuniversitair Microelektronica Centrum (Imec) | Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof |
US7665069B2 (en) * | 2003-10-31 | 2010-02-16 | Sonics, Inc. | Method and apparatus for establishing a quality of service model |
JP4635485B2 (ja) * | 2004-06-29 | 2011-02-23 | ソニー株式会社 | データ処理装置 |
JP2007041771A (ja) * | 2005-08-02 | 2007-02-15 | Matsushita Electric Ind Co Ltd | プロセススケジューリングシステム、プロセススケジューリング方法およびプログラム |
US7701902B1 (en) | 2006-03-24 | 2010-04-20 | Xilinx, Inc. | Scheduling for sharing channel access in wireless networks |
US7493439B2 (en) | 2006-08-01 | 2009-02-17 | International Business Machines Corporation | Systems and methods for providing performance monitoring in a memory system |
CN101192861B (zh) * | 2006-12-01 | 2011-11-16 | 华为技术有限公司 | 网络中调整数据速率的方法、装置及通信系统 |
CN101083560A (zh) * | 2007-07-05 | 2007-12-05 | 中兴通讯股份有限公司 | 网络服务质量的测量方法、系统及媒体网关控制器 |
GB2473505B (en) * | 2009-09-15 | 2016-09-14 | Advanced Risc Mach Ltd | A data processing apparatus and a method for setting priority levels for transactions |
US8612648B1 (en) | 2010-07-19 | 2013-12-17 | Xilinx, Inc. | Method and apparatus for implementing quality of service in a data bus interface |
KR101855399B1 (ko) * | 2011-03-24 | 2018-05-09 | 삼성전자주식회사 | 데이터 트래픽을 개선한 SoC 및 이의 동작 방법 |
KR20150106224A (ko) * | 2014-03-11 | 2015-09-21 | 삼성전자주식회사 | 시스템-온-칩 및 그의 부하 불균형 검출 방법 |
US9563369B2 (en) * | 2014-04-14 | 2017-02-07 | Microsoft Technology Licensing, Llc | Fine-grained bandwidth provisioning in a memory controller |
US20160196231A1 (en) | 2015-01-07 | 2016-07-07 | Qualcomm Incorporated | System and method for bus bandwidth management in a system on a chip |
US9894536B2 (en) * | 2015-03-10 | 2018-02-13 | Aruba Networks, Inc. | Motion-controlled device for supporting planning, deployment or operation of a wireless network |
JP6558090B2 (ja) * | 2015-06-15 | 2019-08-14 | 富士通株式会社 | ストレージ管理装置、ストレージ管理方法及びストレージ管理プログラム |
US10740270B2 (en) | 2015-06-26 | 2020-08-11 | Hewlett Packard Enterprise Development Lp | Self-tune controller |
US10956205B2 (en) * | 2017-01-03 | 2021-03-23 | Arm Limited | Data processing |
US10911366B2 (en) * | 2017-06-30 | 2021-02-02 | Intel Corporation | Technologies for balancing throughput across input ports of a multi-stage network switch |
-
2017
- 2017-08-09 US US15/673,220 patent/US10481944B2/en active Active
-
2018
- 2018-08-08 JP JP2020506921A patent/JP7167130B2/ja active Active
- 2018-08-08 KR KR1020207006592A patent/KR20200036010A/ko not_active Application Discontinuation
- 2018-08-08 EP EP18759804.0A patent/EP3665574B1/en active Active
- 2018-08-08 WO PCT/US2018/045865 patent/WO2019032740A1/en active Search and Examination
- 2018-08-08 CN CN201880059605.4A patent/CN111095220B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20190050252A1 (en) | 2019-02-14 |
WO2019032740A1 (en) | 2019-02-14 |
JP2020530621A (ja) | 2020-10-22 |
EP3665574A1 (en) | 2020-06-17 |
CN111095220B (zh) | 2023-09-26 |
JP7167130B2 (ja) | 2022-11-08 |
CN111095220A (zh) | 2020-05-01 |
EP3665574B1 (en) | 2023-03-01 |
US10481944B2 (en) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7167130B2 (ja) | 適応的なサービスの品質の制御回路 | |
US9201777B2 (en) | Quality of service support using stacked memory device with logic die | |
US9201816B2 (en) | Data processing apparatus and a method for setting priority levels for transactions | |
US10657084B1 (en) | Interrupt moderation and aggregation circuitry | |
US7769936B2 (en) | Data processing apparatus and method for arbitrating between messages routed over a communication channel | |
US7420990B2 (en) | Adaptive-allocation of I/O bandwidth using a configurable interconnect topology | |
KR101582058B1 (ko) | 고정된 우선 순위 아비터를 위한 적응 대역폭 할당 제공 | |
CN102282546B (zh) | 资源控制 | |
US20120185674A1 (en) | Extending a processor system within an integrated circuit | |
WO2012033588A2 (en) | Providing a fine-grained arbitration system | |
US20200257796A1 (en) | Mechanism for throttling untrusted interconnect agents | |
Kim et al. | Optimized I/O determinism for emerging NVM-based NVMe SSD in an enterprise system | |
US8493863B2 (en) | Hierarchical fabric control circuits | |
CN108205478B (zh) | 智能序列式小型计算机系统接口物理层功率管理 | |
US11662948B2 (en) | Norflash sharing | |
US20150304177A1 (en) | Processor management based on application performance data | |
US10705985B1 (en) | Integrated circuit with rate limiting | |
US8843671B1 (en) | Dynamic resource allocation for serial attached SCSI devices | |
JP6551049B2 (ja) | 帯域制御回路、演算処理装置、および装置の帯域制御方法 | |
JP7226084B2 (ja) | 情報処理装置 | |
US20230195658A1 (en) | Multichannel memory arbitration and interleaving scheme | |
CN118035028A (zh) | 一种用于多核处理器芯片的自适应调节QoS方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |