KR101289011B1 - 데이터 워드들의 스트림의 처리를 위한 디바이스 - Google Patents

데이터 워드들의 스트림의 처리를 위한 디바이스 Download PDF

Info

Publication number
KR101289011B1
KR101289011B1 KR1020097004526A KR20097004526A KR101289011B1 KR 101289011 B1 KR101289011 B1 KR 101289011B1 KR 1020097004526 A KR1020097004526 A KR 1020097004526A KR 20097004526 A KR20097004526 A KR 20097004526A KR 101289011 B1 KR101289011 B1 KR 101289011B1
Authority
KR
South Korea
Prior art keywords
data
packet
data words
interface
stream
Prior art date
Application number
KR1020097004526A
Other languages
English (en)
Other versions
KR20090048491A (ko
Inventor
토마스 브루네
올리버 캄펜켈
허버트 쉿체
미하엘 발덴
Original Assignee
톰슨 라이센싱
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 톰슨 라이센싱 filed Critical 톰슨 라이센싱
Publication of KR20090048491A publication Critical patent/KR20090048491A/ko
Application granted granted Critical
Publication of KR101289011B1 publication Critical patent/KR101289011B1/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
    • 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/4031Coupling between buses using bus bridges with arbitration
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

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)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

종래 기술의 프로세서 시스템들, 특히 임베디드 시스템(embedded system)들은, 특히 10 Gbps에 가까운 처리량 레이트(throughput rate)를 갖는, 실시간 환경 하에서 데이터를 처리하지 못한다. 그러므로, PCI 익스프레스(PCIe) 또는 인피니밴드(Infiniband) 또는 10 Gbps 데이터 처리량을 위한 10G-이더넷(10G-Ethernet)과 같은 인터페이스를 사용할 때, 특별한 데이터 경로(data-path)가 그러한 높은 처리량 레이트의 데이터를 처리해야 한다. 그러나 연결 관리 또는 시간적으로 위급하지 않은(time uncritical) 제어 메시지 통보는 프로세서에 의해 보다 잘 관리될 수 있다. 본 발명에 따라서 PCI 익스프레스를 기반으로 하는 구조를 위한 제어 및 데이터 경로 사이를 분리시키기 위해 필요한 일종의 다중화기 구조가 제안된다.

Description

