KR101064101B1 - 컨텐츠-종결 dma - Google Patents

컨텐츠-종결 dma Download PDF

Info

Publication number
KR101064101B1
KR101064101B1 KR1020097017581A KR20097017581A KR101064101B1 KR 101064101 B1 KR101064101 B1 KR 101064101B1 KR 1020097017581 A KR1020097017581 A KR 1020097017581A KR 20097017581 A KR20097017581 A KR 20097017581A KR 101064101 B1 KR101064101 B1 KR 101064101B1
Authority
KR
South Korea
Prior art keywords
data
dma
transfer
operable
dma circuit
Prior art date
Application number
KR1020097017581A
Other languages
English (en)
Other versions
KR20090102870A (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 KR20090102870A publication Critical patent/KR20090102870A/ko
Application granted granted Critical
Publication of KR101064101B1 publication Critical patent/KR101064101B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Bus Control (AREA)
  • Communication Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

컨텐츠-종결 직접 메모리 액세스(CT-DMA) 회로는 자율적으로(autonomously) 소스로부터 목적지로 알려지지 않은 길이의 데이터들을 송신하고, 상기 데이터의 컨텐츠에 기초하여 전달을 종결한다. 데이터 전달 이전에 필터 기준이 CT-DMA에 제공된다. 필터 기준은 전달 데이터와 비교되는 패턴 데이터 및 비교 결과들을 해석하기 위한 전달 종결 규칙들을 포함한다. 데이터는 필터 기준이 충족될 때까지 목적지로 기록된다. 전형적인 필터 기준은 전달 데이터의 하나 이상의 유닛들이 패턴 데이터와 매칭되는지; 전달 데이터의 하나 이상의 유닛들이 패턴 데이터와 매칭되는데 실패하는지; 또는 전달 데이터의 하나 이상의 유닛들이 미리 결정된 횟수만큼 패턴 데이터와 매칭되는지 여부를 포함할 수 있다.

Description

컨텐츠-종결 DMA{CONTENT-TERMINATED DMA}
본 발명은 일반적으로 컴퓨팅 시스템들에서의 직접 메모리 액세스(DMA)에 관한 것이며, 특히, 송신되고 있는 데이터의 값(들)에 응답하여 데이터 전달들을 종결하는 DMA에 관한 것이다.
휴대용 전자 디바이스들의 컴퓨팅 시스템들을 포함하는 현대의 컴퓨팅 시스템들은 사진, 그래픽 이미지, 비디오, 오디오 등을 나타내는 디지털 데이터와 같은 대량의 데이터를 프로세싱한다. 이러한 데이터는 입력/출력(I/O) 주변 디바이스로부터 메모리로, 메모리로부터 그래픽 프레임 버퍼로, 메모리의 한 영역으로부터 다른 영역으로 - 일반적으로 데이터 소스로부터 데이터 목적지로 - 와 같이 컴퓨팅 시스템 내에서 송신되어야 한다. 프로세서에 부담을 주지 않고 인트라-시스템 데이터 전달을 달성하기 위한 공지된 기술은 DMA 제어기로서 또한 공지되는 직접 메모리 액세스(DMA) 회로를 포함하는 것이다.
프로세서는 DMA 제어기의 제어 레지스터들에 정보를 기록함으로써, 또는 메모리에 제어 블럭들을 기록하고 DMA 제어기 레지스터의 제어 블럭들로 포인터를 위치시킴으로써, 소스 및 목적지 정보(메모리 어드레스들 또는 주변 장치 포트들을 포함할 수 있는) 및 송신 카운트로 DMA 제어기를 개시한다. 프로세서로부터 GO 지 시 또는 명령을 수신시, DMA 제어기는 자율적으로 소스로부터 데이터를 판독하여 그것을 목적지에 기록하며, 특정 수의 데이터 유닛(unit)들이 송신되는 때까지 프로세스를 반복한다. 복잡한 DMA 제어기들은 다수의 채널들을 포함할 수 있고, 상이한 워드 크기들을 갖는 유닛들 사이에서의 데이터 전달을 위한 분산/수집 동작들과 같은, 저-레벨 데이터 전달 업무들을 처리할 수 있다. 그것은 또한 연쇄(chain) DMA 전달들로 공지된다. 연쇄 동작들에서, 후속 DMA 전달 지시를 위해 DMA 제어기가 정보(예를 들어, 새로운 소스, 목적지, 카운트 등)에 제공되거나 정보에 대해 지시될 수 있으며, 이는 진행중인 DMA 전달의 종결시 시작된다.
프로세서가 컴퓨팅 시스템 내에 송신을 요구하는 데이터 수집의 길이를 선험적으로 항상 알 수는 없다. 예를 들어, 문자 스트링("Hello world"와 같은)을 카피하기 위하여, 각각의 문자는 소스 위치로부터 검색되고, 레지스터에 위치되며, 0과 비교된다(C 언어 스트링 종결 문자). 비교가 실패하면, 문자는 목적지 위치에 기록되고, 다음 문자가 판독되고 비교된다. 프로세서가 문자 스트링에서 0과 만날 때, 데이터 전달이 완료된다. 이것은 프로세서-민감성 업무이고, 부가적으로 매우 많은 횟수의 메모리 액세스들을 포함하는 것이다. 소스 및/또는 목적지 어드레스들이 캐시 입력 불가능하다면(non-cacheable), CPU는 특히 메모리 액세스들이 프로세서 실행보다 훨씬 느린 시스템들에서, 메모리 동작들이 완료되길 기다리는데 상당한 시간을 소비할 수 있다. 이것은 프로세서 성능을 심각하게 저하시킨다.
문자 스트링의 길이가 공지되지 않기 때문에, 데이터 전달 업무는 일반적으로 종래의 DMA 제어기에 오프-로딩되지 않는다. 종래의 DMA 제어기들은 그들이 송 신하는 데이터를 검사할 수 있는 능력을 갖지 않으며, 소스로부터 목적지로 명시된 데이터량을 "보이지 않게(blindly)" 송신한다. 문자 스트링의 길이는 각각의 문자를 공지된 데이터 패턴과 비교함으로써 결정된다. 이러한 비교는 종래에 프로세서에 의하여 수행된다. 프로세서가 종래의 DMA 제어기에 대한 데이터 전달 업무를 오프-로딩하기 위하여, 이것은 스트링 길이를 결정하기 위해 문자들을 성공적으로 판독하고 비교하며, 송신 카운트로 DMA 동작을 구성해야 한다. 그러나, 이것은 데이터 전달 업무의 절반을 수행하기 때문에(판독), 종래의 DMA 제어기들을 갖는 시스템들의 프로세서들은 간단히 각각의 문자를 목적지에 직접 기록하고, 스트링의 끝을 구별하는 공지된 데이터 패턴이 검출될 때, 프로세스를 중지시킨다.
다른 프로토콜들은 다수의 문자들을 갖는 데이터 스트링들을 종결시킨다. 예를 들어, 하이퍼-텍스트 마크업 언어(HTML)에서, 특정 포맷팅 또는 처리를 수신하기 위해 스트링은 시퀀스</키워드>에 의하여 종결되며, 이는 검출하기 위하여 다수의 연속적인 문자 비교들을 요구한다.
본 명세서에 설명되고 청구되는 하나 이상의 실시예들에서, 컨텐츠-종결 직접 메모리 액세스(CT-DMA) 회로는 알려지지 않은 길이의 데이터의 DMA 전달들을 수행하고, 데이터의 컨텐츠에 기초하여 전달을 종결한다. 필터 기준이 데이터 전달 이전에 CT-DMA에 제공된다. 필터 기준은 전달 데이터와 비교되는 패턴 데이터 및 비교 결과들을 해석하기 위한 전달 종결 규칙들을 포함한다. CT-DMA는 소스로부터 데이터를 판독하여, 그것을 필터 기준이 충족될 때까지 목적지에 기록한다.
일 실시예는 CT-DMA 회로에 관한 것이다. 회로는 소스로부터 데이터를 판독 및/또는 목적지에 데이터를 기록하도록 동작가능한 데이터 전달 인터페이스 및 필터 기준을 저장하도록 동작가능한 메모리를 포함한다. CT-DMA 회로는 전달 데이터를 하나 이상의 필터 기준과 비교하도록 동작가능한 비교기 및 비교기 출력에 응답하여 DMA 전달을 종결하도록 동작가능한 제어기를 더 포함한다.
다른 실시예는 소스로부터 목적지로 알려지지 않은 양의 데이터를 송신하는 방법에 관한 것이다. 데이터는 연속적으로 소스로부터 판독되어, 미리 결정된 패턴 데이터와 비교된다. 비교에 응답하여 전달을 종결할 때가 결정된다. 데이터는 송신이 종결될 때까지 목적지로 연속하여 기록된다. 이러한 방법 단계들은 프로세서에 의해 자율적으로 수행된다.
또 다른 실시예들은 컴퓨팅 시스템과 관련된다. 시스템은 데이터를 제공하도록 동작가능한 데이터 소스 및 데이터를 수신하도록 동작가능한 데이터 목적지를 포함한다. 시스템은 소스로부터 목적지로 데이터 전달을 수행하도록 동작가능하며, 전달 데이터의 하나 이상의 값들에 응답하여 데이터 전달을 종결하도록 추가로 동작가능한 CT-DMA 회로를 더 포함한다. 시스템은 CT-DMA 회로를 개시하도록 동작가능한 프로세서를 더 포함한다.
도 1은 CT-DMA 회로를 포함하는 컴퓨팅 시스템의 기능적 블럭도이다.
도 2는 CT-DMA 회로의 데이터 비교 회로의 기능적 블럭도이다.
도 3은 소스로부터 목적지로 알려지지 않은 데이터량을 송신하는 방법의 흐 름도이다.
하나 이상의 실시예들에 따라, 컨텐츠-종결 직접 메모리 액세스(CT-DMA)는 소스로부터 목적지로 알려지지 않은 길이의 데이터를 송신하며, "무선(in-flight)" 데이터에 필터 기준을 적용함으로써 전달을 종결한다. 필터 기준은 송신되고 있는 데이터와 비교하기 위한 패턴 데이터 및 비교에 응답하여 전달을 종결하기 위한 규칙을 포함한다.
도 1은 일반적으로 번호 10으로 지시되는 전형적인 컴퓨팅 시스템을 도시한다. 컴퓨팅 시스템(10)은 레벨-1(L1) 캐시(14)를 포함할 수 있는 프로세서(12)를 포함한다. 프로세서(12)는 본 기술분야에 공지되는 바와 같이, 프로그램-저장된 마이크로프로세서, 디지털 신호 프로세서(DSP) 등을 포함할 수 있다. 메모리 계층구조에서 L1 캐시(14) 뒤에 L2 캐시(16)가 올 수 있다. 일 실시예에서, L2 캐시(16)를 포함하는 메모리의 일부는 긴밀하게 결합된 메모리(TCM)(18)로서 프로세서(12)에 의하여 이용된다. TCM(18)은 메모리 계층구조에서 메인 메모리 어드레스 공간의 일부이나, 물리적이고 논리적으로 프로세서(12)에 보다 긴밀하게 연결된다 - 예를 들어, 프로세서는 TCM(18)에 액세스하기 위하여 시스템 버스(20)에 대하여 조정할 필요가 없다. L2 캐시(16) 및 CT-DMA(26)는 시스템 버스(20)를 통해 메인 메모리(22)를 판독하고 기록한다. TCM(18) 및 예를 들어, NIC 카드, 무선 통신 트랜시버, 블루투스 인터페이스 등과 같은 입력/출력(I/O) 주변 장치(24)는 시스템 버스(20)상의 종속 디바이스이다. I/O 주변 장치(24)는 컴퓨팅 시스템(10)으로 또 는 컴퓨팅 시스템 외부로 데이터를 송신할 수 있다.
CT-DMA 회로(26)는 시스템 버스(20)상의 마스터 디바이스이고, 이에 의하여 메인 메모리(22), TCM(18) 및 I/O 주변 장치(24)를 판독하고 기록할 수 있다. CT-DMA 회로(26)는 부가적으로 또는 대안적으로 I/O 주변 장치(24)의 데이터 포트에 직접 연결될 수 있다. 추가로, 도 1에 개시되는 실시예에서, CT-DMA 회로(26)는 프로세서(12)에 긴밀하게 통합되고, 프로세서(12)와 CT-DMA(26) 사이에서 TCM(18)에 직접 액세스할 수 있다(프로세서(12)와 CT-DMA(26) 사이에서 TCM(18)으로 어드레스 비트들을 멀티플렉싱하는 단계 등에 의하여).
프로세서(12)에 의한 초기화에 이어, CT-DMA 회로(26)는 컴퓨팅 시스템(10) 내에 소스로부터 목적지로 데이터를 송신하고, 데이터의 하나 이상의 값들에 응답하여 전달을 종결한다. 하나의 도식적인 실시예로서, 프로세서(12)는 메인 메모리(22)로부터 CT-DMA 회로(26)가 TCM(18)으로 비공지된 길이의 문자 스트링을 송신하도록 지시할 수 있으며, 프로세서(12)는 문자 스트링을 보다 효율적으로 작동할 수 있다.
하나 이상의 실시예들에서, 송신되고 있는 데이터에 응답하여 CT-DMA 회로(26)가 송신이 완료된 것으로 결정할 때, CT-DMA 회로(26)는 전달을 종결하고, 인터럽트 제어기(28)를 통해 또는 직접 프로세서(12)를 인터럽트할 수 있다. 다른 실시예들에서, CT-DMA 회로(26)는 제어 레지스터에 플래그를 설정하고, 데이터 전달이 완료된 것으로 결정하기 위하여 플래그의 상태를 폴링(polling)하는 프로세서(12)에 의존할 수 있다. 다른 실시예들에서, 임의의 특정 구현의 명령들 또는 선호들을 충족시키기 위하여 본 기술분야의 당업자들에 의하여 용이하게 고안될 수 있는 바와 같이, CT-DMA 회로(26)는 다양한 방식으로 프로세서(12)로 완료된 데이터 전달 동작을 시그널링할 수 있다.
본 명세서에서 사용될 때, 데이터 소스는 임의의 메모리 위치(22, 18), 주변 장치(24)의 데이터 포트, 또는 시스템 버스(20)를 통해 또는 직접 연결에 의하여 CT-DMA 회로(26)에 의해 액세스가능한 다른 데이터 소스로 지칭된다. 본 명세서에서 사용될 때, 데이터 목적지는 유사하게 임의의 메모리(22, 18) 또는 주변 장치(24)로 지칭된다. 또한, 데이터 목적지는 NULL 목적지일 수 있으며, 이 경우에 전달 데이터는 폐기된다. 데이터는 문자 스트링(예를 들어, C 언어 동작 strlen)의 길이를 결정하도록 다양한 이유들로 바람직하게는 NULL 목적지로 "송신"될 수 있다.
도 2는 통상적 CT-DMA 회로(26)의 일 실시예의 데이터 비교 기능의 양상들을 전개하도록 표시되는 기능적 블럭도이다. 도 2는 임의의 주어진 CT-DMA 회로(26)의 실제 하드웨어를 나타내도록 의도되지 않았음을 유념해야 한다. 추가로, 도 2는 CT-DMA 회로(26) 기능의 서브세트를 도시한다; 논의와 밀접한 관계가 있지 않은 다수의 DMA 회로들 및 기능들이 명료성을 위하여 도 2로부터 삭제된다.
일 실시예에서, CT-DMA 회로(26)는 도시된 실시예에서는 8개 저장 위치들을 포함하는 퍼스트-인-퍼스트-아웃(FIFO) 데이터 버퍼(30)를 포함한다. 저장 위치들은 본 기술분야에 공지되는 바와 같이 레지스터들 또는 메모리를 포함할 수 있으며, 다양한 작동 버퍼들(30) 중 임의의 것으로서 구성될 수 있다. 저장 위치들은 필요 또는 요구되는 바에 따라 임의의 폭일 수 있으며(예를 들어, 바이트, 하프워드, 워드 등), 각각에 저장되는 데이터는 데이터의 "유닛"으로서 본 명세서에서 지칭된다. 물론, 버퍼(30)는 필요 또는 요구되는 바에 따라 8개보다 많거나 더 적은 저장 위치들을 포함할 수 있다. CT-DMA 데이터 전달 동안에 소스로부터 판독되는 데이터는 FIFO(30)으로 입력되며, 비교 동작들의 결과들에 따라, 목적지로 기록될 수 있다. 이러한 데이터는 본 명세서에서 전달 데이터로서 지칭된다.
CT-DMA 회로(26)는 패턴 데이터 저장부(32)를 포함한다. 프로세서(12)는 CT-DMA 데이터 전달을 개시하기 이전에 패턴 데이터 저장 위치들(32)로 미리 결정된 데이터 패턴들을 기록할 수 있다. 도 2에 개시되는 실시예에서, 패턴 데이터 저장부(32)는 저장 위치들의 개수 및 그들의 데이터 폭의 관점에서 FIFO(30)를 반영한다. 다른 실시예들에서, 저장 위치들의 개수는 매칭되지 않을 수 있다. 특히, 일 실시예에서, FIFO(30)는 하나 이상의 저장 위치들을 포함할 수 있으며, 패턴 데이터 저장부(32)는 FIFO(30)에서의 개수보다 많은 다수의 저장 위치들을 포함할 수 있다. 이러한 경우에, 상태 머신과 같은 제어 회로는 FIFO(30)의 전달 데이터의 각각의 유닛을 둘 이상의 데이터 패턴 유닛과 연속적으로 비교할 수 있다. 일 실시예에서, 데이터 저장 위치들의 개수가 매칭되는지 여부에 따라, FIFO(30)와 패턴 데이터 저장부(32) 사이의 데이터 유닛 폭은 상이할 수 있다. 예를 들어, 패턴 데이터의 단일 바이트는 예를 들어, 모든 전달 데이터 워드의 동일한 바이트, 모든 데이터 전달 워드의 각각의 바이트 등과 비교될 수 있다. 이러한 데이터 비교 프로시져들은 프로그램가능할 수 있으며, 필터 기준에 포함될 수 있다. 애플리 케이션에 대한 특정 패턴 데이터가 공지되는 일 실시예에서, 패턴 데이터 저장부(32)는 하나 이상의 하드와이어드(hardwired) 비트 패턴들을 포함할 수 있다.
전달 데이터가 FIFO(30)를 통해 흐를 때, 그들은 n-비트 비교기들(34)에서 대응 패턴 데이터와 비교된다(여기서, N은 데이터 유닛 폭과 매칭됨 - 즉, 패턴 데이터(32) 입력들 및 FIFO(30)의 폭). 비교기들(23)의 출력들은 패턴 데이터 및 전달 데이터의 하나 이상의 유닛들 사이에서의 매칭을 검출하기 위하여 함께 논리적으로 AND 연산된다. 일 실시예에서, 도 2에 보여지는 바와 같이 AND 함수들(36)은 캐스케이딩(cascade)되고, 각각의 중간 출력은 전달 종결 결정 로직(38)으로 제공된다. 도시되는 실시예에서, 전달 종결 결정 로직(38)은 1 내지 8개 데이터 유닛들을 포함하는 송신-종결 비교를 검출할 수 있다. 예를 들어, 전달 종결 규칙들은 전달을 종결하기 위하여 특정 순서로 미리 결정된 문자들을 매칭시키기 위하여 문자 스트링에서 8개에 달하는 문자를 요구할 수 있다.
전달 종결 결정 로직(38)이 작동하는 규칙들은 프로세서(12)에 의하여 CT-DMA 제어 로직(40)으로 제공되며, CT-DMA 제어 로직(40)은 전달 종결 결정 로직(38)을 구성한다. 패턴 데이터와 함께, 이러한 전달 종결 규칙들은 본명세서에서 필터 기준으로서 지칭된다. 일반적으로, 본 발명의 CT-DMA 회로(26)는 충분한 필터 기준 세트를 지원하고, 광대한 범위의 송신-종결 기능을 제공할 수 있다. 하기의 리스트는 필터 기준 및 데이터 목적지를 변경함으로써 CT-DMA 회로(26)의 실시예들에 의하여 제공되는 기능의 몇몇 대표적인 비-제한 실시예들을 제공한다; 몇몇 기능들은 연관된 기능에 의하여 직접 구현될 수 있는 C 언어 명령들을 포함한 다:
· 미리 결정된 키에 의하여 종결된 데이터 전달(strcpy);
· NULL 목적지: 카피는 수행되지 않거나 폐기됨(srcmp);
· 송신 길이 결정(strlen) - NULL 목적지로 송신함으로써 카운트만의 수행 또는 송신에 부수적인;
· 송신과 연관될 수 있는 최대 길이(strnlen, strncpy, strncmp);
· 다중-유닛 키에 의하여 종결되는 데이터 전달(HTML 태그)
· 상이한 키들에 대한 비교 결과들의 논리적 결합들(AND, OR)
· 전달 데이터 및 패턴 데이터가 미리 결정된 횟수만큼 매칭
· 반전 매칭 경우(즉, 전달 데이터가 패턴 데이터와 매칭하는데 실패할 때 전달을 종결)
제어 로직(40)은 부가적으로 충분한 컨텐츠-종결 DMA 세트 뿐 아니라 종래의 DMA 전달 기능을 구현하기 위하여 다양한 상태 레지스터들, 카운터들 및 로직(미도시)을 포함한다. 어드레스 생성 회로(42)를 제어함으로써, 제어 로직(40)은 다음과 같은 광범위한 CT-DMA 전달 기능을 지원할 수 있다:
· 증분(increment) 또는 비-증분 소스 및/또는 목적지 어드레스들(예를 들어, 스트리밍 데이터);
· 상이한 워드 폭을 갖는 소스와 목적지 사이에서의 데이터를 송신하기 위한 분산/수집 동작들을 수행;
· 오름차순(ascending) 또는 내림차순(descending) 송신들(즉, 증분 또는 감소 연속 어드레스들);
· 선택적으로 패턴들을 송신하거나 그러지 않기 위하여 NULL 목적지를 사용하는 것을 포함하는, 스트라이드(stride) 설정(행/열 해석);
· 컨텐츠-제어된 연쇄(chained) DMA 전달들
연쇄 DMA 전달들은 다양한 방식으로 전달 데이터의 컨텐츠에 의하여 제어될 수 있다. 예를 들어, 현재 DMA 동작에서의 전달 데이터의 하나 이상의 값들이 어느 DMA 채널이 후속 DMA 동작을 위해 사용될지를 결정할 수 있다. 다른 실시예로서, 소스 및/또는 목적지, 스트라이드, 및/또는 후속 DMA 동작에 대한 카운트는 전달 데이터의 값들에 의하여 결정될 수 있다. 일 실시예에서, 패턴 데이터에 대한 전달 데이터의 매치는 DMA 제어 파라미터들(소스, 목적지 등)을 포함하는 상이한 메모리 위치들로 CT-DMA를 지향시킴으로써 후속 DMA 동작들을 제어할 수 있다.
도 3은 프로세서(12)(왼쪽) 및 CT-DMA 회로(26)(오른쪽)의 관점으로부터, 알려지지 않은 데이터량을 소스로부터 목적지로 송신하는 방법의 흐름도를 도시한다. 방법은 소스 및 목적지 어드레스들 또는 식별자들 및 필터 기준(패턴 데이터 및 전달 종결 규칙들 모두를 포함하는)과 같은 초기화 정보를 CT-DMA 회로(26)로 제공함으로써 프로세서(12)가 송신을 설정할 때 시작한다(블럭(100)). 이것은 CT-DMA 회로(26)상에 패턴 데이터 저장부(32) 및/또는 레지스터들로 정보를 기록하는 단계 또는 메모리에 정보를 저장하는 단계 및 CT-DMA 회로(26) 레지스터로 메모리 위치에 대한 포인터를 기록하는 단계를 포함할 수 있다. 따라서, CT-DMA 회로(26)는 메모리에서 직접 또는 메모리로부터 그것을 판독함으로써 초기화 정보를 수용한다(블럭(102)). 프로세서(12)는 송신을 개시하기 위하여 CT-DMA 회로(26)로 GO 지시를 송신한다(블럭(103)). GO 지시는 CT-DMA 제어 로직(40)에서 제어 레지스터로 플래그를 기록하는 단계, 프로세서(12)와 CT-DMA 회로(26) 사이에서 신호를 선언(assert)하는 단계를 포함할 수 있으며, 또는 본 기술분야에 공지되는 다른 수단에 의하여 수행될 수 있다.
CT-DMA 회로(26)는 메모리 위치 또는 주변 장치 포트를 포함할 수 있는 소스로부터의 데이터 유닛을 FIFO(30)와 같은 버퍼에 판독함으로써(블럭(104)) 송신을 시작한다. 데이터 유닛 판독은 소스 데이터 인터페이스의 폭에 따라, 소스에 지시된 하나 이상의 판독 동작들을 요구할 수 있다. CT-DMA 회로(26)는 FIFO(30)의 전달 데이터를 프로세서(12)에 의하여 제공되는 패턴 데이터(32)와 비교한다(블럭(106)). CT-DMA 회로(26)에서의 전달 종결 결정 로직(38)은 비교들의 결과들로 프로세서(12)에 의하여 제공되는 전달 종결 규칙들을 적용한다(블럭(108)). 전달 종결 결정 로직(38)이 송신이 아직 종결되어서는 안 됨을 지시한다면(블럭(110)), CT-DMA 회로(26)는 데이터의 유닛을 목적지 메모리 어드레스 또는 주변 장치 포트에 기록하고(블럭(112)), 이는 목적지로 지시되는 하나 이상의 기록 동작들을 요구할 수 있다. CT-DMA 회로(26)는 그 후 송신 카운트를 업데이트하고(예를 들어, 카운터를 증분 또는 감소시킴으로써)(블럭(114)), 소스로부터 전달 데이터의 다른 유닛을 판독한다(블럭(104)).
CT-DMA 회로(26)가 전달 데이터 및 패턴 데이터 비교 결과들에 전달 종결 규칙들을 인가하는 것에 기초하여 송신이 종결되어야 하는 것으로 결정할 때, 이것을 프로세서(12)에 통지한다. 상기 개시된 바와 같이, 이러한 통지는 인터럽트를 선언하는 것, 제어 로직(40)의 상태 레지스터 또는 메모리(22)의 미리 결정된 위치와 같은 미리 결정된 위치로 플래그 또는 다른 미리 결정된 데이터를 기록하는 것, 또는 다른 통지 수단을 포함할 수 있다.
하나 이상의 실시예들에서, 프로세서(12)는 데이터 전달을 일부로서 종결 키를 유지시키도록 원하고, 종결 송신 결정(블럭(110))은 CT-DMA 회로(26)가 소스로부터의 데이터 판독을 종결하도록 할 수 있으나(블럭(104)), 목적지에 전달 데이터를 기록하고(블럭(112)), 종결 키가 송신될 때까지 계속해서 송신 카운트를 업데이트한다(블럭(114)). 몇몇 실시예들에서, 종결 동작은 프로그래밍가능하다 - 즉, 송신의 일부로서 종결 키를 기록할지 아닌지 여부에 대한 결정은 초기화 정보의 일부로서 프로세서(12)에 의하여 명시된다.
도 3의 점선은 프로세서(12)와 CT-DMA 회로(26) 사이의 동기화를 도시한다. 시간으로부터, 프로세서(12)는 CT-DMA 회로(26)가 프로세서(12)에 송신이 완료되었음을 통지할 때까지(블럭(116)) GO 지시를 발행하고(블럭(103)), 프로세서(12)는 자유롭게 다른 업무들을 수행하거나(블럭(118)), 또는 다른 업무들이 계류중이라면 휴면 모드가 된다. CT-DMA 회로(26)로부터 송신이 완료되었다는 통지를 수신시(블럭(116)), 프로세서는 목적지에서 송신된 데이터를 프로세싱하거나(블럭(120)), 그렇지 않으면 포스트-데이터-송신 활동을 진행할 수 있다.
CT-DMA 회로(26)의 실시예들은 알려지지 않은 길이의 루틴한 데이터 전달들(그리고 스트링 길이를 결정하는 것과 같은 다른 동작들)을 수행하고, 프로세 서(12)가 자유롭게 다른 업무들을 수행함으로써, 프로세서 성능을 현저히 개선할 수 있다. 부가적으로, CT-DMA 회로(26)는 예를 들어, 각각 소스로부터의 데이터 유닛 판독 및 목적지로의 기록과 연관되는 L1 캐시(14) 및 L2 캐시(16)에서 반복되는 검색들을 방지함으로써 전력을 절약할 수 있다.
본 발명은 물론 본 발명의 본질적인 특징들을 벗어나지 않고 본 명세서에서 설명되는 것과 다른 방식들로 실행될 수 있다. 본 실시예들은 도식적이지만 비제한적인 것으로서 모든 양상들로 고려되며, 첨부된 도면들의 효력 및 동등한 범위 내로부터 오는 모든 변화들이 본 발명에 포함되는 것으로 간주된다.

Claims (27)

  1. 컨텐츠-종결 직접 메모리 액세스(CT-DMA: Content-Terminated Direct Memory Access) 회로로서,
    적어도 하나의 데이터 전달 인터페이스;
    필터 기준을 저장하도록 동작가능한 메모리;
    전달 데이터를 하나 이상의 필터 기준과 비교하도록 동작가능한 비교기; 및
    상기 비교기 출력에 응답하여 DMA 전달을 종결하도록 동작가능한 제어기
    를 포함하는,
    CT-DMA 회로.
  2. 제1항에 있어서,
    상기 데이터 전달 인터페이스는 시스템 버스 인터페이스를 포함하는,
    CT-DMA 회로.
  3. 제1항에 있어서,
    상기 데이터 전달 인터페이스는 다른 회로에 대한 전용 데이터 인터페이스를 포함하는,
    CT-DMA 회로.
  4. 제1항에 있어서,
    상기 메모리는 하나 이상의 레지스터들을 포함하는,
    CT-DMA 회로.
  5. 제4항에 있어서,
    상기 레지스터들은 프로세서에 의하여 실행되는 보조 프로세서(coprocessor) 레지스터 액세스 명령들을 통해 액세스되는,
    CT-DMA 회로.
  6. 제4항에 있어서,
    상기 레지스터들은 메모리 맵핑되는,
    CT-DMA 회로.
  7. 제1항에 있어서,
    상기 메모리는 하드와이어드(hardwired) 데이터 패턴들을 포함하는,
    CT-DMA 회로.
  8. 제1항에 있어서,
    상기 필터 기준은 패턴 데이터의 하나 이상의 유닛(unit)들을 포함하며, 상기 비교기는 전달 데이터의 하나 이상의 유닛들을 상기 패턴 데이터와 비교하도록 동작가능한,
    CT-DMA 회로.
  9. 제8항에 있어서,
    상기 비교기는 패턴 데이터의 둘 이상의 유닛들과 전달 데이터의 유닛을 비교하도록 동작가능한,
    CT-DMA 회로.
  10. 제8항에 있어서,
    상기 제어기는 전달 데이터의 하나 이상의 유닛들이 상기 패턴 데이터와 매칭(matching)될 때, DMA 전달을 종결하도록 동작가능한,
    CT-DMA 회로.
  11. 제8항에 있어서,
    상기 제어기는 전달 데이터의 하나 이상의 유닛들이 상기 패턴 데이터와 매칭하는데 실패할 때, DMA 전달을 종결하도록 동작가능한,
    CT-DMA 회로.
  12. 제8항에 있어서,
    상기 제어기는 전달 데이터의 하나 이상의 유닛들이 미리 결정된 회수만큼 상기 패턴 데이터와 매칭될 때, DMA 전달을 종결하도록 동작가능한,
    CT-DMA 회로.
  13. 제1항에 있어서,
    상기 제어기는 인터럽트를 선언(assert)함으로써 DMA 전달을 종결하도록 동작가능한,
    CT-DMA 회로.
  14. 제1항에 있어서,
    상기 제어기는 미리 결정된 값을 미리 결정된 위치에 기록함으로써 DMA 전달을 종결하도록 동작가능한,
    CT-DMA 회로.
  15. 제1항에 있어서,
    상기 제어기는 상기 비교기 출력에 응답하여 다른 DMA 전달을 개시하도록 추가로 동작가능한,
    CT-DMA 회로.
  16. 제15항에 있어서,
    상기 비교기 출력에 응답하여 다른 DMA 전달을 개시하는 동작은 상기 비교기 출력에 응답하여 결정되는 메모리 위치로부터 DMA 제어 파라미터들을 판독하는 동작을 포함하는,
    CT-DMA 회로.
  17. 소스로부터 목적지로 알려지지 않은(unknown) 양의 데이터를 전달하는 방법으로서,
    상기 소스로부터의 전달 데이터를 연속하여 판독하는 단계;
    전달 데이터를 미리 결정된 패턴 데이터와 비교하는 단계;
    상기 비교에 응답하여 전달을 종결할 시기를 결정하는 단계; 및
    상기 전달을 종결할 때까지 전달 데이터를 상기 목적지에 연속적으로 기록하는 단계를 포함하며, 상기 단계들은 프로세서에 의해 자율적으로 수행되는,
    데이터를 전달하는 방법.
  18. 제17항에 있어서,
    상기 비교에 응답하여 전달을 종결할 시기를 결정하는 단계는 전달 데이터의 하나 이상의 유닛들이 상기 패턴 데이터와 매칭될 때 상기 전달을 종결하도록 결정하는 단계를 포함하는,
    데이터를 전달하는 방법.
  19. 제17항에 있어서,
    상기 비교에 응답하여 전달을 종결할 시기를 결정하는 단계는 전달 데이터의 하나 이상의 유닛들이 상기 패턴 데이터와 매칭하는데 실패할 때 상기 전달을 종결하도록 결정하는 단계를 포함하는,
    데이터를 전달하는 방법.
  20. 제17항에 있어서,
    상기 비교에 응답하여 전달을 종결할 시기를 결정하는 단계는 전달 데이터의 하나 이상의 유닛들이 미리 결정된 회수만큼 상기 패턴 데이터와 매칭될 때, 상기 전달을 종결하도록 결정하는 단계를 포함하는,
    데이터를 전달하는 방법.
  21. 제17항에 있어서,
    필터 기준을 수신하는 단계를 더 포함하는,
    데이터를 전달하는 방법.
  22. 제21항에 있어서,
    상기 필터 기준은 상기 패턴 데이터를 포함하는,
    데이터를 전달하는 방법.
  23. 제22항에 있어서,
    상기 필터 기준은 전달 데이터와 패턴 데이터 비교들을 결합하기 위한 규칙들을 더 포함하는,
    데이터를 전달하는 방법.
  24. 컴퓨팅 시스템으로서,
    데이터를 제공하도록 동작가능한 데이터 소스;
    데이터를 수신하도록 동작가능한 데이터 목적지;
    상기 소스로부터 상기 목적지로 데이터 전달을 수행하도록 동작가능하며, 전달 데이터의 하나 이상의 값들에 응답하여 상기 데이터 전달을 종결하도록 추가로 동작가능한 컨텐츠-종결 직접 메모리 액세스(CT-DMA) 회로; 및
    상기 CT-DMA 회로를 초기화하도록 동작가능한 프로세서를 포함하는,
    컴퓨팅 시스템.
  25. 제24항에 있어서,
    상기 프로세서는 상기 CT-DMA 회로의 하나 이상의 메모리 위치들에 필터 기준을 기록함으로써 상기 CT-DMA 회로를 초기화하는,
    컴퓨팅 시스템.
  26. 제24항에 있어서,
    상기 CT-DMA 회로는 전달 데이터를 필터 기준과 비교하고, 상기 비교에 응답하여 상기 데이터 전달을 종결하는,
    컴퓨팅 시스템.
  27. 제24항에 있어서,
    상기 프로세서는 메모리에 필터 기준을 기록하고, 상기 CT-DMA 회로에 상기 메모리에 대한 포인터를 제공함으로써 상기 CT-DMA 회로를 초기화하는,
    컴퓨팅 시스템.
KR1020097017581A 2007-01-24 2008-01-24 컨텐츠-종결 dma KR101064101B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/626,414 2007-01-24
US11/626,414 US7934025B2 (en) 2007-01-24 2007-01-24 Content terminated DMA
PCT/US2008/051965 WO2008092044A2 (en) 2007-01-24 2008-01-24 Content-terminated dma

Publications (2)

Publication Number Publication Date
KR20090102870A KR20090102870A (ko) 2009-09-30
KR101064101B1 true KR101064101B1 (ko) 2011-09-08

Family

ID=39366882

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097017581A KR101064101B1 (ko) 2007-01-24 2008-01-24 컨텐츠-종결 dma

Country Status (8)

Country Link
US (1) US7934025B2 (ko)
EP (1) EP2126710B1 (ko)
JP (1) JP5185289B2 (ko)
KR (1) KR101064101B1 (ko)
CN (1) CN101589377B (ko)
AT (1) ATE540362T1 (ko)
TW (1) TW200842593A (ko)
WO (1) WO2008092044A2 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7831746B2 (en) * 2007-03-13 2010-11-09 Sgi International, Inc. Direct memory access engine for data transfers
JP4985599B2 (ja) * 2008-09-18 2012-07-25 Necエンジニアリング株式会社 Dma転送制御システム
US8055816B2 (en) 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US20110093099A1 (en) * 2009-10-16 2011-04-21 Newport Controls Controller system adapted for spa
US8589603B2 (en) * 2010-08-30 2013-11-19 International Business Machines Corporation Delaying acknowledgment of an operation until operation completion confirmed by local adapter read operation
JP5635621B2 (ja) * 2010-09-10 2014-12-03 株式会社日立製作所 ストレージシステム及びストレージシステムのデータ転送方法
CN103119573A (zh) * 2010-09-21 2013-05-22 三菱电机株式会社 Dma控制器以及数据读出装置
US11797474B2 (en) * 2011-02-17 2023-10-24 Hyperion Core, Inc. High performance processor
US9454367B2 (en) * 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US8943239B2 (en) 2012-07-30 2015-01-27 Qualcomm Incorporated Data snooping direct memory access for pattern detection
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
WO2014081457A1 (en) * 2012-11-21 2014-05-30 Coherent Logix Incorporated Processing system with interspersed processors dma-fifo
DE102013109978A1 (de) * 2013-09-11 2015-03-12 Technische Universität Dresden Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen
JP6205386B2 (ja) * 2015-05-18 2017-09-27 長瀬産業株式会社 半導体装置及び情報書込/読出方法
US10599208B2 (en) 2015-09-08 2020-03-24 Toshiba Memory Corporation Memory system and controller

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140963A1 (en) * 2006-12-11 2008-06-12 Thomason Ronald G Methods and systems for storage system generation and use of differential block lists using copy-on-write snapshots

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6072057A (ja) * 1983-09-28 1985-04-24 Nec Corp Dmaコントロ−ラ
JPS6426964A (en) * 1987-07-23 1989-01-30 Fujitsu Ltd Memory writing device for code data
JPH03156659A (ja) * 1989-11-15 1991-07-04 Hitachi Ltd ダイレクトメモリアクセスコントローラ
JPH0535656A (ja) * 1991-07-30 1993-02-12 Oki Electric Ind Co Ltd データ検索方式
JPH08287003A (ja) * 1995-04-11 1996-11-01 Mitsubishi Electric Corp Dmaコントローラ
US5784390A (en) * 1995-06-19 1998-07-21 Seagate Technology, Inc. Fast AtA-compatible drive interface with error detection and/or error correction
US6081852A (en) * 1996-04-26 2000-06-27 Texas Instruments Incorporated Packet data transferring system for autonomously operating a DMA by autonomous boot mode select signal wherein the DMA is enabled to at least one program control list
US6185634B1 (en) * 1996-09-27 2001-02-06 Emc Corporation Address triggered DMA controller with an indicative signal including circuitry for calculating a new trigger address value based on the sum of the current trigger address and the descriptor register data with a trigger address register
US6157971A (en) * 1998-06-02 2000-12-05 Adaptec, Inc. Source-destination re-timed cooperative communication bus
JP3765931B2 (ja) * 1998-10-15 2006-04-12 富士通株式会社 バッファ制御方法及びバッファ制御装置
US6611879B1 (en) * 2000-04-28 2003-08-26 Emc Corporation Data storage system having separate data transfer section and message network with trace buffer
US6681273B1 (en) * 2000-08-31 2004-01-20 Analog Devices, Inc. High performance, variable data width FIFO buffer
US6901468B1 (en) * 2000-09-27 2005-05-31 Emc Corporation Data storage system having separate data transfer section and message network having bus arbitration
US6831916B1 (en) * 2000-09-28 2004-12-14 Balaji Parthasarathy Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
US6775719B1 (en) * 2000-09-28 2004-08-10 Intel Corporation Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
GB2377139A (en) 2001-06-29 2002-12-31 Zarlink Semiconductor Ltd Network gateway utilising DMA controller to transfer data between buffers
US6981073B2 (en) * 2001-07-31 2005-12-27 Wis Technologies, Inc. Multiple channel data bus control for video processing
US6754733B2 (en) * 2001-08-23 2004-06-22 Texas Instruments Incorporated Shared memory architecture for increased bandwidth in a printer controller
US6904473B1 (en) 2002-05-24 2005-06-07 Xyratex Technology Limited Direct memory access controller and method of filtering data during data transfer from a source memory to a destination memory
US20040153911A1 (en) * 2002-12-24 2004-08-05 Alon Regev Testing of a CAM
US7200688B2 (en) 2003-05-29 2007-04-03 International Business Machines Corporation System and method asynchronous DMA command completion notification by accessing register via attached processing unit to determine progress of DMA command
JP4373255B2 (ja) 2004-03-23 2009-11-25 富士通株式会社 ダイレクトメモリアクセス制御装置および方法
JP2005149519A (ja) * 2004-12-14 2005-06-09 Ricoh Co Ltd 情報処理装置
JP4972932B2 (ja) * 2005-12-26 2012-07-11 富士通株式会社 メモリアクセス装置
US7721018B2 (en) * 2006-08-24 2010-05-18 Microchip Technology Incorporated Direct memory access controller with flow control
US8117475B2 (en) * 2006-12-15 2012-02-14 Microchip Technology Incorporated Direct memory access controller

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140963A1 (en) * 2006-12-11 2008-06-12 Thomason Ronald G Methods and systems for storage system generation and use of differential block lists using copy-on-write snapshots

Also Published As

Publication number Publication date
EP2126710A2 (en) 2009-12-02
CN101589377A (zh) 2009-11-25
US7934025B2 (en) 2011-04-26
WO2008092044A2 (en) 2008-07-31
WO2008092044A3 (en) 2008-12-18
US20080177909A1 (en) 2008-07-24
JP5185289B2 (ja) 2013-04-17
KR20090102870A (ko) 2009-09-30
TW200842593A (en) 2008-11-01
EP2126710B1 (en) 2012-01-04
JP2010517182A (ja) 2010-05-20
CN101589377B (zh) 2012-05-23
ATE540362T1 (de) 2012-01-15

Similar Documents

Publication Publication Date Title
KR101064101B1 (ko) 컨텐츠-종결 dma
US7724740B1 (en) Computer system and network interface supporting class of service queues
US7433977B2 (en) DMAC to handle transfers of unknown lengths
EP1573559B1 (en) Method, system, and program for handling input/output commands
CN114443529B (zh) 内存直接访问架构、系统、方法、电子设备和介质
US7894480B1 (en) Computer system and network interface with hardware based rule checking for embedded firewall
US9479464B1 (en) Computer system and network interface with hardware based packet filtering and classification
US8099529B1 (en) Software based native command queuing utilizing direct memory access transfer context information
JP2012510669A (ja) 装置のエンディアンモードを管理するためのシステムおよび方法
JPH08506674A (ja) ホスト割込み信号およびホスト指示信号の管理を行うネットワーク・アダプタ
US20020184453A1 (en) Data bus system including posted reads and writes
US20080059683A1 (en) Method and Apparatus for Conditional Broadcast of Barrier Operations
JP2009527815A5 (ko)
KR100579203B1 (ko) 능률화된 ata 장치 초기화 방법 및 장치
US9288163B2 (en) Low-latency packet receive method for networking devices
CN1705929B (zh) 用于将数据返回给通过总线接收的读请求的方法和系统
US5640570A (en) Information handling system for transmitting contents of line register from asynchronous controller to shadow register in another asynchronous controller determined by shadow register address buffer
JPH03127154A (ja) 転送制御システム
US20040111537A1 (en) Method, system, and program for processing operations
JPS63198143A (ja) デ−タ転送制御装置
JP2009100400A (ja) ハブ装置
JPS63187943A (ja) 通信制御装置
JP2003296264A (ja) データ転送システム
JPH05100987A (ja) データ転送方式
JPH08166932A (ja) マルチプロセッサシステム

Legal Events

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

Payment date: 20140828

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8