KR20210124381A - 표시자를 이용해 부분 데이터 전송을 가능하게 하는 시스템, 방법 및 장치 - Google Patents

표시자를 이용해 부분 데이터 전송을 가능하게 하는 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20210124381A
KR20210124381A KR1020217028381A KR20217028381A KR20210124381A KR 20210124381 A KR20210124381 A KR 20210124381A KR 1020217028381 A KR1020217028381 A KR 1020217028381A KR 20217028381 A KR20217028381 A KR 20217028381A KR 20210124381 A KR20210124381 A KR 20210124381A
Authority
KR
South Korea
Prior art keywords
data
data bus
bus
identifier
interface
Prior art date
Application number
KR1020217028381A
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 에이알엠 리미티드
Publication of KR20210124381A publication Critical patent/KR20210124381A/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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0002Serial port, e.g. RS232C
    • 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)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

상이한 데이터 버스 크기들을 갖는 다양한 세트의 블록들로 구성될 수 있는 인터페이스 기반 시스템을 위한 시스템, 장치 및 방법. 이러한 상이한 데이터 버스 크기들은 상이한 크기의 버스들 상에서 부분 데이터 전송들을 허용함으로써 최적화될 수 있다.

Description

표시자를 이용해 부분 데이터 전송을 가능하게 하는 시스템, 방법 및 장치
일부 프로토콜들은 부분 데이터를 하나의 데이터 버스로부터, 증가된 용량을 갖는 제2 데이터 버스로 전송하는 것을 제공하지 않는다. 이러한 결함은 미스매칭된 데이터 버스 크기를 갖는 시스템들을 야기할 수 있으며, 이는 데이터 버스 크기 미스매치들에 직면하는 곳뿐만 아니라 모든 상호연결 지점들에서 추가적인 병합-버퍼(merge-buffer)들을 필요로 한다. 이러한 추가적인 병합-버퍼들은 시스템에 대한 영역의 바람직하지 않은 증가 및/또는 전력 요건들의 증가를 야기한다.
첨부 도면들은 다양한 대표적인 실시예들을 보다 충분히 기술하기 위해 사용될 그리고 개시된 대표적인 실시예들 및 그들의 고유한 이점들을 더 잘 이해하기 위해 당업자에 의해 사용될 수 있는 시각적 표현들을 제공한다. 이들 도면들에서, 유사한 도면 부호들은 대응하는 요소들을 식별한다.
도 1은 인터페이스 시스템을 도시한다.
도 2는 병합-버퍼 실시예를 도시한다.
도 3은 본 명세서에 기술된 실시예를 도시한다.
도 4는 본 명세서에 기술된 또 다른 실시예를 도시한다.
도 5는 대표적인 실시예에 따른 테이블을 도시한다.
도 6은 다른 대표적인 실시예에 따른 다른 테이블을 도시한다.
본 개시내용은 많은 상이한 형태들의 실시예들로 가능하지만, 도면들에 도시되어 있으며, 본 명세서에서 특정 실시예들에서 상세히 기술될 것이고, 이때 본 개시내용은 기술된 원리들의 예로서 고려되어야 하고 도시된 그리고 기술된 특정 실시예들로 본 개시내용을 제한하도록 의도되지 않는다는 것으로 이해된다. 아래의 설명에서, 유사한 도면 부호들이 도면들의 몇몇 뷰들에서 동일한, 유사한 또는 대응하는 부분들을 기술하는 데 사용된다.
본 문헌에서, 제1 및 제2, 상부 및 하부 등과 같은 관계형 용어들은 오직 하나의 엔티티 또는 액션을 다른 엔티티 또는 액션과 구별하기 위해 사용될 수 있으며, 이러한 엔티티들 또는 액션들 사이의 이러한 임의의 실제 관계 또는 순서를 반드시 요구하거나 암시하지는 않는다. 용어들 "포함하다", "포함하는" 또는 이들의 임의의 다른 변형은 배타적이지 않은 포함을 커버하도록 의도되어, 요소들의 목록을 포함하는 프로세스, 방법, 물품, 또는 장치가 이들 요소들만을 포함하지 않고 명확하게 열거되지 않거나 그러한 프로세스, 방법, 물품, 또는 장치에 내재적인 다른 요소들을 포함할 수 있도록 한다. "…을 포함하다"에 선행되는 요소는, 더 많은 제약들 없이, 그러한 요소를 포함하는 프로세스, 방법, 물품, 또는 장치에 추가적인 동일한 요소들이 존재하는 것을 배제하지 않는다.
본 문헌 전체에 걸쳐 "일 실시예", "소정 실시예들", "일 실시예" 또는 유사한 용어들에 대한 언급은 실시예와 관련하여 기술된 특정 특징부, 구조, 또는 특성이 본 개시내용의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에 걸쳐 다양한 곳들에서 그러한 어구들의 출현들은 반드시 모두 동일한 실시예를 지칭하는 것은 아니다. 게다가, 특정한 특징부들, 구조들, 또는 특성들은 제한 없이 하나 이상의 실시예들에서 임의의 적합한 방식으로 조합될 수 있다.
본 명세서에 사용되는 바와 같이, 용어 "또는"은 포괄적인 또는 임의의 하나 또는 임의의 조합을 의미하는 것으로 해석되어야 한다. 따라서, "A, B 또는 C"는 "A; B; C; A 및 B; A 및 C; B 및 C; A, B 및 C 중 임의의 것"을 의미한다. 이러한 정의에 대한 예외는 요소들, 기능들, 단계들 또는 동작들의 조합이 일부 방식에서 본질적으로 상호 배타적일 때에만 발생할 것이다.
예시의 간단함 및 명료함을 위해, 도면 부호들이 도면들 사이에서 반복되어, 대응하는 또는 유사한 요소들을 나타낼 수 있다. 많은 상세 사항들이 본 명세서에 기술된 실시예들의 이해를 제공하기 위해 기재되어 있다. 실시예들은 이들 상세 사항들 없이 실시될 수 있다. 다른 경우들에서, 기술된 실시예들을 모호하게 하는 것을 회피하기 위해 잘 알려진 방법들, 절차들, 및 컴포넌트들은 상세히 기술되어 있지 않다. 설명은 본 명세서에 기술된 실시예들의 범주에 제한되는 것으로 고려되어서는 안 된다.
하기 용어들이 본 개시내용의 다양한 실시예들의 이러한 설명에서 사용될 수 있다.
보조의: 추가의, 보충의.
AXI: 고급 확장가능 인터페이스(Advanced e(X)tensible Interface). AXI는 ARM®에 의해 개발된 인터페이스이다.
AXID: 고급 확장가능 인터페이스(Advanced e(X)tensible Interface) 식별(Identification). AXI는 ARM®AMBA 마이크로컨트롤러 버스용으로 ARM®에 의해 개발된 인터페이스이며, 현재 Xilinx® 인코포레이티드(incorporated)와 같은 많은 회사들에 의해 사용된다.
비트(beat): AXI 버스트 내에서의 개별 데이터 전송.
블록 오프셋(Block Offset): 캐시 행(cache row) 내의 저장된 블록 데이터 내의 원하는 데이터를 특정한다. 때때로 단지 "오프셋"으로 지칭된다.
버퍼: 일반적으로 RAM 내의, 임시 저장 영역. 대부분의 버퍼의 목적은 홀딩 영역(holding area)으로서 작용하여, CPU가 데이터를 디바이스로 전송하기 전에 데이터를 조작할 수 있게 한다.
버스: 컴퓨터 내부의 컴포넌트들, 또는 컴퓨터의 모듈들 사이에서, 또는 컴퓨터들 사이에서 데이터를 전송하는 통신 메커니즘. 본 명세서에 사용되는 바와 같이, 용어 "버스"는 통신 프로토콜들을 포함한, 모든 관련 하드웨어 컴포넌트들(와이어, 광섬유 등) 및 소프트웨어를 커버한다.
캐시: CPU 메모리로도 불리는 캐시 메모리는 컴퓨터 마이크로프로세서가 정규 RAM에 액세스할 수 있는 것보다 더 빠르게 액세스할 수 있는 랜덤 액세스 메모리(RAM)이다. 이 메모리는 전형적으로 CPU 칩과 직접 통합되거나, CPU와의 별개의 버스 상호연결부를 갖는 별개의 칩 상에 배치된다.
캐시 블록: 캐시 저장을 위한 기본 단위. 다수의 바이트/워드의 데이터를 포함할 수 있다. 캐시 라인은 캐시 블록과 동일하다. 이는 캐시의 "행"과 동일하지 않음에 유의한다.
CPU: 중앙 처리 유닛; 명령어들에 의해 특정된 기본 산술, 논리, 제어 및 입력/출력(I/O) 동작들을 수행함으로써 컴퓨터 프로그램의 명령어들을 수행하는 컴퓨터 내의 전자 회로부.
실행: 컴퓨터의 기본 동작 프로세스. 컴퓨터가 그의 메모리로부터 프로그램 명령어를 검색하고, 명령어가 어떤 액션들을 지시하는지를 결정하고, 이들 액션을 수행하는 프로세스이다. 이 사이클은, 부팅부터 컴퓨터가 셧다운될 때까지 중앙 처리 유닛(CPU)에 의해 계속해서 반복된다.
흐름도: 알고리즘, 작업흐름 또는 프로세스를 표현하는 다이어그램의 유형. 흐름도는 다양한 종류의 상자들로서의 단계들 및 그들의 순서를 보여준다.
생성(generate): 하나 이상의 단계들 또는 액션들로부터 생성(produce), 생성(create) 또는 도출하는 것.
인덱스: 데이터가 입력된 캐시 세트를 설명한다.
인터페이스: 하드웨어 연결부 또는 사용자 인터페이스. 인터페이스는 또한 2개의 디바이스들이 서로 어떻게 연결되는지를 설명하는 동사(verb)로서 사용될 수 있다. 하드웨어 인터페이스는 둘 이상의 전자 디바이스들을 함께 연결시키는 데 사용된다.
마이크로아키텍처: 컴퓨터 조직, 주어진 명령어 세트 아키텍처(instruction set architecture, ISA)가 프로세서에서 구현되는 방식.
인터페이스 브리지: 2개 이상의 인터페이스들을 층에 결합시킨다. 층들은, 층들이 동일한 스위치에 결합된 것처럼 인터페이스 브리지에 의해 결합된다.
I/O: 입력/출력, 데이터 프로세싱 시스템에서 프로세서와 주변 디바이스 사이의 데이터의 전송. I/O 디바이스들은 직접 또는 개재하는 I/O 제어기들을 통해 결합될 수 있는 키보드들, 디스플레이들, 포인팅 디바이스들 등을 포함할 수 있다.
병합: 데이터 부분들을 조합하는 것.
병합 버퍼: 병합될, 또는 병합된 데이터를 저장하는 버퍼의 유형.
모듈: 하드웨어 또는 소프트웨어, 또는 하드웨어와 소프트웨어의 조합을 포함할 수 있는 프로그램 또는 디바이스의 컴포넌트 또는 부분. 소프트웨어를 포함하는 모듈에서, 소프트웨어는 하나 이상의 루틴들, 또는 서브루틴들을 포함할 수 있다. 하나 이상의 모듈들은 프로그램 및/또는 디바이스를 구성할 수 있다.
오프셋: 블록 오프셋은 때때로 간단히 "오프셋" 또는 "변위"로 지칭된다.
동작: 프로그램의 실행에서 컴퓨터에 의해 수행되는 단일 단계.
순서화 태그(ordering tag): 아이템을 설명하는 것을 돕고 그것이 브라우징 또는 검색에 의해 다시 발견될 수 있도록 하는 메타데이터의 종류.
주변기기(peripheral): 본질적 컴퓨터의 일부(즉, 메모리 및 마이크로프로세서)가 아닌, 키보드 또는 프린터와 같은, 컴퓨터 디바이스. 이들 보조 디바이스들은 전형적으로 컴퓨터에 연결되도록 의도된다.
프로토콜 브리지: 2개의 네트워크들, 예컨대 LAN(local-area network)들, 또는 이더넷(Ethernet)또는 토큰-링(Token-Ring)과 같은 동일한 프로토콜을 사용하는 동일한 LAN의 2개의 세그먼트들을 연결하는 디바이스.
레지스터: 임시 저장 영역.
소스 코드: 일반적으로 평문(plain text)으로서, 사람이 읽을 수 있는 프로그래밍 언어를 사용하여 기록된, 가능하게는 주석들을 갖는, 코드의 임의의 모음. 프로그램의 소스 코드는 특히, 대부분 소스 코드를 기록함으로써 컴퓨터에 의해 수행될 액션들을 특정하는 컴퓨터 프로그래머들의 작업을 용이하게 하도록 설계된다. 소스 코드는 종종 어셈블러 또는 컴파일러에 의해, 컴퓨터에 의해 이해되는 이진 기계 코드로 변환된다. 기계 코드는 추후 실행을 위해 저장될 수 있다. 대안적으로, 소스 코드는 해석될 수 있고, 따라서 즉시 실행될 수 있다.
태그: 데이터의 그룹에 대한 고유 식별자. 메모리의 상이한 영역들이 블록으로 매핑될 수 있기 때문에, 태그는 그들을 구별하는 데 사용된다.
인터페이스 프로토콜에서, AXI 프로토콜로서, 일반적으로 제1 버스로부터, 증가된 용량을 갖는 버스로서 또한 기술되는 더 넓은 데이터 버스인 제2 버스로, 부분 데이터를 전송하기 위한 규정은 일반적으로 없다. 이는, 미스매칭된 데이터 버스 크기들을 갖는, AXI 기반 시스템들과 같은, 인터페이스 기반 시스템들을 야기할 수 있으며, 이는 시스템이, 그러한 데이터 버스 크기 미스매치에 직면하게 되는 상호연결부 상의 모든 지점들에서 추가적인 병합-버퍼들을 사용하는 것을 의미한다. 이는 시스템에 대한 원하지 않는 추가적인 영역/전력 오버헤드를 야기한다. 본 명세서에 기술된 실시예들은 더 넓은 데이터 버스 상에서의 부분 데이터 전송(partial data transfer)들을 가능하게 하여, 시스템에 대한 영역/전력 메트릭들을 최적화한다.
충분히 복잡한 AXI 기반 시스템은 상이한 데이터 버스 크기들을 갖는 다양한 세트의 블록들로 구성될 수 있다. 이들 상이한 데이터 버스 크기들은 데이터 버스 폭 미스매치에 직면하게 되는 모든 지점에서 병합-버퍼들에 대한 필요성을 생성한다. 병합-버퍼는 데이터가 좁은 데이터 버스로부터 더 넓은 데이터 버스로 이동하고 있을 때 필요하고, 전형적으로, AXI 프로토콜은 더 넓은 데이터 버스 상에서의 부분 데이터 전송들을 지원하지 않기 때문에 데이터가 좁은 데이터 버스 상에서 잇따라(back-to-back) 도달하도록 보장되지 않는다.
도 1은 AXI 마스터(102)로서 도시된 제1 인터페이스, AXI-대-AXI 브리지(104)로서 도시된 인터페이스-대-인터페이스 브리지, 및 AXI 슬레이브(106)로서 도시된 제2 인터페이스를 포함하는 시스템(100)을 도시한다.
AXI 마스터(102)로서 도시된 제1 인터페이스는 메모리 모듈(110)을 갖는다. 메모리 모듈(110)은 하나 이상의 레지스터들(112) 및 하나 이상의 데이터 버퍼들(114)을 포함한다. 레지스터(들)(112)는 메모리 모듈(110)에 내장된, 임시 저장 영역, 또는 메모리 영역으로서 사용된다. 레지스터(들)(112)는 명령어들을 페치하고, 각각의 명령어가 실행될 때 각각의 명령어를 유지하는 데 사용될 수 있다. 레지스터(들)(112)는 메모리로부터 프로세서로 데이터를 전달하는 데 사용될 수 있다.
데이터 버퍼(114)는 AXI 마스터(102)에서 데이터를 버퍼링하는 데 사용된다. 데이터 버퍼(114) 내의 데이터는 버스(116)를 통해 수신된다.
AXI-대-AXI 브리지(104)로서 도시된 인터페이스-대-인터페이스 브리지는 메모리, 또는 저장 모듈(120)을 포함한다. 저장 모듈(120)은 하나 이상의 레지스터들(122) 및 하나 이상의 병합 버퍼들(124)을 포함한다.
AXI 슬레이브(106)로서 도시된 제2 인터페이스는 저장소, 또는 메모리 모듈(126)을 포함한다.
제2 인터페이스, AXI 슬레이브(106)는 2 ㎓ 클록을 갖고, 제1 인터페이스, AXI 마스터(102)는 1 ㎓ 클록을 갖는다. 2개의 클록들 사이의 구별은 파선(103)으로 표시된다. 레지스터(112)는 버스(118)를 통해 레지스터(122)와 통신한다. 레지스터(122)는 128을 통해 메모리 모듈(126)과 통신한다.
제1 인터페이스, AXI 마스터(102)는 64B 데이터 버스(116)를 갖고, 제2 인터페이스, AXI 슬레이브(106)는 32B 데이터 버스(130)를 갖는다. AXI-대-AXI 브리지(104)는 데이터 버스 폭 미스매치를 관리하고, 트랜잭션을 처리하기 위한 추적기를 갖는다. 도 1에 도시된 바와 같이, 버스 폭 및 클록 속도들은 비례한다. 따라서, AXI 마스터(102)는 64B 데이터 버스(116) 및 1 ㎓ 클록을 갖는 반면, AXI 슬레이브(106)는 32B 데이터 버스(130) 및 2 ㎓ 클록을 갖는다.
도 1은 AXI-대-AXI 브리지(104)가 풀(full) 판독 버퍼링을 이용하여 2개의 32B 비트(beat)(130)를 하나의 64B 비트(116) 내로 병합하는 것을 도시하는데, 그 이유는 2개의 32B 비트가 잇따라 도달하는 것이 보장되지 않기 때문이다. 이는, AXI 마스터(102)가 많은 미해결된(outstanding) 판독 트랜잭션들을 갖는 경우 영역의 관점에서 상당한 오버헤드를 초래할 수 있다.
도 2는 제1 인터페이스, AXI 마스터(202), 인터페이스-대-인터페이스 브리지(240), AXI-대-AXI 브리지(204), 및 제2 인터페이스, AXI 슬레이브(206)를 포함하는 시스템(200)을 도시한다. ReadA (ARLEN=0x0, ARSIZE=64B)(232), 및 ReadB (ARLEN=0x0, ARSIZE=64B)(234)가 도시되어 있다. AXI-대-AXI 브리지(204)는 ReadA(ARLEN=0x1, ARSIZE=32B)(236) 및 ReadB(ARLEN=0x1, ARSIZE=32B)(238)을 송신한다.
Data_A0,32B(240); Data_B0,32B(242); Data_A1,RLAST, 32B(244); Data_B1,RLAST,32B(246); RData_A0A1,RLAST,64B(250); 및 RData_B0B1,RLAST,64B(252)가 도시되어 있다. 병합-버퍼는 제1 데이터가 도착할 때(240)부터 마지막 데이터가 전달될 때까지(252) 윈도우를 커버한다.
도 2는 좁은 데이터 버스 측 상에, 예를 들어 32B 데이터 버스 상에 2개의 보류중인 판독 요청들이 있음을 도시한다. 2개의 판독들에 대한 두 번째 청크(chunk)(절반)가 도달하기 전에 첫 번째 청크가 도달하는 것이 발생할 수 있다. AXI-대-AXI 브리지(204)는, 더 넓은 데이터 버스 측(64B)이 청크들 둘 모두가 이용가능할 때에만 데이터를 수용할 수 있기 때문에, 판독의 첫 번째 청크를 저장할 필요가 있다. 이는 병합-버퍼의 사용을 필요로 한다.
예를 들어, AXI 마스터(232)가 하나의 캐시 라인 크기에 각각 해당하는 미해결된 판독 요청을 지원하는 경우(256), 이 경우에 요구되는 병합 버퍼의 크기는 64Bx256 = 128K 플롭이며, 이는 PPA의 관점에서 상당한 오버헤드이다.
본 명세서에 기술된 실시예들은, 각각의 판독 데이터 비트를 "CV"로 불리는 청크 유효 식별자(chunk valid identifier)로 태깅하는(tagging) AXI 슬레이브(206)를 포함한다.
CV(청크 유효) 생성을 위한 파라미터들이 있다:
CV의 각각의 비트(bit)는 유효 데이터를 운반하는 데이터 버스의 부분을 나타낸다.
CV의 각각의 비트에 의해 표시되는 더 넓은 데이터 버스의 부분-크기는, 시스템 내의 가장 좁은 데이터 버스 크기와 동일하다.
특정 버스 상의 CV의 폭은 시스템 내의 그 자신의 버스 크기에 대한 가장 좁은 데이터 버스 크기의 비에 의해 결정된다.
a. 예를 들어: 64B 및 32B 데이터 버스 폭들을 갖는 시스템들에서, CV는 64B 버스에 대해 2-비트 값일 것이다.
b. 예를 들어: 64B, 32B, 및 16B 데이터 버스 폭들을 갖는 시스템들에서, CV는 64B 버스에 대해 4-비트 값일 것인 반면, CV는 32B 버스에 대해 2-비트 값일 것이다.
0의 값은 CV 상에서 허용되지 않는다.
CV 상의 스태거링된 값(staggered value)들이 허용된다.
예를 들어: 64B 및 16B 데이터 버스 폭들을 갖는 시스템들에서, 0101의 CV 값이 허용된다.
RLAST 시맨틱은 특정 실시예에 따라 변화하지 않는다는 것으로 보여지며, 이는 마지막 데이터 비트가 전체 버스 상에서 유효 데이터를 포함하지 않을 수 있을지라도 RLAST가 마지막 데이터 비트에 항상 도달하는 것을 의미한다. 이는, 프로토콜 완료 윈도우들을 검출하기 위해 RLAST를 보고 있는 모든 기존 IP들이 여전히 프로세스에 부합함을 보장한다.
도 3에 도시된 바와 같이, 시스템(300)은 64B 및 32B 버스 폭들을 갖고, 64B 버스 상의 CV는 2-비트 폭이며, 각각의 비트는 유효한 절반을 나타낸다.
구체적으로, 도 3에 도시된 바와 같이, CV[1:0]=2'b11(302)는 유효한 하위 청크(CV[0])(306) 및 유효한 상부 청크(CV[1])(304)를 갖는다. 둘째로, CV[1:0]=2'b01(308)은 유효한 하위 청크(CV[0])(312) 및 무효한 상위 청크(CV[1])(310)를 갖는다. 셋째로, CV[1:0]=2'b10(314)은 무효한 하위 청크(CV[0])(318) 및 유효한 상위 청크(CV[1])(316)를 갖는다.
도 3에 도시된 경우에서, CV [1:0](302, 308, 314)의 적합한 값(legal value)들 =
{2'b11,2'b10,2'b01}
도 4는 본 명세서에 기술된 실시예에 따른 청크 유효 예(400)를 도시한다. 도 4는 제1 인터페이스, AXI 마스터(402), 인터페이스-대-인터페이스 브리지, AXI-대-AXI 브리지(404), 및 제2 인터페이스, AXI 슬레이브(406)를 포함하는 시스템(400)을 도시한다. ReadA (ARLEN=0x0, ARSIZE=64B)(432), 및 ReadB (ARLEN=0x0, ARSIZE=64B)(434)가 AXI 마스터(402)로부터 송신된다. AXI-대-AXI 브리지(404)는 ReadA(ARLEN=0x1, ARSIZE=32B)(436) 및 ReadB(ARLEN=0x1, ARSIZE=32B)(438)을 송신한다.
Data_A0,32B(440); Data_B0,32B(442); Data_B1,RLAST, 32B(446); Data_A1,RLAST,32B(444); 가 AXI 슬레이브(406)로부터 송신된다. 비트들 RData_A0,64B, CV=01(450); RData_B0B1,RLAST,64B, CV=11(452); 및 RData_A1, RLAST,64B, CV=10(454)가 도시되어 있다.
도 4는 도 2와는 상이한데, 그 이유는 데이터 비트들(440, 442, 444, 446)이 상이한 시퀀스에 있기 때문이며, 즉 A0(440) 및 A1(444)는 직접 시퀀스에 있지 않지만; 오히려, B0(442) 및 B1(446)은 A0(440)과 A1(444) 사이에 있다. 또한, 도 2에 도시된 바와 같이, 병합 버퍼가 없다. 또한, 비트들(450, 452, 454)은 연관된 CV 식별자를 갖는다. 데이터(440, 442, 444, 446)는 랜덤 순서로 되어 있다.
도 4에 도시된 바와 같이, AXI-대-AXI 브리지(404)는 CV=01(450)의 청크 유효 표시를 사용하여 더 넓은 데이터 버스 상에서 부분 데이터 RDATA_A0(440)을 송신하고 있다. 좁은 측으로부터 Data_B0(442) 및 Data_B1(446)이 잇따라 도달할 때, 그것은 단일의 더 넓은 데이터 버스 응답으로 접힐(collapsed) 수 있고, CV=11(452)과 함께 RData_B0B1로서 송신될 수 있다. 마지막으로, ReadA의 두 번째 비트(444)가 도달할 때, 그것은 CV=10과 함께 그리고 RLAST 표시(454)와 함께 송신된다.
AXI 마스터(402)는 AXI 마스터(402)가 데이터의 정확한 부분을 수용할 수 있도록 연관된 CV 값의 의미를 이해할 필요가 있다.
실시예들은 또한 AXI 마스터(402)로부터의 하나 이상의 플래그들을 포함하며, 이는 AXI 마스터(402)가 부분 데이터 전송들을 견딜 수 있는지 여부를 AXI 슬레이브(406)에게 알려줄 수 있다. 플래그는 "Chun㎸alidEnable"로 식별되거나, 불릴 수 있다. 레거시 AXI 마스터들은 Chun㎸alidEnable=0을 구동하도록 선택할 수 있다.
AXI 슬레이브(406)가 상이한 청크 유효 값들을 구동할 수 없는 경우, 그것은 플래그가 모두 1(all 1)로서 설정될 수 있는 실시예이다.
AXI 마스터(402)가 Chun㎸alidEnable=0을 설정하는 경우, AXI 슬레이브(406)는 CV=모두 1을 설정한다.
도 5는 "새로운 필드들"(502), "채널"(504), "구동"(506), "폭"(508) 및 "의미"(510)를 포함하는 표현(500)을 도시한다. 필드(502)에는 "chunk valid enable"(512) 및 CV[N-1:0](522)가 있다. 채널(504)은 AR(514) 및 R(524)을 포함한다. 구동(506)은 AXI 마스터(516) 및 AXI 슬레이브(526)를 포함한다. 폭(508)은 "1"(518) 및 "N"(528)을 포함한다. 의미(510)는 구동기가 각각 지시하고 있는 것(520, 530)에 대한 설명을 포함한다.
AXI 시스템들이 새로운 필드들을 추가하는 유연성을 갖지 않는 경우, ARUSER/RUSER 필드들은 새로운 필드들을 채우기 위해 사용될 수 있다.
도 5에 도시된 실시예는, 단일 64B 판독 데이터 버스 상에서 2개 이상의(최대 N, 여기서 "N"은 임의의 적합한 수임) 별개의 32B 데이터 비트들을 구동함으로써 증대될 수 있으며, 이는 도 6에 도시되어 있다.
도 6의 실시예는, AXI 슬레이브 플래그가 특수 메시지 "멀티-데이터 전송 인에이블됨(multi-data transfer enabled)"을 갖는다는 것을 도시한다. 이 모드에서, 전송되는 모든 별개의 청크는 다음과 같은 자신의 R 채널 필드들의 세트와 연관된다:
RID[N-1:0](642);
RRESP[N-1:0](652);
RUSER[N-1:0](662); 및
RLAST[N-1:0](672).
AXI Master는, 그것이 필드 "MDTEnable"(멀티-데이터 전송 인에이블(Multi-Data-Transfer Enable))(622)을 사용하여 더 넓은 데이터 버스 상에서 별개의 RID들을 갖는 다수의 좁은 데이터 비트들을 수용할 수 있는지를 제어할 수 있다. 단일 RDATA 버스 상에서 도달할 수 있는 "N"개의 고유 RD들 및 RLAST들이 있을 수 있으며, 마스터는 그것을 고유하게 식별하고 그것을 취급할 수 있어야 한다는 것에 유의한다.
이는, 임의의 데이터 버스 효율을 낭비하지 않고 높은 대역폭 요구를 충족시키면서 청크 병합 버퍼들이 제거될 수 있게 할 것이다.
도 6은 "새로운 필드들"(602), "채널"(604), "구동"(606), "폭"(608) 및 "의미"(610)를 포함하는 표현(600)을 도시한다.
필드(602)에는 "chunk valid enable"(612); MDTEnable(621); CV[N-1:0](622); RID[N-1:0](642); RRESP[N-1:0](652); RUSER[N-1:0](662); 및 RLAST[N-1:0](672)이 있다.
채널(604)은 AR(614); AR(623); R(624); R(644); R(654); R(664); 및 R(674)을 포함한다.
구동(606)은 AXI 마스터(616); AXI 마스터(625); AXI 슬레이브(626); AXI 슬레이브(646); AXI 슬레이브(656); AXI 슬레이브(666); 및 AXI 슬레이브(676)를 포함한다. 따라서, 더 넓은 버스 상에서 부분 데이터를 송신하도록 선택할 수 있는 중간 AXI 인터페이스 슬레이브들이 있다.
폭(608)은 "1"(618); "1"(627); "N"(628); "N*M (M=RID width)"(648); "N*M (M=RRESP width"(658); "N*M (M=RUSER width"(668); 및 "N"(678)을 포함한다.
의미(610)는 각각 620, 629, 630, 650, 660, 670 및 680에 의해 도시된 바와 같은, 명령어들의 설명을 포함한다.
AXI 마스터가 MDTEnable=0을 설정하는 경우, AXI 슬레이브는 더 넓은 비트 내의 모든 좁은 비트들에 대해 RID(642), RRESP(652), RUSER(662), RLAST(672) 상에서 동일한 값들을 설정한다.
AXI 시스템들이 새로운 필드들을 추가하는 유연성을 갖지 않는 경우, ARUSER/RUSER 필드들은 새로운 필드들을 채우기 위해 사용될 수 있다.
좁은 버스 측으로부터의 모든 데이터 비트들을 병합할 필요성을 제거함으로써, 상호연결부 상의 모든 중간 지점들에서의 병합 버퍼들에 대한 필요성이 제거되고, 따라서 시스템은 영역/전력 관점에서 최적화된다.
중간 에이전트들/AXI 슬레이브는, 시스템이 데이터의 중요한(critical) 부분에 대한 레이턴시를 최적화하기를 원하는 경우, 더 넓은 데이터 버스 상에서 부분 데이터를 송신하도록 선택할 수 있다. 이는 전체 시스템의 성능을 개선한다.
병합 버퍼를 갖지 않는 상호연결부들은 모든 좁은 비트들이 잇따라 올 수 있도록 요청들을 완전히 직렬화할 필요가 있으며, 더 넓은 데이터 비트를 형성하도록 병합될 수 있다. 본 개시내용에 도시된 실시예들에서, 병합 버퍼를 갖지 않는 그러한 상호연결부들은 요청들을 직렬화할 필요가 없고, 모든 요청들은 병렬로 송신됨으로써, 시스템의 성능을 개선할 수 있다.
실시예들 중 하나 이상이 컴퓨팅 디바이스 상에서 수행될 수 있다. 컴퓨팅 디바이스는 프로세서, 메모리 유닛, 입력, 및 출력을 갖는 임의의 디바이스인 것으로 이해될 수 있다. 이는 셀룰러 폰, 스마트 폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터, 개인 휴대 정보 단말기, 그래픽 프로세싱 유닛, 필드 프로그래머블 게이트 어레이 등을 포함할 수 있지만, 이들로 제한되도록 의도되지 않는다. 컴퓨터의 컴포넌트들은 프로세싱 유닛, 시스템 메모리, 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛에 결합하는 시스템 버스를 포함할 수 있지만, 이에 제한되지 않는다.
컴퓨터 저장 매체는 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 제거가능 및 제거불가능 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다목적 디스크(digital versatile disk, DVD) 또는 다른 광학 디스크 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 디바이스, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 제한되지 않는다.
통신 매체는 전형적으로 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서 구현하며, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는, 신호 내에 정보를 인코딩하는 방식으로 신호의 특성들 중 하나 이상이 설정 또는 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접-유선 연결과 같은 유선 매체, 및 음향, 무선 주파수, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 임의의 상기한 것의 조합들이 또한 컴퓨터 판독가능 매체의 범주 내에 포함되어야 한다.
시스템 메모리는 판독 전용 메모리(ROM) 및 랜덤 액세스 메모리(RAM)와 같은 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동 동안과 같이 컴퓨터 내의 요소들 사이에서 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입력/출력 시스템(basic input/output system, BIOS)이 전형적으로 ROM에 저장된다.
하나 이상의 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 디바이스, 또는 전파 매체일 수 있지만, 이에 제한되지 않는다. 컴퓨터 판독가능 매체의 더 구체적인 예들(비배타적인 목록)은 다음을 포함할 것이다: 하나 이상의 와이어들을 갖는 전기 연결부, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능한 프로그래머블 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 판독 전용 메모리(CDROM), 광학 저장 디바이스, 인터넷 또는 인트라넷을 지원하는 것들과 같은 전송 매체, 또는 자기 저장 디바이스.
프로그램이 예를 들어, 종이 또는 다른 매체의 광학적 스캐닝을 통해 전자적으로 캡처되고, 이어서 컴파일링되거나, 해석되거나, 또는 그렇지 않으면 원하는 경우 적합한 방식으로 처리되고, 이어서 컴퓨터 메모리에 저장되기 때문에, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 심지어 프로그램이 인쇄되는 종이 또는 다른 적합한 매체일 수 있다. 본 문헌의 맥락에서, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 명령어 실행 시스템, 장치, 또는 디바이스에 의해 또는 그와 관련하여 사용하기 위한 프로그램을 포함, 저장, 통신, 전파, 또는 전송할 수 있는 임의의 매체일 수 있다. 컴퓨터 사용가능 매체는, 기저대역에서 또는 반송파의 일부로서, 구현된 컴퓨터 사용가능 프로그램 코드를 갖는 전파된 데이터 신호를 포함할 수 있다. 컴퓨터 사용가능 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등을 포함하지만 이로 제한되지 않는 임의의 적절한 매체를 사용하여 전송될 수 있다.
동작들을 수행하기 위한 컴퓨터 프로그램 코드는 자바(Java), 스몰토크(Smalltalk), C++, C# 등과 같은 객체 지향 프로그래밍 언어, 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차 프로그래밍 언어들을 포함하는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 전적으로 사용자의 컴퓨터 상에서, 부분적으로 사용자의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터 상에서 그리고 부분적으로 원격 컴퓨터 상에서 또는 전적으로 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 로컬 영역 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하는 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대한 연결이 이루어질 수 있다.
본 실시예들은 실시예들에 따른 방법들, 장치들, 시스템들 및 컴퓨터 프로그램 제품들의 흐름도 예시들 및/또는 블록도들을 참조하여 후술된다. 흐름도 예시들 및/또는 블록도들의 각각의 블록, 및 흐름도 예시들 및/또는 블록도들에서의 블록들의 조합들이 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것이 이해될 것이다.
이들 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터, 또는 기계를 생성하기 위한 다른 프로그래머블 데이터 프로세싱 장치의 프로세서에 제공되어, 컴퓨터의 프로세서, 또는 다른 프로그래머블 데이터 프로세싱 장치를 통해 실행되는 명령어들이, 흐름도 및/또는 블록도 블록 또는 블록들에 특정된 기능들/동작들을 구현하기 위한 수단을 생성하도록 할 수 있다. 이들 컴퓨터 프로그램 명령어들은 또한, 컴퓨터 판독가능 매체에 저장된 명령어들이 흐름도 및/또는 블록도 블록 또는 블록들에 특정된 기능/동작을 구현하는 명령어 수단을 포함하는 제조 물품을 생성하도록, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 장치가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있다.
컴퓨터 프로그램 명령어들은 또한 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 장치 상에 로딩되어, 컴퓨터 또는 다른 프로그래머블 장치 상에서 수행될 일련의 동작 단계들이 컴퓨터-구현 프로세스를 생성하게 하여, 컴퓨터 또는 다른 프로그래머블 장치 상에서 실행되는 명령어들이, 흐름도 및/또는 블록도 블록 또는 블록들에 특정된 기능들/동작들을 구현하기 위한 프로세스들을 제공하도록 할 수 있다.
달리 언급되지 않는 한, "제1" 및 "제2"와 같은 용어들은 그러한 용어들이 설명하는 요소들 사이에서 임의적으로 구별하기 위해 사용된다. 따라서, 이들 용어는 반드시 그러한 요소들의 시간적 또는 다른 우선순위화를 나타내고자 하는 것은 아니다.
당업자에 의해 이해되는 바와 같이, 본 개시내용은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 실시예들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함), 또는 본 명세서에서 모두 일반적으로 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 조합하는 실시예의 형태를 취할 수 있다. 또한, 실시예들은 매체 내에 구현된 컴퓨터 사용가능 프로그램 코드를 갖는 임의의 유형의(tangible) 표현 매체 내에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
본 명세서에 제시된 장치, 시스템 및 방법론들은 본 기술 분야의 진보를 제공한다.
본 명세서에 상세히 기술된 다양한 대표적인 실시예들은 제한으로서가 아니라 예로서 제시되었다. 첨부된 청구항들의 범주 내에서 유지되는 등가의 실시예들을 생성하는 기술된 실시예들의 형태 및 상세 사항들에서 다양한 변경들이 행해질 수 있다는 것이 당업자들에 의해 이해될 것이다.
본 명세서에 제시된 시스템 및 방법론들은 본 기술 분야의 진보를 제공한다는 것을 알 수 있다.
따라서, 개시된 실시예들의 일부는 다음 항목들에서 설명된다.
1. 방법으로서, 하나 이상의 식별자들을 생성하는 단계 - 각각의 식별자는 복수의 비트들 및 폭 컴포넌트를 가짐 -; 및 하나 이상의 데이터 비트들을 상기 하나 이상의 식별자들로부터 선택된 연관된 식별자로 태깅하는 단계 - 상기 식별자의 각각의 비트는 유효 데이터를 운반하는 데이터 버스의 부분을 나타내고; 특정 데이터 버스 상의 상기 식별자의 상기 폭은 상기 식별자의 버스 크기에 대한 가장 좁은 데이터 버스 크기의 비에 의해 결정됨 -; 및 상기 식별자에 기초하여 상기 데이터 비트들의 부분 데이터 전송들을 가능하게 하는 단계를 포함하는, 방법.
2. 항목 1에 있어서, 제2 데이터 버스의 부분 파라미터는 상기 가장 좁은 데이터 버스 크기와 동일한, 방법.
3. 항목 1에 있어서, 상기 식별자는 스태거링된 값을 갖는, 방법.
4. 항목 1에 있어서, 마지막 데이터 비트를 나타내는 상기 식별자와 연관된 완료 코드(completion code)를 지정하는 단계를 추가로 포함하는, 방법.
5. 항목 1에 있어서, 부분 데이터 전송들이 허용가능한지 여부를 결정하기 위해 플래그를 이용하는 단계를 추가로 포함하는, 방법.
6. 항목 1에 있어서, 상기 방법은 단일 판독 데이터 버스 상에서 복수의 데이터 비트들을 구동하는 단계를 추가로 포함하고, 상기 단일 판독 데이터 버스는 상기 데이터 비트들보다 넓은, 방법.
7. 항목 6에 있어서, 상기 단일 판독 데이터 버스는 64B인, 방법.
8. 항목 1에 있어서, 하나 이상의 관련되지 않은(unrelated) 데이터 비트들을 단일 판독 데이터 버스 상에서 비순차적 순서로 인터리빙하는(interleaving) 단계를 추가로 포함하는, 방법.
9. 항목 1에 있어서, 상기 식별자의 부분들은 유효 데이터 및/또는 무효 데이터를 표현하는, 방법.
10. 장치로서, 제1 폭을 갖는 제1 버스; 상기 제1 폭보다 큰 제2 폭을 갖는 제2 버스; 및 부분 데이터가 유효하다는 것을 나타내는 식별자를 사용하여 상기 제2 버스 상에서 상기 부분 데이터를 송신하도록 구성된 인터페이스를 포함하며, 상기 식별자는 복수의 비트들 및 폭 컴포넌트를 갖고, 상기 식별자의 각각의 비트는 유효 데이터를 운반하는 상기 제1 데이터 버스의 부분을 나타내고, 상기 제1 데이터 버스 상의 상기 식별자의 상기 폭은 상기 제1 데이터 버스의 상기 폭에 대한 가장 좁은 데이터 버스 크기의 비에 의해 결정되는, 장치.
11. 항목 10에 있어서, 상기 제1 데이터 버스와 연관된 인터페이스 슬레이브; 및 상기 제2 데이터 버스와 연관된 인터페이스 마스터를 추가로 포함하는, 장치.
12. 항목 11에 있어서, 상기 인터페이스 마스터는 상기 인터페이스 마스터가 부분 데이터 전송들을 수용할 수 있는지 여부를 상기 인터페이스 슬레이브에 나타내는, 장치.
13. 항목 11에 있어서, 부분 데이터를 송신하도록 구성된 하나 이상의 중간 인터페이스 슬레이브들을 추가로 포함하는, 장치.
14. 항목 11에 있어서, 상기 인터페이스 슬레이브는 상기 제2 데이터 버스 상에서 복수의 데이터 비트들을 구동하는, 장치.
15. 항목 10에 있어서, 인터리빙된 단일 데이터 비트들을 저장하도록 구성된 인터리빙 버퍼를 추가로 포함하는, 장치.
16. 항목 10에 있어서, 상기 식별자는 스태거링된 값을 갖는, 장치.
17. 항목 10에 있어서, 상기 제2 데이터 버스의 부분 파라미터는 상기 가장 좁은 데이터 버스 크기와 동일한, 장치.
본 명세서에 상세히 기술된 다양한 대표적인 실시예들은 제한으로서가 아니라 예로서 제시되었다. 첨부된 청구항들의 범주 내에서 유지되는 등가의 실시예들을 생성하는 기술된 실시예들의 형태 및 상세 사항들에서 다양한 변경들이 행해질 수 있다는 것이 당업자들에 의해 이해될 것이다.