데이터 워드들의 스트림의 처리를 위한 디바이스{DEVICE FOR PROCESSING A STREAM OF DATA WORDS}
본 발명은 고속 인터페이스(high speed interfacing)의 분야, 특히 필름 및 방송 스튜디오 환경에서의 비디오 제작의 목적과 관련이 있다.
종래 기술의 프로세서 시스템, 특히 임베디드 시스템(embedded system)은 실시간(real-time) 상황에서의, 특히 10 Gbps 근처의 처리량(throughput)을 가진, 데이터 처리를 예견하지 못한다. 그러므로, 10 Gbps의 데이터 처리량을 위한 실시간 상황에서, PCI 익스프레스(PCIe: PCI Express) 또는 인피니밴드(Infiniband) 또는 10G-이더넷(10G-Ethernet)과 같은 인터페이스를 사용할 때, 특별한 데이터 경로(data-path)가 높은 처리량 레이트의 데이터(high throughput rate data)를 처리해야 한다. 그러나 연결 관리 또는 시간적으로 위급하지 않은 제어 메시지 통보(time uncritical control messaging)와 같은 작업들은 프로세서에 의해 보다 잘 관리될 수 있다.
문제는 실시간 데이터 전송과 버스 관리 및/또는 다른 제어 메시지를 위한 데이터 패킷은 혼합되어(intermixed) PCIe 버스 상에서 발생한다는 점이다. 실시간 데이터 전송을 위해 완료(completion)가 생성되어야 할 때, 다른 메시지들이 상기 인터페이스를 통해 충분히 빠르게 유도되지 못한다는 문제가 발생한다.
그러한 문제를 해결하기 위해, 본 발명은 높은 대역폭 인터페이스 구조를 위해 제어 및 데이터 경로 액세스를 분리시키기 위한 일종의 다중화기(multiplexer) 구조를 제안한다.
PCIe 코어와 같은 높은 대역폭의 인터페이스 코어(high bandwidth interface core)를 액세스하기 위한 패킷 지향의(packet oriented) 제어 방식은, 연결 관리 목적을 위해, 지능적 다중화기(intelligent multiplexer)/FIFO 제어 구조에 의해 패킷 지향 데이터 처리 방식으로부터 분리된다. 이러한 다중화기는 전환하는 동안에 우선권 방식(priority scheme) 및 예컨대 PCIe에 맞추어진(PCIe aligned) 패킷 길이를 지원한다.
본 발명의 이점은 본 발명이 높은 대역폭 인터페이스를 기반으로 하는 구조에서 데이터 경로 및 제어 경로를 구분함으로써 프로세서 성능을 중대하게 절약한다는 것이다.
본 발명은 최대 데이터 처리량을 제공한다.
본 발명의 예시적인 실시예들이 도면에서 설명되며, 다음의 설명에서 더욱 자세하게 설명된다.
도 1은 필름 스캐너로부터 저장 서버로의 데이터 운반을 위한 인피니밴드 버스 시스템의 사용을 도시하는 도면.
도 2는 본 발명을 구현하기 위한 플랫폼(platform)을 도시하는 도면.
도 3은 PCIe 인터페이스를 갖는 데이터 처리 시스템의 주요한 구조를, 본 발명에 따른 다중화기의 블록 도면을 포함하여 도시하는 도면.
도 4는 블록 도면 형태로 자세한 구조를 도시하는 도면.
도 5는 PLB 버스로 인터페이스 하기 위한 상기 구조 내부의 특별하게 설계된 메모리 인터페이스 블록을 도시하는 도면.
도 6은 본 발명에 따른 다중화기/역다중화기(demultiplexer)의 자세한 블록 도면을 도시하는 도면.
도 7은 PCI 익스프레스 IP 코어를 구동시키기 위해 사용되는 루트 포트 제어기 모듈(root port controller module)의 자세한 블록 도면을 도시하는 도면.
도 8은 PCIe 버스 상의 신호에 대한 타이밍 다이어그램을 도시하는 도면.
도 1은 인피니밴드 네트워크를 통해 전문적인 저장 서버(professional storage server)(300)와 연결된 전문적인 필름 스캐너(professional film scanner)(200)를 도시한다.
인피니밴드 네트워크 연결을 위해, PCI 익스프레스를 기반으로 하는 하드웨어 솔루션이 이미 시장에 존재한다. PCI 익스프레스를 기반으로 하는 하드웨어의 사용은, 인피니밴드를 대신하여, 미래의 10 Gbps 이더넷의 사용에 개방되어있다.
도 2는 필름 스캐너의 부분인 디지털 이미지 프로세서(80)를 도시한다. FPGA(100)는 필름 스캐너(200)와 인피니밴드 HCA 카드(90) 사이의 인터페이스이다.
필름 스캐너(200)는 데이터 소스(data source)이며 저장 서버(300)는 데이터 싱크(data sink)이다. 필름 스캐너는 48 비트의 색 깊이에서 4096*3112 픽셀의 해상도로 셀룰로이드(Celluloid) 필름을 샘플링 하는 이른바 4k 필름 스캐너이다. 이는 디지털 영화 촬영(cinematography)의 표준 해상도에 대응한다. 필름 스캐너는 초당(per second) 7.5 개의 화상의 레이트(rate)로 동작한다. 이는 4.6 Gbit/s의 데이터 레이트를 초래한다.
도 3은 프로세서 + 운영 체제(OS: operating system) + 램(RAM)(10) 그리고 요청 인코더(Request Encoder)(20) 그리고 제어 FIFO(Ctrl-FIFO)(30) 그리고 완료 다중화기(Cmpltn-MUX: Completion-Multiplexer)(40) 그리고 데이터 FIFO(Data-FIFO)(50) 그리고 PCI-익스프레스 코어(60)를 포함하는 시스템을 도시한다. PCI 익스프레스는 다양한 하드웨어 및 소프트웨어 구성요소가 시장에서 이용 가능한 하나의 알려진 버스 표준이다. 이 버스 표준은 이후에 PCIe로 축약된다. 메모리 액세스를 통해 PCIe 버스를 액세스하는 것을 고려하면, 모든 구성요소는 프로세서(10)와 OS 각각에 대해 투명하다(transparent). 낮은 데이터 레이트의 제어 경로는 (a)로 표시되고, 높은 데이터 레이트의 경로는 (b)로 나타나며, 실시간 데이터 경로(real-time data path)는 (RT-data)로 나타난다.
프로세서(10)와 OS의 메모리 액세스는 요청 인코더(request encoder)(20)에 의해 각각 요청 패킷(request packet)으로 인코딩 되며 제어 FIFO(30)에 저장된다. 여기서, 요청 패킷을 제어 FIFO(30)에서 불러와서 PCIe 코어(60)로 배포(distribute)하는 것은 완료 MUX(Cmpltn-MUX)(40)의 책임이며, 요청 패킷은 PCIe 방식(PCIe flavor) 메모리 액세스로 디코딩 된다. 헤더 및 데이터는 완료 MUX(40)에서 분리되어 처리될 수도 있다. 동시에, PCIe 코어(60)에 의해 희망되는 어드레스 영역을 가지고 완료 MUX(40)의 유한 상태 기계(FSM: Finite State Machine) 유닛(41)으로 전달되는 PCIe 버스 상에서의 512 바이트의 데이터 요청이 존재할 가능성이 있다. 이러한 데이터 요청은 데이터 FIFO(50)로부터의 몇 개의 128 바이트의 완료(completion)에 의해 통지되어야(acknowledged) 한다. 그러므로, 적어도, 길이, 어드레스 그리고 (요청 및 그에 따른 완료를 식별하기 위한) 고유의 태그 ID(Tag-ID)를 포함하는 완료 헤더가 생성되어야 한다. PCIe 규격에서 규정된 몇 개의 요청/완료 길이 비율이 존재한다. 예컨대 512 바이트의 요청은 네 번의 128 바이트의 완료에 의해 응답될 수 있다. 이러한 예시가 도 3에 도시된다. PCIe 코어(60)는 다중화기(40)에 의해 512 바이트의 데이터 요청을 만든다. 이에 응하여, 다중화기(40)는 4 조각의 128 바이트의 블록을 데이터 FIFO(50)로부터 불러온다. PCIe 완료 헤더(PCIe completion header)는 각각의 128 바이트 블록으로 추가된다. 만일 필요하다면, 즉 선택적으로(optionally), 꼬리말(footer)이 또한 여기서 추가될 수 있다. 이러한 새로운 패킷은 각각의 경우에서 PCIe 코어로 전송된다.
본 발명의 핵심(kernel)은 완료 MUX(Cmpltn-MUX)(40)의 행동(behavior)이며, 여기서
1. FSM(41)은 데이터 FIFO와 제어 FIFO의 FIFO 임계값(threshold)을 다루는 것에 대한 책임이 있다.
2. FSM(41)은 제어 FIFO의 FIFO 임계값과 데이터 FIFO의 FIFO 임계값 각각에 대한 처리 우선권(processing priority)을 갖는다. 그 규칙은 다음과 같다:
만일 제어 FIFO 상에서 검출된 FIFO 임계값이 존재하면, 데이터 FIFO(50)로부터 현재 전송되고 있을 수도 있는 128 바이트 패킷의 마지막 바이트까지 기다린다. 그 후에 우선권을 갖는 제어 FIFO(30)로부터 패킷을 전송한다.
3. FSM(41)은 또한 읽기 가능화 신호(read enable signal) rd_ena를 통해 제어 및 데이터 FIFO로부터 읽어내는 것에 대한 책임이 있다.
4. FSM(41)은 또한 데이터 FIFO(50)로부터 데이터 유닛을 읽는 것에 대한 책임이 있으며, 여기서 그 크기는 협상되는(negotiated) PCIe 데이터 완료 길이를 따른다. 이에 관하여, 데이터 카운터(data counter)가 FSM(41) 내에 구현된다.
5. FSM(41)은 나아가 sel_b 신호를 통해 경로 (a)와 (b) 사이에서 전환하도록 헤더 및 데이터 다중화기(43)를 구동시키기 전에 완료된 요청 패킷과 128 바이트 데이터 유닛들을 처리하는 것에 대한 책임이 있다.
6. 완료 헤더 생성기(Cmpltn header generator)(42)는 PCIe 순응(conform) 완료 헤더 및 꼬리말 구조를 각각의 128 바이트 데이터 유닛에 추가하는 것에 대한 책임이 있다.
본 발명의 다른 보다 자세한 실시예가 Xilinx Virtex-4 구조를 기반으로 하는 하드웨어 설계의 구조를 나타내는 도 4에 도시된다. 모듈들 중 일부는 주위에 회색 음영을 갖는데, 이는 하드웨어 설계에서 상이한 클록 영역(clock domain)이 위치하는 곳을 지시한다. 전체 구조는 두 개의 영역으로 나뉠 수 있다: PowerPC(10)와 PCI 익스프레스 IP 코어(60) 사이의 상부 영역(upper area)은, 실시 간 데이터 스트림(real time data stream)이 병합(merge)될 필요가 있는, PLB에서 PCI 익스프레스로의 브릿지(PLB-to-PCI Express Bridge)이다. 상기 구조의 하부(lower part)는 디지털 이미지 프로세서(80)를 상기 브릿지로 부착시키는 역할을 하며, 레지스터 파일(Register File)(71) 및 인터럽트(interrupt)를 통해 PowerPC(10)와 데이터 이미지 프로세서(80) 사이의 통신을 가능하게 한다. PLB는, 고속 메모리와 PowerPC 사이에서의 빠르고 높은 성능의 버스 전송을 가능하게 하기 위해 설계된, IBM이 개발한 프로세서 지역 버스(Processor Local Bus)라는 이름의 버스 프로토콜이다.
Virtex-4 구조에서 IBM의 PowerPC(405)는 하드웨어 블록으로서 포함된다. PowerPC(405)는 PLB 버스를 통해 FPGA 구조와 연결된다. 또한 리눅스 운영 체제의 작업 메모리(working memory)로서 사용되는 DDR-RAM 블록(11)이 PLB로 연결된다.
모듈 PLB2RC(20)는, FIFO 메모리(30, 31)의 송신 및 수신의 도움으로, PLB로부터의 또는 PLB로의 읽기/기록(read/write) 명령을 변환하는 PLB 주/부(master/slave) 모듈이다. 이러한 목적을 위해, 다른 어떤 추가적인 제어 라인(control line)이 FIFO 메모리들 곁에 설계되지 않도록, 단순한 독점의(proprietary) 프로토콜이 사용된다. 또한 FIFO 메모리들(30, 31)은 나아가 두 개의 상이한 클록 영역 사이에서의 정확한 데이터 전송을 보증한다. 상이한 모듈들 사이에서 풀 듀플렉스(full duplex)의 데이터 흐름을 허용하도록 두 개의 FIFO 메모리가 제공된다.
루트 복소 데이터 다중화기(Root Complex Data Multiplexer)(43)로부터의 주 요 작업은 디지털 이미지 프로세서(80)로부터의 실시간 데이터를 브릿지를 통해 흐르는 데이터 스트림으로 삽입하는 것이며, PLB 또는 PCI 익스프레스 IP 코어에 의해 시작된다.
PCI 익스프레스 IP 코어(60)는 4 개의 선로(lane)와 하나의 가상 채널(virtual channel)을 포함하는 루트 포트로서 구성된다. PCI 익스프레스 IP 코어는 두 개의 독립적인 데이터 포트를 가지며, 하나는 송신 방향을 위한 것이고 다른 하나는 수신 방향을 위한 것이다. 상기 코어를 구동시키기 위해 루트 포트 제어기(44)가 필요하며, 이는 한편으로는 트랜잭션 계층 패킷(TLP: transaction layer packet)을 디코딩하고, 다른 한편으로는 루트 복소 데이터 다중화기(43)와 상호작용하는(interact) 작업을 갖는다.
디지털 이미지 프로세서(80)는 스캔된 화상을 중간에 디지털 동화상 교환(DPX: Digital Moving-Picture Exchange) 파일 포맷으로 저장하는 프레임 버퍼를 포함한다. 버퍼 내의 데이터로의 액세스는, 단순한 주고받기(handshaking) 버스 프로토콜로 제어되는, 128 비트의 폭을 갖는 데이터 버스 상에서 이루어진다. 데이터를 프레임 버퍼로부터 루트 복소 데이터 다중화기(43)로 경로 지정(route)을 하기 위해서 두 개의 모듈이 필요하다. 하나는 버퍼로서 동작하며 두 클록 영역 사이의 데이터 동기화를 위한 DPX FIFO 메모리(50)이며 다른 하나는 프레임 버퍼로부터 FIFO 메모리(50)로의 데이터 흐름을 제어하는 DIP 제어기(51)이다. 데이터 이미지 프로세서(80)는 레지스터 파일(71)을 위한 데이터 경로 및 제어 경로를 더 포함한다. 상기 레지스터 파일(71)은 예컨대 화상 크기 및 해상도에 관한 정보를 포함하 며, 따라서 DCR_RF_Slave 유닛(70)을 통해 PowerPC DCR 버스로 연결된다. DCR 버스는 또한 IBM에서 개발했다.
다음에, 도 4에 도시된 모듈들 중 일부가 더욱 자세하게 설명될 것이다. 도 5는 PLB2RC 모듈(20)의 블록 도면을 도시한다. 인피니밴드 카드(90)는 스스로 DDR-RAM(11)으로 입력하는 것이 가능하기 때문에, 이러한 모듈은 PLB 부 기능(PLB slave functionality)에 추가적으로 PLB 주 기능(PLB master functionality)을 가질 필요가 있다. 이러한 목적을 위해, 설계에서 미리 예견된, 두 개의 유한 상태 기계가 존재한다. 하나는 부(slave) 유한 상태 기계(21)이며 다른 하나는 주(master) 유한 상태 기계(22)이다. 두 유한 상태 기계는 모두 요청/확인(request/acknowledge) 상호작용에 의해 PLB 버스 인터페이스(23)와 통신한다. 엔디안 코덱(Endian codec)이 필요하다. PowerPC(10)는 빅 엔디안(Big Endian) 포맷으로 데이터를 처리하며, 전체적인 인터페이스 설계 및 PCIe 코어(60)는 리틀 엔디안(Little Endian) 포맷을 사용한다. 엔디안 포맷의 변환은 빅/리틀 엔디안 변환기(24a)에 의해 수행된다.
부 양식(Slave modus)
분리될 필요가 있는 세 개의 상이한 유형의 PCIe 액세스 유형이 존재한다. 이를 수행하기 위해, PLB 부 양식은 PLB 버스 인터페이스(23)에게 알려진 세 개의 상이한 메모리 영역을 사용한다. 만일 PLB 버스로부터의 요청이 존재하면, 상기 인터페이스(23)는 상기 요청으로 세 개의 메모리 영역 중 하나를 할당하며 3 비트의 벡터 Bus2IP_ArCS에 의해 그 메모리가 어떠한 유형인지를 지시한다. 부 FSM(21)은 그 신호를 평가하며 그에 대응하여 이러한 유형을 PLB2PCIe 헤더 내에 기록한다.
단일 데이터 워드를 갖는 기록 요청의 신호발신(signaling)을 위해, PLB 버스 인터페이스(23)는 Bus2IP_WrReq 신호를 1로 설정(setting)함으로써 Bus2IP_WrReq 신호를 생성한다. 부 FSM(21)은 또한 헤더 내에 어느 메모리 영역이 관계되었는지 뿐만 아니라 그 유형과 데이터 길이에 대해서도 기록한다.
PLB 규격은 128 바이트의 최대 길이를 갖는 이른바 버스트 전송(burst-transfer)을 정의한다. 그러나, 요청 단계(request phase) 중에, 그 길이는 알 수 없다. 이는, 수신된 데이터가 송신 sFIFO 버퍼(26a)로 기록될 때 수신된 데이터 워드들을 카운트하는, 데이터 D워드 업/다운 카운터(Data DWords Up/Down Counter)(24)인 카운터의 구현을 초래한다. 데이터 워드들의 관리권의 취득(takeover)은 IP2BUS_WrAck 신호를 "1"의 값으로 설정하는 것과 함께 발생한다. 그 후, 상기 카운터의 값은 버스트 전송을 위해 헤더로 입력될 것이다.
4:1 다중화기(27)는 패킷을 RC 데이터 MUX(43)로 전송하기 위해 사용된다. 상기 다중화기는 먼저 PLB2PCIe 헤더를, Bus2IP_Addr 주소 및 연속적으로 송신 sFIFO(26a)의 내용이 뒤따르는, 버스 상으로 전환한다.
읽기 액세스 Bus2IP_RdReq에 대해, 상기 요청은 PCIe 완료 메시지에 응답하는 PCIe 루트 포트 제어기(44)로 송신된다. 데이터 패킷은 완료 수신 버퍼(28a) 내에서 버퍼링된다(buffered). 부 FSM(21)은 ArData 다중화기(27b)의 도움으로 데이터를 출력 IP2Bus_ArData로 전환하며 IP2Bus_RdAck 상에서 신호를 갖는 트랜잭션을 종료한다. 또한 PLB2RC 모듈(20) 내에서 제공되는 TLP 분리 유닛(29)이 존재한다. 상기 모듈(29)을 가져야 할 필요는, 이후에 주 모듈이 설명될 때 설명될 것이다.
버스트 모드 내의 데이터를 읽는 경우, 데이터의 길이와 관련된 문제가 존재한다. 길이 정보는 PLB 버스 인터페이스(23) 내에서 사용 가능하지 않다. PLB 버스트 모드에서, 데이터 워드는 단일하게 읽혀지거나 단일 데이터 워드 내의 PCIe 코어에서 요청될 수 없다. 이러한 이유로 PLB 버스트 길이는 PowerPC 코어(10)에 의해 읽혀져야 할 필요가 있다. 그 후에, 데이터는 PLB 버스 인터페이스(23)로 전달될 것이다. 이러한 동작은 IP 버스 인터페이스(23)가 Bus2IP_RdReq 라인을 낮은 전위(potential)로 다시 떨어뜨릴 때까지 계속된다. 이러한 경우, 모든 128 바이트가 요청되지는 않았을 때, 남아있는 데이터는 완료 수신 버퍼(28a) 내에서 삭제될 것이다.
주 모드(Master mode)
주 모드를 구현하기 위해, 제 2의 유한 상태 기계(22)가 필요하다. 요청 및 인터럽트를 제어하는 것은 주 FSM(22)의 판단 하에 있다. 만일 다른 요청 버퍼(Request Buffer)(28b)가 한 패킷을 수신하면, 이에 대응하여 필요한 어드레스 IP2Bus_Addr 및 IP2IP_Addr, 바이트 가능화 신호(Byte Enable signal) IP2Bus_MstBE 그리고 전송 크기 신호 IP2Bus_MstNum가 기록되어야 한다. IP2BusMstRd/WrReq 라인의 설정으로, 버스 전송 요청은 버스 인터페이스(23)로 송신된다. 곧, PLB 조정자(PLB-Arbiter)가 주 기록 액세스에 대한 버스로의 액세스를 제공한 이후에, 상기 데이터는 로컬 어드레스 IP2IP_Addr로부터 읽혀지며 주소 IP2BUS_Addr로 기록된다. 부 모드 쪽에서는(On the slave side), 부 모드에서와 같이, 오직 IP2Bus_ArData 출력이 ArData 다중화기(27b)에 의해 이제 다른 요청 버퍼(28b)로 전환된다는 차이를 이용하여, 읽기 요청이 동일한 조건 하에서 시작될 것이다. 트랜잭션의 종료는 Bus2IP_MstRdAck 라인을 설정함으로써 주 FSM(22)에 의해 신호발신 될 것이다. 주 읽기 요청(master read request)은 동일한 방법으로 동작한다. PLB 버스 인터페이스(23)는 어드레스 IP2Bus_Addr로부터 데이터를 읽으며, 그 데이터를 로컬 어드레스 IP2IP_Addr로 기록한다. 코딩의 유형과는 별개로, 주 읽기 액세스(master read access)는 부 모드를 따른다. 이러한 경우, 완료 유형이 또한 입력될 수 있도록, 요청은 PCIe 루트 포트에 의해 시작된다.
RX FIFO 메모리(31)로부터 모든 수신된 완료 패킷을 필터링하고 그 패킷들을 완료 수신 버퍼(28a)로 기록하는 것은 TLP 분리 유닛(29)의 작업이다. 모든 남아있는 패킷 유형들(메모리 읽기/기록, 메시지)은 다른 요청 수신 버퍼(28b)에 기억될 것이다. 이러한 유형의 패킷 정렬(sorting)은 교착 상태(deadlock)를 피하기 위한 의향으로 구현되었다.
도 6은 RC 데이터 다중화기(43)의 블록 도면을 도시한다. 상기 블록은 두 개의 논리(logic)를 포함하는데, 하나는 송신 경로를 위한 것이며 다른 하나는 수신 경로를 위한 것이다. 송신 경로에서, 모든 수신된 패킷들은 디코딩 되며(decoded), 어드레스뿐만 아니라 헤더 또한 루트 포트 제어기(44)로 병렬로 전달된다. 이에 대응하는 전송 라인(header_infos_tx) 및 (memIOaddress_tx) 및 (header_infos_tx_valid)가 도면에서 식별된다. 송신 FIFO(30) 내의 모든 데이터 워드들이 다른 FIFO RPC FIFO TX(445a)로 전송된 후에, 헤더 유효 신호(header valid signal)에 대한 라인이 활성화 상태(active state)로 설정될 것이다. TLP_enc_busy=0 신호는 루트 포트 제어기(44)가 정지(Idle) 상태이며 새로운 데이터를 수신하기 위해 대기 중이라는 것을 지시한다. 만일 어느 정도의 시간이 지난 후에 데이터가 수신되지 않는다면, 이러한 상태는 변한다. 그러면 송신 FSM(431)은 송신 FSM(431)이 그 어떤 데이터도 루트 포트 제어기(44)로 전송하지 않는 상태인 대기 상태(wait state)로 변한다.
아날로그 RX 경로는, 데이터 흐름이 PLB 버스 인터페이스(23)의 방향이라는 차이를 가지고 존재한다. header_infos_rx_valid 신호를 설정하는 순간, RX FSM 모듈(432)은 헤더, 어드레스 그리고 데이터를 하나씩 하나씩 RX FIFO 버퍼(31)로 전송한다. 이론적으로 FIFO 메모리가 복수의 패킷을 포함하는 것이 가능하며, 따라서 패킷 종료 점을 결정하기 위한 빈 신호(empty signal)들에 의지할 수 없으므로, 두 개의 데이터 카운터(433a, 433b)는 올바른 양의 데이터 워드가 전송될 것이라는 것을 보장한다. 루트 복소 데이터 다중화기(43)의 주 목적은, 필름 스캐너 데이터 스트림이 흐르는, DPX FIFO 메모리(50)를 추가하는(annex) 것이다. PLB2RC 모듈(20)로부터의 데이터가 TX 경로를 통해 인도되었는지(led) 또는 스캐너로부터 인도되었는지에 대한 결정은 트랜잭션 유형 및 어드레스 디코더(435)를 이용한다. 이러한 TTAD(Transaction Type and Address Decoder, 트랜잭션 유형 및 주소 디코더) 블록(435)은, 만일 아래의 조건들이 만족되면, 루트 포트 제어기(44)에 의해 전달되 는 요청을 확인한다.
1. header_infos_rx: 패킷은 메모리 읽기(Memory Read) 유형으로부터의 패킷이어야 함.
2. memIOaddress_rx: 읽기 어드레스는 오직 정의된 범위로부터의 어드레스여야 함.
결정을 내리는 데에 있어서 문제는, 인피니밴드 카드가 화상 데이터를 기대하는, 어드레스 범위이다. 보통은, 이러한 어드레스 범위는 DDR-RAM(11) 내부의 소프트웨어에 의해 할당된다. 그러나, 스캐너로부터의 화상 데이터는 DDR-RAM(11)으로 가지 않는다. 이에 대해, 어드레스 범위는 전체로서(as whole) DPX FIFO 메모리(50)로 할당되며, 루트 복소 데이터 다중화기(43)는 메모리 범위의 경계선을 알 필요가 있다. 어드레스 범위의 경계선은, 응용 프로그램의 도움으로, 레지스터 내에 프로그램 된다. PCIe 코어(60)와의 통신을 위해, 그 블록 도면이 도 7에서 도시된, 루트 포트 제어기(44)가 필요하다. PCIe 코어(60)는 두 개의 상이한 포트를 포함하는데, 하나는 송신 경로(TX)를 위한 것이며, 다른 하나는 수신 경로(RX)를 위한 것이다. 두 개의 포트 모두는 서술자(descriptor)(128 비트의 TLP 헤더) 및 데이터 위상(data phase)을 이용하여 구동될 것이다. 단일 위상들을 제어하기 위해, 네 개의 유한 상태 기계(441a, 441b, 441c, 441d)가 제공된다. 약간의 대기 주기(wait cycle)를 포함하는 데이터 전송의 처리를 나타내는 시간 다이어그램이 도 8에 도시된다.
트랜잭션 계층 패킷(TLP: transaction layer packet)의 전송에 대해, 헤더 신호는 tx_req0 신호에 의해 코어(60)로 적용될 필요가 있다. 코어는 데이터의 관리권의 취득을 tx_ack0 신호에 의해 확인 통보(acknowledge) 한다. 헤더 데이터는 tx_desc0 라인 상에서 온다. 데이터 워드를 PCIe 코어(60)로 전송하기 위해, tx_dfr0 라인과 tx_req0 라인이 동일한 클록 주기에서 활성화 수준(active level)으로 설정된다. 언제 데이터가 유효한지를 지시하는 데이터 유효 신호(data valid signal) tx_dv0가 존재한다. tx_dfr0 신호는 데이터 송신의 종료를 지시하기 위해 비활성화 수준(inactive level)으로 다시 설정될 필요가 있다. PCI 익스프레스 코어(60)가 사용중인(busy) 경우, tx_ws0 라인 상의 신호에 의해 사용중 상태를 신호발신 할 것이다. 이는 잠시 데이터 송신을 중지시킬 것이다. 도 8에 도시된 시간 다이어그램은 또한 반대 방향으로의 신호 흐름을 설명한다.
TLP 인코더(442)는 TLP 헤더들을 코딩해야 할 책임이 있으며, TLP 디코더(443)는 TLP 헤더들을 디코딩 하는 작업을 갖는다. 두 개의 블록 모두는, 루트 복소 데이터 다중화기(43)로부터의 header_infos와 memIOaddress 신호의 도움으로, 필요한 정보를 교환한다. RPC FIFO TX 메모리(445a)는 전송되어야 하는 모든 데이터 워드들을 포함한다. 기록 포트는, 패킷으로부터의 모든 데이터 워드들이 FIFO 메모리(445a)로 기록된 후에 header_infos_tx_valid 신호를 1의 값으로 설정하는, 루트 복소 데이터 다중화기(43)에 의해 구동된다. 상기 기록이 완료되었을 때, 데이터 D워드 카운터(446)의 도움으로, TLP_enc_busy 신호가 설정되며 올바른 양의 데이터 워드들이 루트 포트 코어(60)로 기록될 것이다.
PCI 익스프레스 규격에 따라서, 그들의 단일의 패킷은 오직 요청된 데이터의 일부만을 반환(return)하는, 복수의 완료 패킷들을 갖는 정의된 크기의 읽기 요청에 응답하는 것을 허용한다. 예컨대, 128 바이트에 대한 메모리 읽기 요청은 각각의 패킷이 64 개의 데이터 바이트를 포함하는, 두 개의 완료 패킷을 이용하여 응답될 수 있다. 또한 두 개의 완료 패킷들 모두가 데이터 스트림 내에서 하나씩 하나씩 전송되지 않을 것이라는 것이 허용되며; 두 패킷 사이에는 어떤 중간 패킷들(intermediate packets)이 존재할 것이다. 이러한 경우, 올바른 완료를 올바른 메모리 범위로 할당하는 것은 요청자(requester)에게 문제가 된다. 이러한 목적을 위해, 메모리 읽기 TLP 요청 패킷으로부터 취해지며 완료 헤더로 삽입되는, 태그 ID가 사용된다. 또한, 상기 헤더는 다음의 의미를 갖는 두 개의 필드를 더 갖는다:
Lowaddress(낮은 어드레스): 이 필드는 오직 첫 완료 패킷에서만 설정될 필요가 있다. Lowaddress는, 다섯 개의 가장 낮은 순서의 어드레스 비트들과 바이트 가능화 값(Byte-Enable Value)으로부터 유도되는 두 개의 비트의 조합으로부터 이루어진다. 나머지 완료 패킷들에 대해, 1과 0 사이에서 토글 되는(toggling) 최상위 비트(MSB)를 제외한, 모든 비트들은 0으로 설정될 것이다.
Bytecount(바이트 카운트): 이 값은 읽기 요청을 완료하기 위해 얼마나 많은 나머지 바이트들이 필요한지를 지시한다. 복수의 완료 내에서의 분리는 TLP 인코더(442)에 의해 수행되며, TLP 인코더(442)는 또한 Lowaddress 및 Bytecount 값들을 계산한다. 계산을 위해, 어드레스 및 길이 버퍼(444) 내에서 버퍼링되는, 어드 레스, 길이, 바이트 가능화 값이 필요하다. 다수의 읽기 요청이 동시에 응답을 기다리고 있으며, 모든 이러한 패킷들은 그 태그 ID에 의해 달라지므로, 상기 태그 ID는 어드레스 및 길이 버퍼(444)의 어드레싱을 위해 직접 취해진다.
DIP 제어기 모듈(51)은 데이터 이미지 프로세서(80)로부터 DPX FIFO 메모리(50)로의 화상 데이터 흐름을 관리한다. DPX FIFO 메모리(50)는 128 비트의 폭을 갖는(128-bit broad) 기록 포트로부터 데이터를 취한다. DIP 제어기(51)로부터의 두 번째 작업은 PowerPC 코어(10)에게 필름 스캐너 데이터의 전송의 시작을 알리는 인터럽트의 생성이다. PowerPC 코어(10) 상에서 실행되는 인터럽트 서비스 루틴(interrupt service routine)은 인피니밴드 통신을 준비하는 프로그램을 시작시킨다.
개시된 실시예들을 갖는 범위 내에 상응하는 특정 양상들이 위에서 설명되었다. 이러한 양상들은 오직 독자에게 본 발명이 취할 수 있는 특정한 형태의 간단한 요약을 제공하기 위해 제공되었으며 이러한 양상들은 본 발명의 범위를 제한하도록 의도되지 않았음이 이해되어야 한다. 과연, 본 발명은 위에서 설명되지 않았을 수 있는 다양한 양상들을 수행할 수도 있다.
본 발명은 고속 인터페이스(high speed interfacing)의 분야, 특히 필름 및 방송 스튜디오 환경에서의 비디오 제작에 사용 가능하다.

