KR101485081B1 - 간접 액세스가능 메모리를 구비한 컨트롤러 - Google Patents

간접 액세스가능 메모리를 구비한 컨트롤러 Download PDF

Info

Publication number
KR101485081B1
KR101485081B1 KR20107009107A KR20107009107A KR101485081B1 KR 101485081 B1 KR101485081 B1 KR 101485081B1 KR 20107009107 A KR20107009107 A KR 20107009107A KR 20107009107 A KR20107009107 A KR 20107009107A KR 101485081 B1 KR101485081 B1 KR 101485081B1
Authority
KR
South Korea
Prior art keywords
address
register
memory
interface
registers
Prior art date
Application number
KR20107009107A
Other languages
English (en)
Other versions
KR20100087294A (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 KR20100087294A publication Critical patent/KR20100087294A/ko
Application granted granted Critical
Publication of KR101485081B1 publication Critical patent/KR101485081B1/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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Transfer Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

컨트롤러는 인터페이스; 버퍼 메모리; 상기 버퍼 메모리를 액세스하기 위한 제1 레지스터 세트; 상기 제1 레지스터 세트와 독립적이고 상기 버퍼 메모리를 액세스하기 위한 제2 레지스터 세트; 및 상기 제1 레지스터 세트 또는 상기 제2 레지스터 세트를 통해 상기 버퍼 메모리를 액세스하기 위해 상기 인터페이스에 의해 수신된 버퍼 메모리 액세스 명령들을 디코딩하여 실행하기 위한 제어 유닛을 갖는다.

Description

간접 액세스가능 메모리를 구비한 컨트롤러{CONTROLLER WITH INDIRECT ACCESSIBLE MEMORY}
본 발명은 간접 액세스가능 메모리를 구비한 컨트롤러들에 관한 것이다.
관련 인터페이스의 어드레스 사이즈의 제약으로 인해 프로세서에 의해 직접 액세스될 수 없는 대형 메모리를 포함하는 많은 컨트롤러, 특히 단독형 컨트롤러들이 있다. 예를 들면, 이더넷 컨트롤러들, 특히 단독형 이더넷 컨트롤러들은 어떤 타입의 마이크로프로세서 또는 마이크로컨트롤러를 위한 이더넷 네트워크 인터페이스로서 기능하도록 설계되었다. 이러한 컨트롤러는 상당히 큰 메모리를 가지며 전용 인터페이스, 예를 들어 SPI(Serial Peripheral Interface) 버스를 포함한다. 일예로, 이러한 이더넷 컨트롤러는 SPI 버스 또는 다른 어떤 가능한 인터페이스 연결을 이용하여 마이크로컨트롤러내에 집적될 수 있다. 이더넷 컨트롤러의 경우에, 이 컨트롤러는 모든 통신 프로토콜들을 처리하며, 수신 및 발신 메시지의 중간 저장을 위한 대형 버퍼를 포함한다. 그리고, 마이크로컨트롤러 또는 마이크로프로세서는 인터페이스를 통해 이더넷 컨트롤러를 통신 및 제어할 수 있다. 단독형 또는 집적형 이더넷 컨트롤러는 수신 및 발신 데이터 패킷의 조정(coordination) 뿐만 아니라 패킷 필터링도 수행하며, 고속 데이터 스루풋(throughput) 및 하드웨어 지원 체크섬 계산을 위한 내부 DMA(Direct Memory Access)를 더 포함할 수 있다. 마이크로컨트롤러 또는 마이크로프로세서와 이더넷 컨트롤러의 통신은 인터럽트 구동 방식 또는 폴링 구동 방식으로 행해진다.
상술한 바와 같이, 이러한 타입의 컨트롤러들에 포함된 버퍼는 비교적 크며, 따라서 각 인터페이스의 통신 프로토콜의 어드레스 사이즈 제약으로 인해 직접 어드레싱될 수 없다. 따라서, 버퍼는 일반적으로 일련의 제어 레지스터들을 통한 윈도우 프로토콜을 통해 액세스된다. 이러한 일련의 제어 레지스터들은 쓰여지거나 읽혀질 데이터를 위한 레지스터와, 버퍼의 물리적인 읽기 또는 쓰기 어드레스를 포함하는 적어도 하나의 포인터 레지스터를 포함한다. 하지만, 이러한 액세스 방식은 특히 이더넷 버퍼를 액세스하는 읽기 액세스와 쓰기 액세스간 또는 서로다른 태스크들간을 종종 절환시키는 동작들동안 현재의 이더넷 컨트롤러들에서 병목 현상을 발생시키므로 절환이 있을 때마다 포인터 레지스터들의 컨텐츠를 세이브하여야 한다.
일실시예에 따르면, 컨트롤러는 인터페이스; 버퍼 메모리; 상기 버퍼 메모리를 액세스하기 위한 제1 레지스터 세트; 상기 제1 레지스터 세트와 독립적이고 상기 버퍼 메모리를 액세스하기 위한 제2 레지스터 세트; 및 상기 제1 레지스터 세트 또는 상기 제2 레지스터 세트를 통해 상기 버퍼 메모리를 액세스하기 위해 상기 인터페이스에 의해 수신된 버퍼 메모리 액세스 명령들을 디코딩하여 실행하기 위한 제어 유닛을 포함할 수 있다.
추가 실시예에 따르면, 상기 제1 레지스터 세트는 제1 읽기 포인터 레지스터 및 제1 쓰기 포인터 레지스터를 포함하고, 상기 제2 레지스터 세트는 제2 읽기 포인터 레지스터 및 제2 쓰기 포인터 레지스터를 포함할 수 있다. 추가 실시예에 따르면, 상기 컨트롤러는 상기 제1 레지스터 세트 및/또는 상기 제2 레지스터 세트 중 적어도 하나의 레지스터의 컨텐츠를 증분 또는 감분시키기 위한 자동 증분 또는 자동 감분 유닛을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 컨트롤러는 상기 제1 레지스터 세트 및/또는 상기 제2 레지스터 세트 중 적어도 하나의 포인터 레지스터에 저장된 어드레스를 소정의 어드레스로 리셋하기 위한 랩 어라운드 유닛을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 컨트롤러는 각 포인터 레지스터와 연결된 적어도 하나의 멀티플렉서를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 멀티플렉서는 직접 어드레스 신호를 더 수신할 수 있다. 추가 실시예에 따르면, 상기 컨트롤러는 상기 버퍼 메모리를 상기 제1 레지스터 세트에 할당된 제1 세그먼트와 상기 제2 레지스터 세트에 할당된 제2 세그먼트로 분할하는 상기 버퍼 메모리내의 분할 어드레스를 정의하기 위한 특수 기능 레지스터를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 컨트롤러는 각 레지스터 세트에 할당된 상기 버퍼 메모리내의 메모리 세그먼트들을 정의하기 위한 복수의 특수 기능 레지스터들을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 컨트롤러는 상기 버퍼 메모리를 액세스하기 위한 상기 제1 레지스터 세트 및 상기 제2 레지스터 세트와 독립적인 적어도 제3 레지스터 세트를 더 포함하고, 상기 제3 레지스터 세트는 제3 읽기 포인터 레지스터 및 제3 쓰기 포인터 레지스터를 포함한다. 추가 실시예에 따르면, 상기 컨트롤러는 이더넷 컨트롤러일 수 있으며 패킷 버퍼 메모리가 상기 레지스터 세트, 및 상기 이더넷 컨트롤러의 송신 및 수신 유닛과 연결될 수 있다.
다른 실시예에 따르면, 이더넷 컨트롤러는 물리 계층 및 매체 액세스 제어 계층; 상기 물리 및 매체 액세스 제어 계층과 연결된 버퍼 메모리; 상기 버퍼 메모리와 연결되고, 제1 읽기 포인터 레지스터 및 제1 쓰기 포인터 레지스터를 포함하는 송신(TX) 레지스터 세트; 상기 버퍼 메모리와 연결되고, 제2 읽기 포인터 레지스터 및 제2 쓰기 포인터 레지스터를 포함하는 수신(RX) 레지스터 세트; 상기 버퍼 메모리와 연결되고, 제3 읽기 포인터 레지스터 및 제3 쓰기 포인터 레지스터를 포함하는 사용자 정의 레지스터 세트; 및 상기 송신 레지스터들, 상기 수신 레지스터들, 또는 상기 사용자 정의 레지스터들을 통해 상기 버퍼 메모리를 액세스하기 위해 인터페이스에 의해 수신된 버퍼 메모리 액세스 명령들을 디코딩하여 실행하기 위한 제어 유닛을 포함할 수 있다.
추가 실시예에 따르면, 상기 이더넷 컨트롤러는 상기 포인터 레지스터들 중 어느 하나의 컨텐츠를 증분 또는 감분시키기 위한 자동 증분 또는 자동 감분 유닛을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 이더넷 컨트롤러는 상기 포인터 레지스터들 중 어느 하나에 저장된 어드레스를 소정의 시작 어드레스로 리셋하기 위한 랩 어라운드 유닛을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 이더넷 컨트롤러는 각 포인터 레지스터와 연결된 적어도 하나의 멀티플렉서를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 멀티플렉서는 직접 어드레스 신호를 더 수신할 수 있다. 추가 실시예에 따르면, 상기 이더넷 컨트롤러는 상기 버퍼 메모리를 상기 송신 레지스터들에 할당된 제1 세그먼트와 상기 수신 레지스터들에 할당된 제2 세그먼트로 분할하는 상기 버퍼 메모리내의 분할 어드레스를 정의하기 위한 특수 기능 레지스터를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 이더넷 컨트롤러는 상기 사용자 정의 레지스터들을 위한 메모리 세그먼트를 정의하기 위한 복수의 특수 기능 레지스터들을 더 포함할 수 있다. 추가 실시예에 따르면, 상기 이더넷 컨트롤러는 각 레지스터 세트에 할당된 상기 버퍼 메모리내의 메모리 세그먼트들을 정의하기 위한 복수의 특수 기능 레지스터들을 더 포함할 수 있다.
또 하나의 실시예에 따르면, 제한된 어드레싱 용량을 갖는 인터페이스를 통해 컨트롤러내의 메모리를 액세스하기 위한 방법은, 상기 메모리의 제1 어드레스를 상기 인터페이스를 통해 제1 액세스 레지스터 세트의 제1 어드레스 레지스터로 로딩하는 단계; 상기 메모리의 제2 어드레스를 상기 인터페이스를 통해 제2 액세스 레지스터 세트의 제2 어드레스 레지스터로 로딩하는 단계; 상기 인터페이스를 통해 제1 읽기 명령을 수신하는 단계; 상기 제1 어드레스 레지스터를 통해 상기 메모리를 액세스하고 상기 메모리내의 상기 제1 어드레스로부터 제1 데이터를 수신하는 단계; 상기 인터페이스를 통해 상기 제1 데이터를 출력하는 단계; 상기 인터페이스를 통해 제2 읽기 명령을 수신하는 단계; 상기 제2 어드레스 레지스터를 통해 상기 메모리를 액세스하고 상기 메모리내의 상기 제2 어드레스로부터 제2 데이터를 수신하는 단계; 및 상기 인터페이스를 통해 상기 제2 데이터를 출력하는 단계를 포함할 수 있다.
추가 실시예에 따르면, 상기 방법은 상기 메모리를 읽은 후에 상기 제1 어드레스 레지스터 및 상기 제2 어드레스 레지스터를 자동 증분 또는 자동 감분시키는 단계를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 방법은 자동 증분 또는 자동 감분 후에 상기 제1 어드레스 레지스터 및 상기 제2 어드레스 레지스터에서 어드레스 랩 어라운드 기능을 수행하는 단계를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 방법은 상기 메모리의 제3 어드레스를 상기 인터페이스를 통해 제3 액세스 레지스터 세트의 제3 어드레스 레지스터로 로딩하는 단계; 상기 메모리의 제3 어드레스를 상기 인터페이스를 통해 제3 액세스 레지스터 세트의 제3 어드레스 레지스터로 로딩하는 단계; 상기 인터페이스를 통해 제3 읽기 명령을 수신하는 단계; 상기 제3 어드레스 레지스터를 통해 상기 메모리를 액세스하고 상기 메모리내의 상기 제3 어드레스로부터 제3 데이터를 수신하는 단계; 및 상기 인터페이스를 통해 상기 제3 데이터를 출력하는 단계를 더 포함할 수 있다.
또 하나의 실시예에 따르면, 제한된 어드레싱 용량을 갖는 인터페이스를 통해 컨트롤러내의 메모리를 액세스하기 위한 방법은, 제1 어드레스를 상기 인터페이스를 통해 제1 액세스 레지스터 세트의 제1 어드레스 레지스터로 로딩하는 단계; 제2 어드레스를 상기 인터페이스를 통해 제2 액세스 레지스터 세트의 제2 어드레스 레지스터로 로딩하는 단계; 상기 인터페이스를 통해 제1 쓰기 명령을 수신하는 단계; 상기 인터페이스를 통해 제1 쓰기 데이터를 수신하는 단계; 상기 제1 어드레스 레지스터를 통해 상기 메모리를 액세스하고 상기 제1 어드레스하의 제1 데이터를 상기 메모리에 저장하는 단계; 상기 인터페이스를 통해 제2 쓰기 명령을 수신하는 단계; 상기 인터페이스를 통해 제2 쓰기 데이터를 수신하는 단계; 및 상기 제2 어드레스 레지스터를 통해 상기 메모리를 액세스하고 상기 제2 어드레스하의 상기 제2 데이터를 상기 메모리에 저장하는 단계를 포함할 수 있다.
추가 실시예에 따르면, 상기 방법은 상기 메모리를 읽은 후에 상기 제1 어드레스 레지스터 및 상기 제2 어드레스 레지스터를 자동 증분 또는 자동 감분시키는 단계를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 방법은 자동 증분 또는 자동 감분 후에 상기 제1 어드레스 레지스터 및 상기 제2 어드레스 레지스터에서 어드레스 랩 어라운드 기능을 수행하는 단계를 더 포함할 수 있다. 추가 실시예에 따르면, 상기 방법은 제3 어드레스를 상기 인터페이스를 통해 제3 액세스 레지스터 세트의 제3 어드레스 레지스터로 로딩하는 단계; 제3 어드레스를 상기 인터페이스를 통해 제3 액세스 레지스터 세트의 제3 어드레스 레지스터로 로딩하는 단계; 상기 인터페이스를 통해 제3 쓰기 명령을 수신하는 단계; 상기 인터페이스를 통해 제3 쓰기 데이터를 수신하는 단계; 및 상기 제3 어드레스 레지스터를 통해 상기 메모리를 액세스하고 상기 제3 어드레스하의 상기 제3 데이터를 상기 메모리에 저장하는 단계를 더 포함할 수 있다.
본 발명의 다른 기술적인 장점들은 다음의 도면, 설명, 및 청구범위로부터 이 기술분야의 당업자에게 명백할 것이다. 본 발명의 다양한 실시예들은 설명한 장점들의 서브셋만을 얻을 수 있다.
본 발명은 이더넷 컨트롤러들에 한정되지 않을 뿐만 아니라, 각 포인터 레지스터를 통해 간접 액세스되는 메모리를 갖는 어떠한 타입의 단독형 컨트롤러 또는 집적가능 컨트롤러에도 적용될 수 있다.
동일한 참조부호는 동일한 구성요소를 나타내는 첨부한 도면들과 관련된 다음의 설명을 참조하면 본 발명과 그 장점들을 보다 완전히 이해할 수 있다.
도 1은 단독형 이더넷 컨트롤러에 사용되는 이더넷 컨트롤러 모듈 또는 마이크로컨트롤러에 집적된 이더넷 컨트롤러 모듈의 블록도이다.
도 2는 버퍼 액세스 로직의 일실시예를 나타낸 도면이다.
도 3은 버퍼 액세스 로직의 다른 실시예를 나타낸 도면이다.
도 4는 버퍼 액세스 로직의 또 하나의 실시예를 나타낸 도면이다.
도 5는 일실시예에 따른 버퍼내의 가변 블록 할당을 나타낸 도면이다.
본 발명이 특정 실시예를 참조하여 특별히 도시되고 설명되었지만, 이러한 참조는 본 발명을 한정하지 않고, 그러한 한정을 의미하지도 않는다. 개시된 본 발명은 이 기술분야의 당업자에 의해 형태와 기능에 있어 다양한 수정물, 대체물, 등가물이 고려될 수 있다. 본 발명의 도시되고 설명된 실시예들은 단지 예로서, 본 발명의 범위를 한정하지 않는다.
일반적으로 이러한 단독형 컨트롤러 또는 마이크로컨트롤러에 집적될 수 있는 모듈은 제한된 어드레스 용량을 갖는 인터페이스를 갖는다. 예를 들면, 전형적인 8 비트 직렬 인터페이스는 대형 버퍼 메모리내의 모든 메모리 위치를 어드레싱할 수 있는 롱 어드레스를 이루기 위해 복수의 어드레스 송신들을 필요로 할 것이다. 따라서, 이러한 인터페이스를 통한 직접 액세스는 병목현상을 일으켜 전송률을 현저히 낮출 것이다. 따라서, 이러한 모듈들은 실제 어드레스를 제공하기 위해 어드레스 레지스터가 사용되는 윈도우 액세스 메커니즘을 포함한다. 대형 버퍼로의 액세스는 일반적으로 순차적이기 때문에, 이 어드레스 레지스터는 일반적으로 대부분의 제품들, 예를 들어 이더넷 컨트롤러들에서 한번에 설정되어야 한다. 즉, 특정 메모리 위치가 액세스되면, 다음 메모리 위치를 액세스하기 위해 어드레스는 쓰기 메커니즘에 따라 증분 또는 감분되기만 하면 된다. 이러한 증분 또는 감분 기능은 외부 프로세서의 지원없이 컨트롤러에 의해 자동적으로 처리될 수 있다. 따라서, 읽기 및 쓰기 액세스를 위해, 자동 증분 및/또는 자동 감분 기능이 구현된다. 마이크로컨트롤러는 직렬 인터페이스를 통해 한번 어드레스 레지스터들을 초기화하고, 그리고 나서 버퍼로의 액세스가 필요할 때마다 읽기 또는 쓰기 명령을 전송하기만 하면 된다. 그리고, 각 이더넷 모듈 또는 컨트롤러는 메모리로부터 또는 메모리로 각 데이터를 송신 또는 수신하고, 포인터 레지스터를 증분 또는 감분시키고, 다음 명령을 대기함으로써 이 명령에 대응하게 된다. 복수의 순차 데이터, 예를 들어 하나 이상의 데이터 패킷들을 이러한 대형 버퍼로부터 또는 대형 버퍼로 각 컨트롤러가 송신하게 하는 다른 명령들, 예를 들어 블록 읽기 또는 블록 쓰기가 구현될 수 있다.
도 1은 단독형 이더넷 컨트롤러 또는 마이크로컨트롤러내에 집적된 이더넷 컨트롤러 모듈일 수 있는 이더넷 컨트롤러(100)의 블록도이다. 이더넷 컨트롤러(100)는 네트워크를 통한 실제 아날로그 데이터의 송수신을 위한 송신 및 수신 유닛(TX 및 RX)을 구비한 전형적인 물리 계층(PHY)(170)을 포함한다. 이 물리계층(170)은 실제 이더넷 표준(IEEE 802.3)을 구현하기 위한 MAC(Media Access Control) 데이터 링크 계층(150)과 연결된다. MAC 계층(150)은 각 필터 유닛 흐름 제어 및 호스트 인터페이스들을 포함할 수 있는 수신 유닛(135) 및 송신 유닛(145)과 연결된다. 이더넷 컨트롤러는 예를 들어 체크섬 평가를 수행할 수 있는 DMA(Direct Memory Access) 컨트롤러(140)를 포함할 수 있다. 아비터(arbiter)(130)는 실제 버퍼(125)와 모듈들(120,135,140,145) 간의 연결을 절환하도록 구현될 수 있다. 제어 레지스터들(120)은 버스 인터페이스(115) 및 직렬 또는 병렬 인터페이스(105)와 연결된다. 직렬 인터페이스는, 예를 들어 SPI 인터페이스 또는 다른 어떤 적절한 내부 회로 인터페이스일 수 있다. 버스 인터페이스(115)는 이더넷 컨트롤러(100)의 추가 제어를 제공하기 위한 추가 인터럽트 신호들을 제공할 수 있다. 이더넷 컨트롤러(100)는 이더넷 컨트롤러(100)의 각 유닛들을 제어하는 시스템 제어 유닛(110)에 의해 내부적으로 제어될 수 있다. 시스템 제어 유닛(110)은 직렬 또는 병렬 인터페이스(105)로부터 명령들을 수신하고 이들 명령들의 디코딩을 제공한다. 이 명령들은 적어도 일부 또는 모든 레지스터들의 읽기 및 쓰기와 각 컨트롤러의 기능 실행을 제공할 수 있다. 특히, 시스템 제어 유닛(110)은 하기에 보다 상세히 설명될 버퍼(125)로의 읽기 및 쓰기 액세스를 수행하기 위한 각 제어 시퀀스를 제공할 수 있다. 클록 유닛(160)은 필요한 이더넷 전송 클록 신호를 제공한다.
도 2는 윈도우 액세스 메모리를 갖는 어떤 타입의 컨트롤러의 다른 실시예의 특정 부분(200)의 상세도이다. 이 실시예에서, 마이크로컨트롤러 또는 마이크로프로세서를 위한 복수의 인터페이스들이 제공된다. 제1 인터페이스는 SPI 인터페이스(210)에 의해 제공되고, 제2 인터페이스는 병렬 인터페이스(220)에 의해 제공된다. 두 인터페이스들은 그들의 어드레스 용량으로 제한될 수 있으며, 따라서 윈도우 메모리 액세스를 필요로 한다. 두 인터페이스들은 외부로부터 공급될 수 있는 신호(215)에 의해 제어되는 멀티플렉서(230)와 연결된다. 따라서, 디바이스(200)는 병렬 또는 직렬 인터페이스로 동작할 수 있다. 멀티플렉서(230)의 출력은 다양한 제어 레지스터들과, 추가 멀티플렉서(260)의 입력에 연결된다. 다양한 제어 레지스터들은 다수의 윈도우 액세스 레지스터들(250)의 세트를 포함할 수 있다. 또한, 다른 버퍼 제어 로직 및/또는 레지스터들이 제공될 수 있다. 이러한 추가 제어 로직(290)은, 예를 들어 포인터 레지스터들의 자동 증분 및/또는 자동 감분과 랩(wrap) 어라운드 기능을 제공할 수 있으며, 따라서 버퍼내의 소정의 메모리 세그먼트들에 대한 경계를 제어 및 관리할 수 있다. 예를 들면, 읽기 채널 및 쓰기 채널은 버퍼내의 할당 메모리 세그먼트들을 가질 수 있다. 한 채널에서 다른 채널로의 데이터에 의한 어떠한 타입의 겹쳐쓰기도 회피하기 위하여, 이들 경계 제어(290)는 각 레지스터들내에 저장된 액세스 어드레스를 모니터링하고, 포인터 레지스터가 경계를 넘으면 랩 어라운드 기능을 제공할 수 있다. 하지만, 다른 실시예로, 메모리 세그먼트들은 개선된 기능을 위해 중복될 수 있다.
멀티플렉서(260)의 출력은 실제 버퍼(125)에 연결되며, 복수의 특수 기능 레지스터들을 포함하는 제어 레지스터 블록(270)에 선택적으로 연결될 수 있다. 또한, 블록(280)으로 나타낸 클록 및 리셋 로직이 제공될 수 있다. 윈도우 액세스 레지스터들(250)은 3개의 데이터/포인터 레지스터 세트를 포함할 수 있다. 각 데이터/포인터 레지스터 세트는 별도의 읽기 및 쓰기 포인터 레지스터들을 포함하며, 데이터 레지스터 또는 래치를 포함할 수 있다. 일예로, 데이터 레지스터, 예를 들어 래치는 필요하지 않을 수 있으며, 데이터 입/출력은 시스템의 각 데이터 버스들로 직접 라우팅될 수 있다. 다른 예로, 단 2 세트의 레지스터들 또는 3 세트 이상의 레지스터들이 제공될 수 있다.
도 3은 일실시예에 따른 3개의 레지스터 세트들의 하나의 가능한 구현의 상세도이다. 제1 세트의 레지스터들은 제1 채널, 예를 들어 송신 채널 TX로 전용되며, 데이터 레지스터 또는 래치(310)를 포함할 수 있다. 하지만, 점선으로 나타낸 이 레지스터는 단지 버퍼(125)로의/버퍼(125)로부터의 데이터가 SPI/병렬 인터페이스(210/220)로부터/SPI/병렬 인터페이스(210/220)로 전송될 수 있게 하는 패킷 버퍼(125)내의 메모리 매핑 어드레스를 나타낼 수 있다. 각 레지스터 세트는 쓰기 포인터 레지스터(315)와 읽기 포인터 레지스터(320)를 포함한다. 일예로, 읽기 및 쓰기 포인터 레지스터들(315 및 320)은 멀티플렉서(380)의 제1 입력에 공급되는 어드레스 신호(327)를 출력하는 멀티플렉서(325)와 연결될 수 있다. 데이터(310)는 패킷 버퍼(125)로부터 수신된다. 마찬가지로, 제2 레지스터 세트는 제2 채널, 예를 들어 수신 채널 RX로 전용되며, 쓰기 포인터 레지스터(335) 및 읽기 포인터 레지스터(340)를 포함한다. 또한, 데이터 래치(330)는 다양한 설계 선택들에 따라 구현될 수 있다. 읽기 및 쓰기 포인터 레지스터들(335 및 340)은 멀티플렉서(380)의 제2 입력에 공급되는 어드레스 신호(347)를 출력하는 멀티플렉서(345)와 연결된다. 구현될 필요가 있는 경우, 데이터 래치(330)는 데이터 입/출력을 위해 패킷 버퍼(125)와 연결된다. 마지막으로, 제3 레지스터 세트는, 예를 들어 사용자 정의 액세스를 제공하는 제3 채널로 전용된다. 이 세트는 쓰기 포인터 레지스터(355) 및 읽기 포인터 레지스터(360)를 포함하며, 데이터 래치(350)를 선택적으로 포함할 수 있다. 읽기 및 쓰기 포인터 레지스터들(355 및 360)은 멀티플렉서(380)의 제3 입력에 공급되는 어드레스 신호(367)를 출력하는 멀티플렉서(365)와 연결된다. 데이터 래치(350)는 패킷 버퍼(125)의 데이터 포트와 직접 연결될 수 있다. 멀티플렉서(380)는 직접 어드레스를 제공하기 위한 제4 입력을 가질 수 있다. 멀티플렉서(380)의 출력 신호들은 어드레스 버퍼(125)에 사용된다. 각 패킷 버퍼 출력에는 출력 데이터가 제공된다.
도 4는 단일 멀티플렉서(410)를 갖는 제2 실시예를 나타낸다. 멀티플렉서(410)는 7개의 입력들을 가지며, 패킷 버퍼(125)를 어드레싱하기 위해 이들 입력들 중 하나를 선택한다. 3개의 레지스터 세트들 각각은 쓰기 및 읽기 어드레스를 제공한다. 또한, 3개의 레지스터 세트들에 의해 제공되는 간접 어드레싱을 회피하는 직접 어드레스가 제공될 수 있다. 이 실시예에서, 데이터 입/출력은 어떠한 개입 래치들도 없이 각 데이터 버스로 직접 라우팅된다. 하지만, 다른 실시예에 따르면, 데이터 래치들은 개별적으로 제공되거나 또는 간접 레지스터 세트들을 위해 제공될 수 있다.
외부 프로세서에 의해 컨트롤러로 전송되는 읽기 명령은, 외부 프로세서에 요청 데이터를 제공하기 위한 단계들의 시퀀스를 시스템 제어가 실행할 수 있게 한다. 이를 위해, 시스템 제어는 버퍼를 액세스하기 위해 지정된 레지스터 세트를 이용한다. 각 레지스터 세트는 전용 읽기 및 쓰기 명령들 또는 전용 메모리-매핑 어드레스들을 가질 수 있다. 하지만, 다른 실시예로, 어느 레지스터 세트가 사용될 지를 정의하는데 특수 기능 레지스터가 사용될 수 있다. 다른 명령들은 복수의 데이터를 제공하는 블록 읽기 또는 패킷 읽기를 야기할 수 있다. 시스템 제어 유닛(110)은 정의된 명령들을 해석 및 실행하는 상태기 또는 소형 컨트롤러 유닛에 의해 각 기능을 제공한다.
종래 윈도우 버퍼 액세스 시스템들은 단지, 읽기/쓰기 포인터 레지스터 또는 하나의 독립된 읽기 포인터 레지스터와 하나의 쓰기 포인터 레지스터로 이루어진 단일 레지스터 세트를 제공한다. 각 읽기 또는 쓰기 포인터는 일반적으로 자동 증분 또는 자동 감분형이다. 따라서, 버퍼의 다른 부분으로의 액세스를 필요로 하는 테스크 절환이 일어날 때는 적어도 언제나, 액세스중인 컨트롤러는 먼저 적어도 포인터 레지스터들의 컨텐츠를 세이브하여야 한다. 또한, 각 읽기 및 쓰기 레지스터는 버퍼의 전용 액세스 영역일 수 있다. 예를 들면, 버퍼는 수신 채널 RX용 영역과 송신 채널 TX용 영역으로 세그먼트될 수 있다. 이들 영역들은 중복되지 않으며, 따라서 어느 채널이 활성화되는지에 따라 단일 어드레스 포인터 레지스터 세트는 그 채널의 각 경계들과 비교되어야 한다.
일실시예에 따르면, 버퍼로의 윈도우 액세스를 위한 액세스 회로는 복수의 독립적인 레지스터 세트들을 포함하며, 각 세트는 개별적인 데이터 레지스터와 관련 읽기 및 쓰기 포인터 레지스터들을 포함한다. 일예로, 읽기 및 쓰기 채널을 위한 개별적인 레지스터 세트들이 제공될 수 있다. 각 레지스터 세트는 경계들을 제어하기 위한 독립적인 제어 로직을 포함할 수 있다. 예를 들면, 송신 채널에 대하여 도시한 송신 쓰기 포인터 경계 제어 유닛(317)은 레지스터(315)와 연결될 수 있다. 이 경계 제어 유닛(317)은 자동 증분 및/또는 자동 감분 로직 뿐만 아니라, 레지스터(315)의 컨텐츠를 소정의 경계 또는 프로그램가능 경계와 비교하기 위한 비교 로직도 포함할 수 있다. 일예로, 이 제어 유닛(317)은 경계를 가로지르거나 또는 경계가 어드레스를 소정의 또는 프로그램가능 세그먼트 시작 어드레스로 리셋할 수 있으면 인터럽트를 생성할 수 있으며, 따라서 랩 어라운드 기능을 제공할 수 있다. 후자의 경우에, 포인터 레지스터(315)는 FIFO(First In First Out) 레지스터의 기능을 제공할 수 있을 것이다.
개별적인 제어 유닛(322)은 읽기 포인터 레지스터(320)를 제공할 수 있다. 하지만, 각 레지스터 세트는 읽기 및 쓰기 포인터 레지스터들(315 및 320) 모두에서 동작하는 단일 경계 제어 유닛만을 제공할 수 있다. 도시하지는 않았지만, 유사한 유닛들이 읽기 제어 레지스터 세트(330-340) 및 사용자 정의 액세스 레지스터 세트(350-360)에 제공될 수 있다. 멀티플렉서(380)는 인터페이스 또는 시스템 제어 유닛(110)에 의해 제어되며, 단일 제어 레지스터 세트와 버퍼(125)를 연결하기 위해 적절한 출력들을 선택한다.
도 5는 소정의 또는 프로그램가능 세그먼트들의 일예를 나타낸다. 예를 들면, 버퍼(125)는 2개의 주요 비중복 세그먼트들 A 및 B로 분할될 수 있다. 하지만, 다른 실시예로, 세그먼트들은 중복되게 정의될 수도 있다. 제1 어드레스(347)는 소정의 경계들 A내의 수신 채널에 대한 어떤 어드레스를 가리킨다. 이 실시예에서, 단일 제어 유닛(510)은 레지스터들(335 및 340)을 제어하는데 사용된다. 이 제어 레지스터는 버퍼(125)로의 액세스가 완료된 후에 레지스터의 컨텐츠를 자동 증분 또는 감분시킬 수 있다. 또한, 유닛(510)은 각 어드레스의 경계 체크를 제공하며, 어드레스의 증분이 세그먼트 B로의 크로스 오버를 야기하면 레지스터를 세그먼트 A의 시작 어드레스로 리셋한다. 마찬가지로, 제어 유닛(520)은 송신 채널 및 레지스터들(315 및 320)과 동일한 기능을 제공할 수 있다. 특수 기능 레지스터들은 세그먼트들 A 및 B를 정의하기 위해 제공될 수 있으며, 예를 들면, 레지스터는 버퍼(125)를 2개의 세그먼트로 분할하는 분할 어드레스를 포함할 수 있다. 하지만, 다른 실시예로, 이들 세그먼트들의 경계들은 자유롭게 프로그램될 수 있다. 또한, 도 4에 도시한 사용자 정의 어드레스 세그먼트 C를 정의하기 위해 추가 특수 기능 레지스터들이 제공될 수 있다. 이 사용자 정의 세그먼트는 하나의 세그먼트 또는 두 세그먼트들과 중복될 수 있다. 사용자 정의 제어 로직(530)은 유닛들(510 및 520)과 유사한 기능들을 제공할 수 있다. 송신 채널과 읽기 채널 뿐만 아니라 추가 사용자 정의 액세스가 개별적인 액세스 레지스터들을 포함할 수 있다는 점으로 인해, 단 하나의 경계 어드레스만이 비교되면 되므로 각 제어 로직은 간략화될 수 있다. 또한, 이들 채널들 간의 절환들은 이들 레지스터들의 컨텐츠 세이브의 필요성을 요구하지 않으며, 따라서 이들 레지스터들은 오로지 소정 시나리오대로 세이브되어야 한다. 이것은 저감된 소프트웨어 오버헤드를 가능하게 하여 이들 포인터 레지스터들과 관련한 어떠한 타이밍 문제들도 회피할 수 있다.
도 4에 도시한 바와 같이, 다른 실시예에 따르면, 레지스터 블록(515)에 의해 추가 특수 기능 레지스터들이 제공될 수 있다. 레지스터 DATALOW는 어드레스(347)와, 유닛(135)(도 1 참조)내의 각 포인터를 비교함으로써 세그먼트내의 읽히지 않은 데이터의 레벨을 나타낼 수 있다. 소정의 임계는 버퍼(125)내의 데이터의 로우 레벨을 알리기 위해 인터럽트를 발생시킬 수 있다. 마찬가지로, 데이터의 하이 레벨은 레지스터 DATAHIGH로 나타낼 수 있다. 다시, 이 레지스터는 하이 임계 레벨을 초과하면 오버플로우를 방지하기 위해 버퍼가 읽혀져야 한다는 것을 마이크로컨트롤러 또는 프로세서에 알리는 인터럽트를 발생시킬 수 있을 것이다. 예를 들어 세그먼트내에 소정의 절대 경계 어드레스들을 포함하며, 인터럽트들을 발생시킬 수 있는 엠프티(empty) 제어 레지스터들로 나타낸 다른 레지스터들이 제공될 수 있다. 하지만, 어드레스 포인터 신호들(327,347,367)과 관련된 다른 특수 기능들이 제공될 수 있다.
다른 실시예로, 버퍼(125)는 2개 이상의 세그먼트들로 분할될 수 있다. 이들 세그먼트들에 할당된 각 송신 및 수신 기능을 제공하기 위해 유닛들(135 및 145)(도 1 참조)내에 특정 패킷 필터들이 할당될 수 있다. 예를 들면, 각 필터는 할당된 세그먼트로부터만 읽거나 쓸 수 있다. 유닛들(135 및 145)은 동일한 랩 어라운드 기능을 제공할 수 있으며, 따라서 각 FIFO 레지스터들을 생성할 수 있다. 유닛들(135,145)의 각 어드레스 포인터들과 윈도우 액세스 레지스터들(250)을 비교함으로써 읽히지 않은 데이터의 겹쳐쓰기를 방지하기 위한 추가 제어 로직이 제공될 수 있다.

Claims (25)

  1. 제한된 어드레싱 용량을 갖는 인터페이스;
    상기 인터페이스와 결합되는 버퍼 메모리로서, 상기 인터페이스에 의해 직접 어드레스될 수 없는 어드레스 범위를 갖는 버퍼 메모리;
    상기 버퍼 메모리의 어드레스 라인들과 결합되는 제1 어드레스 레지스터를 포함하고, 또한 상기 버퍼 메모리를 어드레스하도록 구성된 제1 레지스터 세트;
    상기 제1 레지스터 세트와 독립적이고, 상기 버퍼 메모리의 어드레스 라인들과 결합되는 제2 어드레스 레지스터를 포함하고, 또한 상기 버퍼 메모리를 어드레스하도록 구성된 제2 레지스터 세트; 및
    상기 인터페이스에 의해 수신된 버퍼 메모리 액세스 명령들을 디코딩하여 실행하고, 상기 제1 레지스터 세트의 상기 제1 어드레스 레지스터 또는 상기 제2 레지스터 세트의 상기 제2 어드레스 레지스터의 둘 중 하나를 통해 상기 버퍼 메모리를 액세스하도록 구성된 제어 유닛을 포함하고,
    상기 제1 어드레스 레지스터 또는 상기 제2 어드레스 레지스터에 저장된 어드레스는 상기 버퍼 메모리의 어드레스 라인들에 제공되고, 관련 데이터는 상기 버퍼 메모리로부터 읽히거나 또는 상기 버퍼 메모리에 쓰여지는 것을 특징으로 하는 컨트롤러.
  2. 제1항에 있어서,
    상기 제1 레지스터 세트의 상기 제1 어드레스 레지스터는 제1 읽기 포인터 레지스터 및 제1 쓰기 포인터 레지스터를 포함하고, 상기 제2 레지스터 세트의 상기 제2 어드레스 레지스터는 제2 읽기 포인터 레지스터 및 제2 쓰기 포인터 레지스터를 포함하는 것을 특징으로 하는 컨트롤러.
  3. 제1항에 있어서,
    상기 제1 레지스터 세트 및 상기 제2 레지스터 세트의 레지스터들 중 적어도 하나의 레지스터의 컨텐츠 값을 증분(increment) 또는 감분(decrement)시키기 위한 자동 증분 또는 자동 감분 유닛을 더 포함하는 것을 특징으로 하는 컨트롤러.
  4. 제1항에 있어서,
    상기 제1 레지스터 세트 및 상기 제2 레지스터 세트의 레지스터들 중 적어도 하나의 포인터 레지스터에 저장된 어드레스를 소정의 어드레스로 리셋하기 위한 랩 어라운드 유닛을 더 포함하는 것을 특징으로 하는 컨트롤러.
  5. 제2항에 있어서,
    각 포인터 레지스터와 결합되는 적어도 하나의 멀티플렉서를 더 포함하고,
    상기 멀티플렉서는 직접 어드레스 신호를 더 수신하는 것을 특징으로 하는 컨트롤러.
  6. 제1항에 있어서,
    상기 제1 레지스터 세트 및 상기 제2 레지스터 세트는 상기 관련 데이터를 저장하기 위해 상기 버퍼 메모리의 데이터 라인들과 결합되는 제1 데이터 레지스터 및 제2 데이터 레지스터를 더 포함하는 것을 특징으로 하는 컨트롤러.
  7. 제1항에 있어서,
    상기 버퍼 메모리를 상기 제1 레지스터 세트에 할당된 제1 세그먼트와 상기 제2 레지스터 세트에 할당된 제2 세그먼트로 분할하는 상기 버퍼 메모리 내의 분할 어드레스를 정의하기 위한 특수 기능 레지스터를 더 포함하는 것을 특징으로 하는 컨트롤러.
  8. 제1항에 있어서,
    각 레지스터 세트에 할당된 상기 버퍼 메모리 내의 메모리 세그먼트들을 정의하기 위한 복수의 특수 기능 레지스터들을 더 포함하는 것을 특징으로 하는 컨트롤러.
  9. 제1항에 있어서,
    상기 버퍼 메모리를 액세스하기 위한 상기 제1 레지스터 세트 및 상기 제2 레지스터 세트와 독립적인 적어도 제3 레지스터 세트를 더 포함하고, 상기 제3 레지스터 세트는 제3 읽기 포인터 레지스터 및 제3 쓰기 포인터 레지스터를 포함하는 것을 특징으로 하는 컨트롤러.
  10. 물리 계층 및 매체 액세스 제어 계층;
    상기 물리 계층 및 상기 매체 액세스 제어 계층과 결합되는 버퍼 메모리;
    상기 버퍼 메모리의 어드레스 라인들과 결합되고, 제1 읽기 포인터 레지스터 및 제1 쓰기 포인터 레지스터를 포함하는 송신(TX) 레지스터 세트;
    상기 버퍼 메모리의 어드레스 라인들과 결합되고, 제2 읽기 포인터 레지스터 및 제2 쓰기 포인터 레지스터를 포함하는 수신(RX) 레지스터 세트;
    상기 버퍼 메모리의 어드레스 라인들과 결합되고, 제3 읽기 포인터 레지스터 및 제3 쓰기 포인터 레지스터를 포함하는 사용자 정의 레지스터 세트; 및
    제한된 어드레싱 용량을 갖는 인터페이스에 의해 수신된 버퍼 메모리 액세스 명령들을 디코딩하여 실행하기 위한 제어 유닛을 포함하고
    상기 버퍼 메모리는 상기 인터페이스에 의해 직접 어드레스될 수 없는 어드레스 범위를 갖고,
    상기 제어 유닛은 상기 송신 레지스터들, 상기 수신 레지스터들, 또는 상기 사용자 정의 레지스터들 중 어느 하나를 통해 상기 버퍼 메모리를 액세스하도록 구성되고,
    상기 읽기 포인터 레지스터들 및 상기 쓰기 포인터 레지스터들 중 어느 하나에 저장된 어드레스는 상기 버퍼 메모리의 어드레스 라인들에 제공되고, 관련 데이터는 상기 버퍼 메모리로부터 읽히거나 또는 상기 버퍼 메모리에 쓰여지는 것을 특징으로 하는 이더넷 컨트롤러.
  11. 제10항에 있어서,
    상기 포인터 레지스터들 중 어느 하나의 레지스터의 컨텐츠 값을 증분 또는 감분시키기 위한 자동 증분 또는 자동 감분 유닛을 더 포함하는 것을 특징으로 하는 이더넷 컨트롤러.
  12. 제10항에 있어서,
    상기 포인터 레지스터들 중 어느 하나에 저장된 어드레스를 소정의 시작 어드레스로 리셋하기 위한 랩 어라운드 유닛을 더 포함하는 것을 특징으로 하는 이더넷 컨트롤러.
  13. 제10항에 있어서,
    각 포인터 레지스터와 결합되는 적어도 하나의 멀티플렉서를 더 포함하는 것을 특징으로 하는 이더넷 컨트롤러.
  14. 제13항에 있어서,
    상기 멀티플렉서는 직접 어드레스 신호를 더 수신하는 것을 특징으로 하는 이더넷 컨트롤러.
  15. 제10항에 있어서,
    상기 버퍼 메모리를 상기 송신 레지스터들에 할당된 제1 세그먼트와 상기 수신 레지스터들에 할당된 제2 세그먼트로 분할하는 상기 버퍼 메모리 내의 분할 어드레스를 정의하기 위한 특수 기능 레지스터를 더 포함하는 것을 특징으로 하는 이더넷 컨트롤러.
  16. 제15항에 있어서,
    상기 사용자 정의 레지스터들을 위한 메모리 세그먼트를 정의하기 위한 복수의 특수 기능 레지스터들을 더 포함하는 것을 특징으로 하는 이더넷 컨트롤러.
  17. 제10항에 있어서,
    각 레지스터 세트에 할당된 상기 버퍼 메모리 내의 메모리 세그먼트들을 정의하기 위한 복수의 특수 기능 레지스터들을 더 포함하는 것을 특징으로 하는 이더넷 컨트롤러.
  18. 컨트롤러 내의 메모리를 액세스하기 위한 방법으로서,
    제한된 어드레싱 용량을 갖는 인터페이스를 통해 상기 메모리의 제1 어드레스를 제1 액세스 레지스터 세트의 제1 어드레스 레지스터로 로딩하는 단계로서, 상기 메모리는 상기 컨트롤러 내에 배치되고, 상기 인터페이스에 의해 직접 어드레스될 수 없는 어드레스 범위를 갖는 단계;
    상기 인터페이스를 통해 상기 메모리의 제2 어드레스를 제2 액세스 레지스터 세트의 제2 어드레스 레지스터로 로딩하는 단계;
    상기 인터페이스를 통해 제1 읽기 명령을 수신하는 단계;
    상기 제1 어드레스 레지스터에 저장된 어드레스를 상기 메모리에 제공하고 상기 메모리 내의 상기 제1 어드레스로부터 제1 데이터를 수신하는 단계;
    상기 인터페이스를 통해 상기 제1 데이터를 출력하는 단계;
    상기 인터페이스를 통해 제2 읽기 명령을 수신하는 단계;
    상기 제2 어드레스 레지스터에 저장된 어드레스를 상기 메모리에 제공하고 상기 메모리 내의 상기 제2 어드레스로부터 제2 데이터를 수신하는 단계; 및
    상기 인터페이스를 통해 상기 제2 데이터를 출력하는 단계를 포함하는 것을 특징으로 하는 컨트롤러 내의 메모리 액세스 방법.
  19. 제18항에 있어서,
    상기 메모리를 읽은 후에 상기 제1 어드레스 레지스터 및 상기 제2 어드레스 레지스터를 자동 증분 또는 자동 감분시키는 단계를 더 포함하는 것을 특징으로 하는 컨트롤러 내의 메모리 액세스 방법.
  20. 제19항에 있어서,
    자동 증분 또는 자동 감분 후에 상기 제1 어드레스 레지스터 및 상기 제2 어드레스 레지스터에서 어드레스 랩 어라운드 기능을 수행하는 단계를 더 포함하는 것을 특징으로 하는 컨트롤러 내의 메모리 액세스 방법.
  21. 제18항에 있어서,
    상기 인터페이스를 통해 상기 메모리의 제3 어드레스를 제3 액세스 레지스터 세트의 제3 어드레스 레지스터로 로딩하는 단계;
    상기 인터페이스를 통해 제3 읽기 명령을 수신하는 단계;
    상기 제3 어드레스 레지스터에 저장된 어드레스를 상기 메모리에 제공하고 상기 메모리 내의 상기 제3 어드레스로부터 제3 데이터를 수신하는 단계; 및
    상기 인터페이스를 통해 상기 제3 데이터를 출력하는 단계를 더 포함하는 것을 특징으로 하는 컨트롤러 내의 메모리 액세스 방법.
  22. 컨트롤러 내의 메모리를 액세스하기 위한 방법으로서,
    제한된 어드레싱 용량을 갖는 인터페이스를 통해 제1 어드레스를 제1 액세스 레지스터 세트의 제1 어드레스 레지스터로 로딩하는 단계로서, 상기 메모리는 상기 컨트롤러 내에 배치되고, 상기 인터페이스에 의해 직접 어드레스될 수 없는 어드레스 범위를 갖는 단계;
    상기 인터페이스를 통해 제2 어드레스를 제2 액세스 레지스터 세트의 제2 어드레스 레지스터로 로딩하는 단계;
    상기 인터페이스를 통해 제1 쓰기 명령을 수신하는 단계;
    상기 인터페이스를 통해 제1 쓰기 데이터를 수신하는 단계;
    상기 제1 어드레스 레지스터에 저장된 어드레스를 상기 메모리에 제공하고 상기 제1 어드레스하의 제1 데이터를 상기 메모리에 저장하는 단계;
    상기 인터페이스를 통해 제2 쓰기 명령을 수신하는 단계;
    상기 인터페이스를 통해 제2 쓰기 데이터를 수신하는 단계; 및
    상기 제2 어드레스 레지스터에 저장된 어드레스를 상기 메모리에 제공하고 상기 제2 어드레스하의 제2 데이터를 상기 메모리에 저장하는 단계를 포함하는 것을 특징으로 하는 컨트롤러 내의 메모리 액세스 방법.
  23. 제22항에 있어서,
    상기 메모리를 읽은 후에 상기 제1 어드레스 레지스터 및 상기 제2 어드레스 레지스터를 자동 증분 또는 자동 감분시키는 단계를 더 포함하는 것을 특징으로 하는 컨트롤러 내의 메모리 액세스 방법.
  24. 제23항에 있어서,
    자동 증분 또는 자동 감분 후에 상기 제1 어드레스 레지스터 및 상기 제2 어드레스 레지스터에서 어드레스 랩 어라운드 기능을 수행하는 단계를 더 포함하는 것을 특징으로 하는 컨트롤러 내의 메모리 액세스 방법.
  25. 제22항에 있어서,
    상기 인터페이스를 통해 제3 어드레스를 제3 액세스 레지스터 세트의 제3 어드레스 레지스터로 로딩하는 단계;
    상기 인터페이스를 통해 제3 쓰기 명령을 수신하는 단계;
    상기 인터페이스를 통해 제3 쓰기 데이터를 수신하는 단계; 및
    상기 제3 어드레스 레지스터에 저장된 어드레스를 상기 메모리에 제공하고 상기 제3 어드레스하의 제3 데이터를 상기 메모리에 저장하는 단계를 포함하는 것을 특징으로 하는 컨트롤러 내의 메모리 액세스 방법.
KR20107009107A 2007-11-21 2008-11-21 간접 액세스가능 메모리를 구비한 컨트롤러 KR101485081B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/944,138 2007-11-21
US11/944,138 US8166213B2 (en) 2007-11-21 2007-11-21 Controller with indirect accessible memory
PCT/US2008/084350 WO2009067665A2 (en) 2007-11-21 2008-11-21 Controller with indirect accessible memory

Publications (2)

Publication Number Publication Date
KR20100087294A KR20100087294A (ko) 2010-08-04
KR101485081B1 true KR101485081B1 (ko) 2015-01-21

Family

ID=40348039

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20107009107A KR101485081B1 (ko) 2007-11-21 2008-11-21 간접 액세스가능 메모리를 구비한 컨트롤러

Country Status (5)

Country Link
US (1) US8166213B2 (ko)
EP (2) EP3029579A3 (ko)
KR (1) KR101485081B1 (ko)
CN (1) CN101855623B (ko)
WO (1) WO2009067665A2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008316A (ja) * 2009-06-23 2011-01-13 Seiko Epson Corp 情報処理装置、画像表示装置及び情報処理方法
US8963587B2 (en) * 2013-05-14 2015-02-24 Apple Inc. Clock generation using fixed dividers and multiplex circuits
CN114896179B (zh) * 2022-07-12 2022-09-27 统信软件技术有限公司 内存页的拷贝方法、装置、计算设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981501A (ja) * 1995-09-19 1997-03-28 Hitachi Ltd デジタル処理装置及びdmaコントローラ

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4403283A (en) * 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
JPS58137065A (ja) * 1982-02-08 1983-08-15 Hitachi Ltd メモリシステム
JPH01112450A (ja) * 1987-10-27 1989-05-01 Sharp Corp メモリ管理ユニット
JPH01293431A (ja) * 1988-05-23 1989-11-27 Toshiba Corp メモリアクセス方式
US4965748A (en) * 1989-07-12 1990-10-23 Ricoh Company, Ltd. Laser printer controller flexible frame buffer architecture which allows offsetting different input/output data widths
US5805927A (en) * 1994-01-28 1998-09-08 Apple Computer, Inc. Direct memory access channel architecture and method for reception of network information
IL116984A (en) * 1996-01-31 2000-07-26 Galileo Technology Ltd Multiple FIFO array and method of construction thereof
US5867672A (en) * 1996-05-21 1999-02-02 Integrated Device Technology, Inc. Triple-bus FIFO buffers that can be chained together to increase buffer depth
JP3289661B2 (ja) * 1997-11-07 2002-06-10 日本電気株式会社 キャッシュメモリシステム
EP1396786A1 (en) 2002-09-03 2004-03-10 STMicroelectronics Limited Bridge circuit for use in retiming in a semiconductor integrated circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981501A (ja) * 1995-09-19 1997-03-28 Hitachi Ltd デジタル処理装置及びdmaコントローラ

Also Published As

Publication number Publication date
EP2212798A2 (en) 2010-08-04
US8166213B2 (en) 2012-04-24
US20090132734A1 (en) 2009-05-21
EP3029579A2 (en) 2016-06-08
KR20100087294A (ko) 2010-08-04
EP3029579A3 (en) 2016-06-22
WO2009067665A3 (en) 2009-09-11
CN101855623A (zh) 2010-10-06
WO2009067665A2 (en) 2009-05-28
CN101855623B (zh) 2013-05-01

Similar Documents

Publication Publication Date Title
US6742063B1 (en) Method and apparatus for efficient transfer of data packets
AU573516B2 (en) Communication controller using multiported random access memory
US6473808B1 (en) High performance communication controller for processing high speed data streams wherein execution of a task can be skipped if it involves fetching information from external memory bank
US5513368A (en) Computer I/O adapters for programmably varying states of peripheral devices without interfering with central processor operations
EP2097828B1 (en) Dmac to handle transfers of unknown lengths
JPS581465B2 (ja) デ−タ信号の緩衝方式
US20020184453A1 (en) Data bus system including posted reads and writes
US5446843A (en) Interface unit for dynamically configuring a buffer in different modes to store data transfers based upon different connection details of connected processing units
JP4903801B2 (ja) FlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェース、およびFlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェースを経由するメッセージの伝送方法
JP2009511318A (ja) マイクロコントローラとFlexRay通信モジュールとを繋ぐ加入者インタフェース、FlexRay加入者装置、およびマイクロコントローラとFlexRay通信モジュールとを繋ぐ加入者インタフェースを経由するメッセージの伝送方法
EP2212802B1 (en) Ethernet controller
US7035956B2 (en) Transmission control circuit, reception control circuit, communications control circuit, and communications control unit
EP0772831B1 (en) Bidirectional parallel signal interface
KR101485081B1 (ko) 간접 액세스가능 메모리를 구비한 컨트롤러
JP2009502072A (ja) FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法
JP5497743B2 (ja) 複数のプロセスからメモリ領域へのアクセスを制御する方法、及び、本方法を実現するためのメッセージメモリを備えた通信モジュール
US8769167B2 (en) Channel device, information processing system and data transfer method
KR20070060854A (ko) 멀티 채널 직접 메모리 접근 제어기
EP0446335B1 (en) Packet/fast packet switch for voice and data
US5125079A (en) Method for controlling the data transmission of a central unit interfacing control circuit and circuit arrangement for the implementation of the method
US20100011140A1 (en) Ethernet Controller Using Same Host Bus Timing for All Data Object Access
JP2012178637A (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: 20180110

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 6