Claims (17)

  1. 방법으로서,
    하나 이상의 식별자들을 생성하는 단계 - 각각의 식별자는 복수의 비트(bit)들 및 폭 컴포넌트를 가짐 -; 및
    하나 이상의 데이터 비트(data beat)들을 상기 하나 이상의 식별자들로부터 선택된 연관된 식별자로 태깅하는(tagging) 단계
    - 상기 식별자의 각각의 비트는 유효 데이터를 운반하는 데이터 버스의 부분을 나타내고;
    특정 데이터 버스 상의 상기 식별자의 상기 폭은 상기 식별자의 버스 크기에 대한 가장 좁은 데이터 버스 크기의 비에 의해 결정됨 -; 및
    상기 식별자에 기초하여 상기 데이터 비트들의 부분 데이터 전송(partial data transfer)들을 가능하게 하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 제2 데이터 버스의 부분 파라미터는 상기 가장 좁은 데이터 버스 크기와 동일한, 방법.
  3. 제1항에 있어서, 상기 식별자는 스태거링된 값(staggered value)을 갖는, 방법.
  4. 제1항에 있어서,
    마지막 데이터 비트를 나타내는 상기 식별자와 연관된 완료 코드(completion code)를 지정하는 단계를 추가로 포함하는, 방법.
  5. 제1항에 있어서, 부분 데이터 전송들이 허용가능한지 여부를 결정하기 위해 플래그를 이용하는 단계를 추가로 포함하는, 방법.
  6. 제1항에 있어서, 상기 방법은 단일 판독 데이터 버스 상에서 복수의 데이터 비트들을 구동하는 단계를 추가로 포함하고, 상기 단일 판독 데이터 버스는 상기 데이터 비트들보다 넓은, 방법.
  7. 제6항에 있어서, 상기 단일 판독 데이터 버스는 64B인, 방법.
  8. 제1항에 있어서, 하나 이상의 관련되지 않은(unrelated) 데이터 비트들을 단일 판독 데이터 버스 상에서 비순차적 순서로 인터리빙하는(interleaving) 단계를 추가로 포함하는, 방법.
  9. 제1항에 있어서, 상기 식별자의 부분들은 유효 데이터 및/또는 무효 데이터를 표현하는, 방법.
  10. 장치로서,
    제1 폭을 갖는 제1 버스;
    상기 제1 폭보다 큰 제2 폭을 갖는 제2 버스; 및
    부분 데이터가 유효하다는 것을 나타내는 식별자를 사용하여 상기 제2 버스 상에서 상기 부분 데이터를 송신하도록 구성된 인터페이스를 포함하며,
    상기 식별자는 복수의 비트들 및 폭 컴포넌트를 갖고,
    상기 식별자의 각각의 비트는 유효 데이터를 운반하는 상기 제1 데이터 버스의 부분을 나타내고,
    상기 제1 데이터 버스 상의 상기 식별자의 상기 폭은 상기 제1 데이터 버스의 상기 폭에 대한 가장 좁은 데이터 버스 크기의 비에 의해 결정되는, 장치.
  11. 제10항에 있어서,
    상기 제1 데이터 버스와 연관된 인터페이스 슬레이브; 및
    상기 제2 데이터 버스와 연관된 인터페이스 마스터를 추가로 포함하는, 장치.
  12. 제11항에 있어서, 상기 인터페이스 마스터는 상기 인터페이스 마스터가 부분 데이터 전송들을 수용할 수 있는지 여부를 상기 인터페이스 슬레이브에 나타내는, 장치.
  13. 제11항에 있어서,
    부분 데이터를 송신하도록 구성된 하나 이상의 중간 인터페이스 슬레이브들을 추가로 포함하는, 장치.
  14. 제11항에 있어서, 상기 인터페이스 슬레이브는 상기 제2 데이터 버스 상에서 복수의 데이터 비트들을 구동하는, 장치.
  15. 제10항에 있어서,
    인터리빙된 단일 데이터 비트들을 저장하도록 구성된 인터리빙 버퍼를 추가로 포함하는, 장치.
  16. 제10항에 있어서, 상기 식별자는 스태거링된 값을 갖는, 장치.
  17. 제10항에 있어서, 상기 제2 데이터 버스의 부분 파라미터는 상기 가장 좁은 데이터 버스 크기와 동일한, 장치.