Claims (8)

  1. 한 입력에서 데이터 소스(source)로부터 수신된 데이터 워드들의 스트림을 처리하기 위한 디바이스로서, 상기 데이터 워드들은 제 1 FIFO 메모리(50) 내에서 버퍼링되며(buffered), 나아가 정의된 한 포맷의 완료 패킷들(completion packets) 내의 데이터 워드들의 출력을 위한 인터페이스(60)를 포함하고, 상기 인터페이스(60) 또는 상기 인터페이스(60)를 통한 외부 디바이스를 제어하기 위한 요청 패킷들을 생성하기 위한 프로세서(10)를 포함하며, 상기 요청 패킷들은 제 2 FIFO 메모리(30) 내에서 버퍼링되고, 상기 완료 패킷들 및 요청 패킷들은 동일한 데이터 라인들을 통해 상기 인터페이스(60)로 전송되는, 데이터 워드들의 스트림을 처리하기 위한 디바이스에 있어서,
    데이터 워드들의 스트림을 처리하기 위한 디바이스는,
    상기 인터페이스(60)로의 데이터 전송에 대한 미리 정해진(preset) 완료 패킷 길이가 고려될 수 있도록(respected), 완료 패킷들 및 요청 패킷들을 우선권 설계(priority scheme)에 따른 방식으로 혼합시키는(mix) 다중화기 유닛(43)을 포함하는 것을 특징으로 하는, 데이터 워드들의 스트림의 처리를 위한 디바이스.
  2. 제1항에 있어서, 모아진(collected) 데이터 워드들의 수가 상기 미리 정해진 완료 패킷 길이에 대응하는 임계값에 도달할 경우, 상기 제 1 FIFO 메모리(50)는 제 1 패킷 지시 신호를 상기 다중화기 유닛(43)으로 제공하도록 적응되는, 데이터 워드들의 스트림의 처리를 위한 디바이스.
  3. 제1항 또는 제2항에 있어서, 모아진 데이터 워드들의 수가 미리 정해진 요청 패킷 길이에 대응하는 임계값에 도달할 경우, 상기 제 2 FIFO 메모리(50)는 제 2 패킷 지시 신호를 상기 다중화기 유닛(43)으로 제공하도록 적응되는, 데이터 워드들의 스트림의 처리를 위한 디바이스.
  4. 제1항 또는 제2항에 있어서, 상기 인터페이스(60)는 PCI 익스프레스 인터페이스이며, 상기 다중화기 유닛(43)은 상기 인터페이스(60)로 송신될 완료 패킷에 대한 PCI 익스프레스 완료 헤더를 생성하기 위한 완료 헤더 생성기(42)를 포함하는, 데이터 워드들의 스트림의 처리를 위한 디바이스.
  5. 제4항에 있어서, 상기 다중화기 유닛(43)에는 PCI 익스프레스 완료 헤더 생성기(442) 및 완료 패킷 및 요청 패킷 다중화기(434)를 구비하는(equipped), 데이터 워드들의 스트림의 처리를 위한 디바이스.
  6. 제1항 또는 제2항에 있어서, 상기 다중화기 유닛(43)은 하나의 유한 상태 기계(finite state machine)(41)를 구비하며, 상기 유한 상태 기계(41)는, 만일 제 2 지시 신호(indication signal)가 검출되면 제 2 FIFO 메모리(30)로부터의 요청 패킷을 전송하는 것을 시작하기 전에 제 1 FIFO 메모리(50) 내의 패킷으로부터의 마지막 데이터 워드가 상기 다중화기 유닛(43) 내에서 처리되었다는 것의 지시를 상기 유한 상태 기계(41)가 기다리는 규칙에 따라 동작하도록 적응되는, 데이터 워드들의 스트림의 처리를 위한 디바이스.
  7. 제4항에 있어서, 상기 다중화기 유닛(43)은, 완료 패킷들의 송신을 위한 요청들을 요청 패킷 응답들로부터 분리시키며, 한편으로는 대응하는 완료 패킷들을 생성하기 위해 그리고 다른 한편으로는 상기 프로세서(10)에 대한 요청 패킷 응답을 생성하기 위해, 상기 완료 패킷들을 송신하기 위한 요청들을 유한 상태 기계(431)로 방향을 향하게 하는, 분리 유닛(432, 435, 436b)을 포함하는, 데이터 워드들의 스트림의 처리를 위한 디바이스.
  8. 제7항에 있어서, 상기 분리 유닛(432, 435, 436b)은 두 개의 대응되게 적응되는 어드레스 및 전송 유형 디코더를 포함하는, 데이터 워드들의 스트림의 처리를 위한 디바이스.
KR1020097004526A 2006-09-06 2007-09-04 데이터 워드들의 스트림의 처리를 위한 디바이스 KR101289011B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06120168 2006-09-06
EP06120168.7 2006-09-06
PCT/EP2007/059245 WO2008028910A1 (en) 2006-09-06 2007-09-04 Device for processing a stream of data words

Publications (2)

Publication Number Publication Date
KR20090048491A KR20090048491A (ko) 2009-05-13
KR101289011B1 true KR101289011B1 (ko) 2013-07-23

Family

ID=38626196

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097004526A KR101289011B1 (ko) 2006-09-06 2007-09-04 데이터 워드들의 스트림의 처리를 위한 디바이스

Country Status (6)

Country Link
US (1) US8200877B2 (ko)
EP (1) EP2059877B1 (ko)
JP (1) JP5194014B2 (ko)
KR (1) KR101289011B1 (ko)
DE (1) DE602007008582D1 (ko)
WO (1) WO2008028910A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101283482B1 (ko) * 2009-12-11 2013-07-12 한국전자통신연구원 Pci 익스프레스 프로토콜 처리 장치
US8943255B2 (en) 2012-05-29 2015-01-27 Lsi Corporation Methods and structure for accounting for connection resets between peripheral component interconnect express bridges and host devices
CN103869883B (zh) * 2012-12-17 2018-05-04 深圳中电长城信息安全系统有限公司 一种扩展主板及扩展系统
US10223006B2 (en) * 2014-10-03 2019-03-05 Drive Thru Technology Inc. Data management system
US10084488B1 (en) * 2015-06-30 2018-09-25 Mosys, Inc. Chip-to-chip port coherency without overhead
US10216669B2 (en) * 2016-02-23 2019-02-26 Honeywell International Inc. Bus bridge for translating requests between a module bus and an axi bus
US11573800B2 (en) * 2018-07-05 2023-02-07 Marvell Asia Pte, Ltd. Complex I/O value prediction for multiple values with physical or virtual addresses
CN111666242B (zh) * 2020-06-09 2022-04-01 湖南泽天智航电子技术有限公司 一种基于飞腾平台lpc总线的多路通信系统
CN113726753B (zh) * 2021-08-20 2023-07-14 浪潮电子信息产业股份有限公司 一种PCIe IP核数据传输方法、装置、设备及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620057B1 (en) * 2004-10-19 2009-11-17 Broadcom Corporation Cache line replacement with zero latency

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01171345A (ja) * 1987-12-26 1989-07-06 Nec Corp 分散処理型パケット交換機
JP4181645B2 (ja) * 1996-02-29 2008-11-19 富士通株式会社 データ処理装置
JP3799726B2 (ja) * 1997-04-01 2006-07-19 ソニー株式会社 信号処理回路
US6243781B1 (en) 1998-12-03 2001-06-05 Intel Corporation Avoiding deadlock by storing non-posted transactions in an auxiliary buffer when performing posted and non-posted bus transactions from an outbound pipe
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7487273B2 (en) * 2003-09-18 2009-02-03 Genesis Microchip Inc. Data packet based stream transport scheduler wherein transport data link does not include a clock line
US7631118B2 (en) * 2003-12-31 2009-12-08 Intel Corporation Lane to lane deskewing via non-data symbol processing for a serial point to point link
US7668165B2 (en) * 2004-03-31 2010-02-23 Intel Corporation Hardware-based multi-threading for packet processing
CN101061690B (zh) * 2004-11-18 2011-04-13 Nxp股份有限公司 PCI Express总线中基于性能的分组排序
EP1694023A1 (en) * 2005-02-18 2006-08-23 Deutsche Thomson-Brandt Gmbh Method for performing data transport over a serial bus using internet protocol and apparatus for use in the method
US7424565B2 (en) * 2005-11-16 2008-09-09 Sun Microsystems, Inc. Method and apparatus for providing efficient output buffering and bus speed matching
US7636835B1 (en) * 2006-04-14 2009-12-22 Tilera Corporation Coupling data in a parallel processing environment
US20080072113A1 (en) * 2006-08-30 2008-03-20 Siukwin Tsang Method of locating packet for resend from retry buffer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620057B1 (en) * 2004-10-19 2009-11-17 Broadcom Corporation Cache line replacement with zero latency