KR1020217028381A 2019-02-08 2020-01-20 표시자를 이용해 부분 데이터 전송을 가능하게 하는 시스템, 방법 및 장치 KR20210124381A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/271,015 US10725958B1 (en) 2019-02-08 2019-02-08 System, method and apparatus for enabling partial data transfers with indicators
US16/271,015 2019-02-08
PCT/GB2020/050114 WO2020161465A1 (en) 2019-02-08 2020-01-20 System, method and apparatus for enabling partial data transfers with indicators

Publications (1)

Publication Number Publication Date
KR20210124381A true KR20210124381A (ko) 2021-10-14

Family

ID=69326550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217028381A KR20210124381A (ko) 2019-02-08 2020-01-20 표시자를 이용해 부분 데이터 전송을 가능하게 하는 시스템, 방법 및 장치

Country Status (5)

Country Link
US (1) US10725958B1 (ko)
KR (1) KR20210124381A (ko)
CN (1) CN113316772A (ko)
GB (1) GB2595408B (ko)
WO (1) WO2020161465A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT202000009364A1 (it) * 2020-04-29 2021-10-29 St Microelectronics Srl Procedimento per accedere a una memoria e circuito corrispondente
US20220147502A1 (en) * 2020-11-06 2022-05-12 Pensando Systems Inc. Method to perform hash table lookup for keys wider than data path size
US11520722B2 (en) * 2021-04-12 2022-12-06 Microsoft Technology Licensing, Llc On-chip non-power of two data transactions
CN113904762B (zh) * 2021-09-28 2023-09-26 中孚信息股份有限公司 一种带环形缓冲区的全双工485总线通信系统及方法
WO2023076597A1 (en) * 2021-10-29 2023-05-04 Microchip Technology Incorporated System and method for flexibly crossing packets of different protocols
CN115374039A (zh) * 2022-10-25 2022-11-22 北京超摩科技有限公司 数据位宽转换方法以及相关设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366973B1 (en) 1999-05-03 2002-04-02 3Com Corporation Slave interface circuit for providing communication between a peripheral component interconnect (PCI) domain and an advanced system bus (ASB)
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
JP5664187B2 (ja) * 2010-12-06 2015-02-04 ソニー株式会社 相互接続装置、および、その制御方法
US9158725B2 (en) 2012-11-20 2015-10-13 Freescale Semiconductor, Inc. Flexible control mechanism for store gathering in a write buffer
JP6294732B2 (ja) * 2014-03-31 2018-03-14 株式会社メガチップス データ転送制御装置及びメモリ内蔵装置
US10042766B1 (en) * 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment

Also Published As

Publication number Publication date
GB202112244D0 (en) 2021-10-13
GB2595408A (en) 2021-11-24
CN113316772A (zh) 2021-08-27
WO2020161465A1 (en) 2020-08-13
GB2595408B (en) 2023-04-05
US10725958B1 (en) 2020-07-28
US20200257647A1 (en) 2020-08-13

Similar Documents

Publication Publication Date Title
KR20210124381A (ko) 표시자를 이용해 부분 데이터 전송을 가능하게 하는 시스템, 방법 및 장치
US9348784B2 (en) Systems and methods for managing endian mode of a device
JP4768990B2 (ja) オンチップ・システム用の構成可能アドレス・マッピングと保護アーキテクチャ及びハードウエアに関する方法及び装置
TWI486810B (zh) 在狀態機晶格中之計數器操作
CN102197368B (zh) 数据处理指令的许可检查
CN101593098B (zh) 转发装置与方法以及微处理器
TWI692213B (zh) 用以執行資料壓縮的處理裝置和方法以及系統單晶片(SoC)
CN112631657B (zh) 用于字符串处理的字节比较方法以及指令处理装置
TWI506428B (zh) 用以最佳化快取記憶體線之預提取的方法及系統
US9753984B2 (en) Data access using decompression maps
US9542111B2 (en) Writable clone data structure
US9292549B2 (en) Method and system for index serialization
US8990500B2 (en) Storing the most significant and the least significant bytes of characters at non-contiguous addresses
CN107003944B (zh) 跨分布式存储器的指针追踪
US8732377B2 (en) Interconnection apparatus and controlling method therefor
EP2887224B1 (en) Latency agnostic transaction buffer for request-grant protocols
WO2024124843A1 (zh) 一种数据处理方法、装置、设备及可读存储介质
US8032826B2 (en) Structure-position mapping of XML with fixed length data
US20110200059A1 (en) BIT Inversion For Communication Interface
US8473513B2 (en) Efficient multiple tuple generation over streaming XML data
CN113672555A (zh) 处理器核、处理器、片上系统和调试系统
WO2018188416A1 (zh) 一种数据搜索的方法、装置和相关设备
EP4293502A1 (en) Processing unit, computing device and instruction processing method
CN107967222A (zh) 一种SPI-Nand查找数据页的方法及装置
WO2023093761A1 (zh) 处理数据的方法和相关装置