Also Published As

Publication number Publication date
EP2059877A1 (en) 2009-05-20
EP2059877B1 (en) 2010-08-18
JP2010503095A (ja) 2010-01-28
JP5194014B2 (ja) 2013-05-08
US8200877B2 (en) 2012-06-12
WO2008028910A1 (en) 2008-03-13
KR20090048491A (ko) 2009-05-13
US20100005205A1 (en) 2010-01-07
DE602007008582D1 (de) 2010-09-30

Similar Documents

Publication Publication Date Title
KR101289011B1 (ko) 데이터 워드들의 스트림의 처리를 위한 디바이스
US4744078A (en) Multiple path multiplexed host to network data communication system
US7281030B1 (en) Method of reading a remote memory
KR101567371B1 (ko) 프로세서 내로의 지적 재산(ip) 블록들의 통합
US7613864B2 (en) Device sharing
US7293129B2 (en) Flexible routing and addressing
JP2575596B2 (ja) バス・ブリッジを介してデータを通信する方法およびデータ処理システム
US6947442B1 (en) Data transfer control device and electronic equipment
US7787490B2 (en) Method and apparatus for multiplexing multiple protocol handlers on a shared memory bus
US20060242333A1 (en) Scalable routing and addressing
US7752376B1 (en) Flexible configuration space
JPH0426740B2 (ko)
US6131135A (en) Arbitration method for a system with two USB host controllers
JPH0827773B2 (ja) データ経路を使用可能にする方法、装置およびデータ処理システム
JP2004520646A (ja) 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置
US6567881B1 (en) Method and apparatus for bridging a digital signal processor to a PCI bus
US6810445B1 (en) Data transfer control device and electronic equipment
WO2021147045A1 (zh) 一种基于PCIe的数据传输方法及装置
US7162564B2 (en) Configurable multi-port multi-protocol network interface to support packet processing
US7185128B1 (en) System and method for machine specific register addressing in external devices
US7610415B2 (en) System and method for processing data streams
JP2008502977A (ja) バス・コントローラのための割り込み方式
US7107381B2 (en) Flexible data transfer to and from external device of system-on-chip
US6378017B1 (en) Processor interconnection
JP4432388B2 (ja) 入出力制御装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160624

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190716

Year of fee payment: 7