KR20040028725A - 네트워크 프로세서에서 메모리 대역폭을 효율적으로공유하기 위한 장치 및 방법 - Google Patents

네트워크 프로세서에서 메모리 대역폭을 효율적으로공유하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20040028725A
KR20040028725A KR10-2003-7011580A KR20037011580A KR20040028725A KR 20040028725 A KR20040028725 A KR 20040028725A KR 20037011580 A KR20037011580 A KR 20037011580A KR 20040028725 A KR20040028725 A KR 20040028725A
Authority
KR
South Korea
Prior art keywords
memory
controller
request
slice
epc
Prior art date
Application number
KR10-2003-7011580A
Other languages
English (en)
Other versions
KR100590387B1 (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 KR20040028725A publication Critical patent/KR20040028725A/ko
Application granted granted Critical
Publication of KR100590387B1 publication Critical patent/KR100590387B1/ko

Links

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
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Bus Control (AREA)

Abstract

네트워크 프로세서(NP)는 메모리의 최대 이용을 허용하는 제어기를 포함한다. 제어기는 NP내의 요청자들로부터의 메모리 액세스 요청들을 관찰하고 높은 우선순위 요청자에게 메모리에 대한 액세스당 요구되는 전체 메모리 대역폭을 부여한다. 높은 우선순위 요청자에 의해 요구되는 메모리 대역폭이 전체 메모리 대역폭보다 작다면, 요청된 대역폭과 전체 메모리 대역폭간의 차이가 낮은 우선순위 요청자들에게 할당된다. 그렇게 함으로써, 모든 메모리 액세스는 전체 메모리 대역폭을 이용한다.

Description

네트워크 프로세서에서 메모리 대역폭을 효율적으로 공유하기 위한 장치 및 방법{Apparatus and method for efficiently sharing memory bandwidth in a network processor}
통신망에서 정보 전달을 위해 사용되는, 스위치, 브리지, 컴퓨터, 네트워크 프로세서 등과 같은 네트워크 장치 이용은 종래 기술에 공지되어 있다. 이러한 장치들상에 놓여지는 요구사항중 하나는 그들이 (대역폭이라 불리우는) 대용량의 데이터를 전달해야할 필요성이다.
높은 수준의 대역폭 요구사항을 충족시키기 위해, 장치에 클리어 채널(Clear Channel)이 제공된다. 클리어 채널은 단일 플로우(flow)상에서 대용량의 데이터를 전송하는 높은 대역폭을 갖는 채널로서, 단일의 물리적 링크상에서 여러번의 낮은 대역폭 데이터 플로우를 운반하는 채널화된 링크에 반대되는 개념이다.
다량의 데이터를 지원할 수 있는 클리어 채널을 제공하기 위해, 고속의 저장 부시스템이 필요하다. SRAM과 같은 고속 저장 시스템이 높은 대역폭 요구사항을충족시키기 위해 이용될 수 있다. 그러나, 이러한 메모리들은 비싸며, 그 결과, 그들이 이용되는 장치의 가격까지 증가시킨다. 이러한 고가의 메모리들이 컴퓨터 및 네트워크 프로세서용 저장 시스템을 구축하기 위해 이용된다면, 비용 문제는 더욱 악화된다.
고가인 것에 부가하여, 종래의 고속 메모리들은 낮은 밀도를 갖는다. 그들은 오직 제한된 량의 데이터만을 저장할 수 있다. 그러나, 인터넷 및 기타 기술에 특히 관련된 대부분의 어플리케이션들은 높은 밀도의 메모리 또는 저장 시스템을 필요로 한다. 그 결과, 종래의 고속 메모리들도 다수의 어플리케이션들에 적합하지 않다.
본 발명은 일반적으로 컴퓨터 및 네트워크 프로세서에 관한 것으로 구체적으로는 상기 컴퓨터 및 네트워크 프로세서에서 사용되는 메모리 시스템에 관한 것이다.
본 발명의 바람직한 실시예는 이하의 도면을 참조하여 예시적으로 설명되겠다.
도 1a는 본 발명의 바람직한 실시예가 이요되는 네트워크 프로세서의 블록도를 도시한다.
도 1b는 본 발명의 바람직한 실시예에 따른 네트워크 프로세서 요청자 및 메모리 시스템의 블록도를 도시한다.
도 2는 본 발명의 바람직한 실시예에 따른 메모리 중재의 블록도를 도시한다.
도 3은 본 발명의 바람직한 실시예에 따라 완전 대역폭이 전송 제어기에 의해 이용되는 판독 요청을 예시한 기능 블록도를 도시한다.
도 4는 본 발명의 바람직한 실시예에 따라 동일한 슬라이스의 상이한 버퍼들이 액세스되고 상이한 타겟 포트(TP) FIFO 버퍼들에 할당되는 판독 요청을 예시한 기능 블록도를 도시한다.
도 5는 본 발명의 바람직한 실시예에 따라 상이한 슬라이스의 상이한 버퍼들이 액세스되고 하나의 쿼드워드(quadword)가 EPC 제어기에 할당되는 판독 요청을 예시한 기능 블록도를 도시한다.
도 6은 메모리 중재의 대안 실시예를 도시한다.
도 7은 본 발명의 실시예에 따라 기록 또는 판독 연산에서 사용되는 알고리즘 흐름도를 도시한다.
본 발명에 따르면 메모리 이용의 최적화를 위한 방법이 제공되는데, 이 방법은 메모리 중재기에서 다수의 메모리 액세스 요청 - 상기 메모리 액세스 요청중 적어도 하나는 우선순위 표시자(우선순위 표시자는 요청과 함께 도착하거나 도착에 이어서 할당될 수 있음)와 연관되어 있음-을 수신하는 단계와, 필요한 메모리 대역폭 크기를 판단하기 위해 특정 우선순위 표시자를 갖는 상기 메모리 액세스 요청들을 상기 메모리 중재기에 의해 분석하는 단계와, 상기 특정 우선순위 표시자를 갖는 메모리 요청이 전체 메모리 대역폭을 필요로 하지 않는 경우에 적어도 하나의 다른 요청과 메모리 액세스를 공유하는 단계를 포함한다.
바람직하게, 저가의 높은 밀도를 갖는 고속 메모리가 제공된다. 명세서에서 사용되는 바와 같이, 고속 메모리는 바람직하게 비교적 짧은 시간 간격내에 다량의데이터를 제공하는 큰 대역폭을 갖는다.
바람직하게, 특정 우선순위 표시자를 갖는 상기 메모리 요청이 전체 메모리 대역폭을 필요로 하는 경우에는 상기 특정 우선순위 표시자를 갖는 메모리 액세스 요청이 전체 메모리 대역폭을 이용하도록 허용된다. 일실시에에서, 상기 특정 우선순위 표시자는 가장 높은 것이다.
바람직하게, 적어도 하나의 슬라이스내에 배열되는 다수의 버퍼 - 상기 적어도 하나의 슬라이스 내의 각 버퍼가 다수의 쿼드워드(Quadword)를 구비함-를 갖는 메모리를 제공하며, 상기 메모리 요청은 다수의 요청자로부터 상기 적어도 하나의 슬라이스에 대해 액세스하고자 한다.
바람직하게, 저가의 높은 밀도를 갖는 고속 메모리가 제공된다. 명세서에서 사용되는 바와 같이, 고속 메모리는 바람직하게 비교적 짧은 시간 간격내에 다량의 데이터를 제공하는 큰 대역폭을 갖는다.
바람직하게, 본 발명은 메모리 시스템을 이용하는 리소스들이 메모리 시스템을 이용하는 것을 최적화시키는 방법을 포함한다. 특히, 다수의 요청자들로부터의 판독 또는 기록 요청이 바람직하게는 번들(bundle)화되어 각각의 메모리 사이클동안에 최대한 허용될 수 있는 정보 단위가 판독되거나 기록된다. 그렇게 함으로써, 정보 처리율이 향상되고, DDR DRAM과 같은 저가의 고밀도이며 비교적 느린 액세스 시간을 갖는 메모리들이 컴퓨터 네트워크 프로세서 또는 이와 유사한 장치들을 위한 저장장치를 구축하기 위해 이용될 수 있도록 해준다.
바람직한 실시예에 따르면, (메모리 액세스 요청의) 요청자들은 네트워크프로세서 또는 이와 유사한 장치들내의 수신 제어기와, 내장 프로세서 복합(Embedded Processor Complex: EPC) 제어기 및 전송 제어기를 포함한다. 바람직하게, 메모리 시스템은 DDR DRAM 모듈로 이루어지는 다수의 버퍼들을 포함하고, 이들은 "슬라이스"라 지칭되는 그룹으로 배열된다. 각각의 DDR DRAM은 바람직하게는 다수의 버퍼(1에서 N)들로 분할되고 이는 DRAM 제어기에 의해 제어된다. 각각의 버퍼는 "쿼드워드(quadword)"라 지칭되는 섹션들로 분할된다. 일 실시예에서, 버퍼는 쿼드워드 A, B, C 및 D로 분할된다. 버퍼 및 버퍼내의 쿼드워드 모두 어드레스 지정가능한다.
바람직한 실시예에 따르면, 메모리 중재기는 수신 제어기, EPC 제어기 및 전송 제어기로부터의 요청들을 관찰한다. 바람직하게, 메모리 중재기는 요청들을 이용하여 메모리 슬라이스 당 메모리 액세스 벡터를 생성한다. 판독 요청의 경우에, 바람직하게는, 메모리 액세스 우선권이 전송 제어기에 주어진다. 전송 제어기로부터의 요청이 전체 메모리 대역폭을 필요로 한다면, 바람직하게는, 메모리 액세스 벡터가 전송 제어기 요청에만 기초한다. 그러나, 전송 제어기에 의해 전체 메모리 대역폭보다 적게 요구된다면, EPC 제어기에 의한 임의의 대기중인 판독 요청이 전송 제어기로부터의 요청과 병합되어 슬라이스 당 메모리 액세스 벡터를 형성한다. 메모리 액세스 벡터에 응답하는 DRAM 제어기는 바람직하게는 (전체 버퍼의 데이터가 요청된 경우에) 전송 제어기를 위한 데이터, 또는 (전송기가 전체 버퍼보다 적게 요청한 경우에) 전송 제어기 및 EPC를 위한 데이터를 포함하는 전체 버퍼의 정보를 출력한다. 기본적으로, 전송 제어기가 전체 버퍼의 데이터보다 적게 요청함으로써 발생한 임의의 초과 여유분은 바람직하게는 EPC 제어기에 할당된다.
기록 요청에 대한 바람직한 실시예에 따르면, 중재기는 수신 제어기에 우선권을 제공한다. 유사한 방법으로, 수신 제어기가 전체 버퍼 페이로드보다 적게 갖는 기록 요청은 바람직하게는 EPC로부터의 데이터에 의해 보충된다.
따라서, 각각의 메모리 액세스상에서 항상 전체 버퍼의 데이터가 판독되거나 기록된다.
또다른 특징에 따르면, 본 발명은 네트워크 프로세서를 포함하는데, 네트워크 프로세서는, 정보를 저장하기 위한 메모리 시스템과, 상기 메모리 시스템에 연동되어 액세스를 허여하기 위한 메모리 중재기를 포함하고, 상기 메모리 중재기는 메모리 액세스 요청이 수신되는 하나 이상의 요청 레지스터와, 상기 요청자들에 대한 우선순위 표시자를 저장하기 위한 적어도 하나의 우선순위 레지스터와, 상기 요청 레지스터 및 상기 우선순위 레지스터에 연동되는 제어기를 포함하고, 상기 제어기는 요청들 및 요청 우선순위를 관찰하여 가장 높은 우선순위의 요청이 전체 대역폭보다 적게 필요로 하는 경우에 상기 가장 높은 우선순위의 요청이 적어도 하나의 다른 메모리 요청과 메모리 대역폭을 공유하도록 해주는 메모리 액세스 벡터를 생성하는 회로를 포함한다.
일 실시예에 따르면, 메모리 이용을 최적화하는 방법이 제공되는데, 이 방법은, a) 적어도 하나의 슬라이스 내에 배열된 다수의 버퍼 - 상기 적어도 하나의 슬라이스 내의 버퍼는 다수의 쿼드워드로 분할됨-를 구비하는 메모리를 제공하는 단계와, b)메모리 중재기 내에서 다수의 요청자들로부터 상기 적어도 하나의 슬라이스에 대한 액세스를 구하는 요청을 받아들이는 단계와, c) 상기 메모리 중재기에 의해 상기 요청 각각에 선정된 우선순위를 할당하는 단계와, d) 상기 메모리 중재기에 의해 가장 높은 우선순위 요청에 필요한 메모리 대역폭 비율을 검출하기 위해 가장 높은 우선순위 요청을 분석하는 단계와, e)상기 가장 높은 우선순위 요청이 전체 메모리 대역폭을 이용하지 않는 경우에 낮은 우선순위의 요청과 메모리 액세스를 공유하는 단계를 포함한다.
일 실시예에 따르면, 메모리 이용을 최적화하는 방법이 제공되는데, 이 방법은, a) 적어도 하나의 슬라이스에 배열된 다수의 버퍼 - 상기 적어도 하나의 슬라이스 내의 버퍼는 다수의 쿼드워드로 분할됨-를 구비하는 메모리를 제공하는 단계와, b)메모리 중재기 내에서 다수의 요청자들로부터 상기 적어도 하나의 슬라이스에 대한 액세스를 구하는 요청을 받아들이는 단계와, c) 상기 메모리 중재기에 의해 상기 요청 각각에 선정된 우선순위를 할당하는 단계와, d) 상기 메모리 중재기에 의해 가장 높은 우선순위 요청에 필요한 메모리 대역폭 비율을 검출하기 위해 가장 높은 우선순위 요청을 분석하는 단계와, e) 상기 가장 높은 우선순위 요청이 전체 메모리 대역폭을 필요로 하는 경우에는 상기 가장 높은 우선순위 요청이 전체 메모리 대역폭을 이용하도록 허용하거나, 상기 높은 우선순위 요청이 전체 메모리 대역폭을 이용하지 않는 경우에는 낮은 우선순위의 요청과 메모리 액세스를 공유하는 단계를 포함한다.
바람직하게, 다수의 요청자들은 네트워크 프로세서내에서 연동되는 수신 제어기, 전송 제어기 및 내장 프로세서 복합(Embedded Processor Complex: EPC) 제어기를 포함한다. 일실시예에서, 전송 제어기는 가장 높은 우선순위를 갖는다. 수신 제어기는 다음으로 높은 우선순위를 갖는다.
일실시예에서, EPC는 전송 제어기 또는 수신 제어기와 메모리 대역폭을 공유한다. 요청은 판독 및 기록을 포함한다. 일실시예에서, 판독 요청은 전송 제어기에 의해 제공된다. 일실시예에서, 기록 요청은 수신 제어기에 의해 제공된다. 판독 및 기록 요청들이 EPC 제어기에 의해 제공될 수 있다.
일실시예에 따르면, 메모리 이용을 최적화하는 방법이 제공되는데, 이 방법은, 메모리 중재기 내에서 다수의 메모리 액세스 요청을 수신하는 단계와, 상기 메모리 중재기내에서 적어도 하나의 메모리 액세스 요청에 대해 우선순위 표시자를 제공하는 단계와, 상기 메모리 중재기에 의해 상기 우선 순위 표시자를 갖는 메모리 액세스 요청을 분석하여 필요한 메모리 대역폭의 크기를 판단하는 단계와, 상기 우선순위 표시자를 갖는 메모리 액세스 요청이 전체 메모리 대역폭을 필요로 하는 경우에는 상기 우선순위 표시자를 갖는 메모리 액세스 요청이 전체 메모리 대역폭을 이용하도록 허여하거나, 상기 우선순위 표시자를 갖는 메모리 액세스 요청이 전체 메모리 대역폭보다 적게 필요로 하는 경우에는 다른 요청들과 메모리 대역폭을 공유하는 단계를 포함한다.
바람직하게, 우선순위 표시자는 가장 높은 것이다. 일실시예에서, 공유 단계는 가장 높은 우선순위 요청의 메모리 대역폭과 낮은 우선순위 요청의 메모리 대역폭을 조합하는 단계를 더 포함한다.
일실시예에 따르면, 네트워크 프로세서가 제공되는데, 이 네트워크 프로세서는 정보를 저장하는 메모리 시스템과, 상기 메모리 시스템에 연동되어 액세스를 허여하는 메모리 중재기를 포함하며, 상기 메모리 중재기는 메모리 액세스가 수신되는 하나 이상의 요청 레지스터와, 요청자들에 대한 우선순위 표시자를 저장하는 적어도 하나의 우선순위 레지스터와, 상기요청 레지스터 및 우선순위 레지스터에 연동되는 제1 제어기를 포함하고, 상기 제어기는 요청들 및 요청들의 우선순위를 관찰하여 가장 높은 우선순위 요청이 전체 메모리 대역폭을 필요로 하는 경우에는 상기 가장 높은 우선순위 요청이 전체 메모리 대역폭을 이용하도록 허용하는 메모리 액세스 벡터를 생성하거나, 상기 가장 높은 우선순위 요청과 낮은 우선순위 요청이 전체 메모리 대역폭을 공유하는 메모리 액세스 요청을 생성하는 메모리 액세스 벡터를 생성하는 회로를 포함한다.
바람직하게, 메모리 시스템은 적어도 하나의 슬라이스내에 배열되는 다수의 버퍼를 포함하고, 각각의 버퍼는 쿼드워드로 분할된다. 바람직하게, 각각의 슬라이스는 적어도 하나의 버퍼 제어기에 연동된다. 바람직하게, 각각의 버퍼는 각각이 16바이트로 이루어지는 4개의 쿼드워드로 분할된다. 각각의 슬라이스는 DDR DRAM으로 제조된다.
바람직하게, 메모리 중재기에 연동되는 수신 제어기가 또한 제공된다. 또한, 상기 메모리 중재기에 연동되는 전송 제어기가 제공된다. 또한, 상기 메모리 중재기에 연동되는 EPC 제어기가 제공된다. 바람직하게, 전송 제어기를 포함하는 실시예에서, 스케쥴러가 전송 제어기에 연동되어 있다.
일 실시예에서, 버퍼 메모리 액세스 벡터를 생성하기 위해, 상기 제1 제어기는 다음 단계들, a) (각각의 DRAM 제어기에 의해 표시되는) 리프레시(refresh) 사이클로 스케쥴링된 슬라이스를 제외시킴, b) 전송 제어기의 모든 판독 요청에 대해 슬라이스를 할당함, c) 대응 EPC 큐로부터 판독 액세스를 보충함[슬라이스;쿼드워드], d) 전역적으로(globally) 기록이 제외된 (예, 수신기로부터 모든 슬라이스 제외 규칙에 의해 제외된) 슬라이스들을 EPC에 할당함, e) 최근에 할당된 슬라이스 (이전 윈도우에서 수신 제어기에 할당된 슬라이스)로부터 시작하는 제외되지 않은 슬라이스들중에서 라운드로빈(Round Robin:RR) 방식으로 기록 요청들에 슬라이스를 할당함, f) 대응 EPC 큐로부터 기록 액세스를 보충하고[슬라이스;쿼드워드], 웨이트(weight)에 의해 표현된 우선순위에 따라 EPC 요청들에 슬라이스를 할당하는 단계들을 선택적으로 수행한다.
일 실시예에 따르면, 1보다 큰 N개의 섹터들로 분할되는 메모리와, 상기 메모리에 연동되는 메모리 중재 제어기를 포함하는 장치가 제공되는데, 상기 메모리 중재 제어기는 적어도 둘 이상의 메모리 액세스 요청을 수신하여 상기 요청들에 대하여 메모리 액세스 우선순위를 할당하고, 상기 요청들중에서 선택된 요청을 분석하여 상기 선택된 요청이 특정 메모리 액세스 사이클동안 전체 메모리 대역폭을 이용할 것인지를 판단하고, 전체 메모리 대역폭이 필요하다면 항기 선택된 요청에 전체 메모리 대역폭을 할당하는 메모리 액세스 벡터를 생성하고, 상기 전체 메모리 대역폭이 이용되지 않는다면 또다른 요청과 메모리 대역폭을 공유시킨다.
일 실시예에 따르면, 메모리를 액세스하는 방법이 제공되는데, 이 방법은 a)메모리 중재기에서 제1 요청자로부터 판독 요청 - 상기 판독 요청은 데이터가 판독될 메모리 부분을 식별해주는 정보를 포함함-을 수신하는 단계와, b) 리턴될 데이터가 전체 가용 메모리 대역폭을 사용하는지를 판단하는 단계와, c) 상기 제1 요청자에 의해 전체 메모리 대역폭이 이용되지 않는다면 상기 제1 요청자에게 리턴될 데이터를 제2 요청자를 위한 데이터로 보충하는 단계를 포함한다.
일 실시예에 따르면, a) 중재기에서 메모리에 대한 액세스를 구하는 제1 요청자의 요청을 수신하는 단계와, b) 상기 요청 결과로서 어느 정도의 메모리 대역폭이 이용될 지를 판단하는 단계와, c) 단계 b)에서의 판단이 전체 메모리 대역폭 이용을 나타내는 경우에 전체 메모리 대역폭의 ld용을 상기 제1 요청자에 할당하는 단계와, d) 단계 b)에서의 판단이 제1 요청자의 대역폭 이용도가 전체 메모리 대역폭보다 작은 것으로 나타내는 경우에 상기 제1 요청자에 의한 대역폭 이용을 제2 요청자에 의한 대역폭 이용으로 보충하는 단계를 포함하는 방법이 제공된다.
요청은 판독 또는 기록일 수 있다. 바람직하게, 제2 요청자는 EPC를 포함한다. 바람직하게, 제1 요청자는 수신 제어기를 포함한다.
전술한 실시예들은 컴퓨터 프로그램으로서 구현될 수 있음을 이해할 것이다.
도 1a는 이하에서 설명될 본 발명의 바람직한 실시예가 구현되는 네트워크 프로세서(NP)의 블록도를 도시한다. 네트워크 프로세서는 입구측(10)과 출구측(12)을 포함한다. 입구측(10)과 출구측(12)은 가상의 축 AA에 관하여 대칭이다. 입구측(10)을 액세스하는 데이터 트래픽은 플렉스버스(Flexbus, 4) 또는 랩(WRAP) 전송선으로 들어가고 스위치 인터페이스(10')상으로 빠져나온다. 마찬가지로, 출구측(12)으로 들어가는 데이터는 스위치 인터페이스(12')상으로 들어가서 플렉스버스(4')로 라벨링된 컨덕터상으로 빠져나온다. 플렉스버스(4, 4') 및 스위치 인터페이스(10', 12')는, 각각, 10 Gbps 및 14 Gbps를 운반하는 클리어 채널로서 간주될 수 있다. 스위치 인터페이스(10')는 프리즈마(Prizma)에 의해 개발되고 IBM에 의해 판매되는 스위치 어셈블리(미도시)에 의해 스위치 인터페이스(12')에 연결된다.
도 1a를 계속 참조하면, 입구측(10)은 데이터플로우칩(14), EPC칩(16), 데이터 버퍼(18) 및 스케쥴러칩(20)을 포함한다. 출구측(12)은 데이터플로우칩(14'), EPC칩(16'), 데이터 버퍼(18') 및 스케쥴러칩(20')을 포함한다. WRAP 전송선은 데이터플로우칩(14')를 데이터플로우칩(14)에 연결시킨다. 명명된 구성요소들은 도면에 도시된 바와 같이 상호연결된다. 도면에서 유사한 명칭을 갖는 요소들은 실질적으로 유사하고 하나에 대한 설명은 다른 것에 대한 설명도 포함하는 것임을 이해하여야 할 것이다. 예로써, EPC 칩(16)과 EPC 칩(16')은 실질적으로 동일하다. 마찬가지로, 유사한 이름의 구성요소들 또한 동일하다.
도 1a에 도시된 구성은 양방향 기능성을 제공한다. 칩셋에 걸친 패킷 행동범위는 그의 기능성을 설명하기 위해 이용될 것이다. 프레이머(framer) 장치(미도시)에 의해 소넷(Sonet)/SDH 스트림으로부터 추출된 HDLC 프레임은 플렉스버스(4) (입구측)상에서 수신되고 데이터플로우칩(14)로 전달된다. 프레임 데이터는 데이터 버퍼(18)에 기록된다. 완전한 프레임이 데이터 버퍼(18)에 기록된 후에, 프레임 콘텍스트(FCB)가 EPC(Embedded Processor Complex: 내장된 프로세서 복합체) 큐중 하나(도 1b의 G-FIFO)로 대기된다(enqueue). EPC 칩(16)은 프레임 포인터를 판독하고 그의 피코프로세서(picoprocessor)중 하나에서 각각의 프레임을 처리한다. 프레임 처리중에, EPC는 데이터버퍼로부터/데이터버퍼에 프레임의 적절한 부분(예, L2 및 L3 헤더)을 판독/기록하기 위한 요청을 발송한다. 프레임 처리가 완료되면, EPC는 프레임 콘텍스트를 데이터플로우칩으로 넘기고, 데이터플로우칩은 프레임을 스케쥴러칩(20)의 대기열 구조에 대기시킨다. 스케쥴러 칩(50)의 스케쥴러는 전송을 위해 적절한 큐로부터 프레임을 선택하고, 이는 해당 프레임 포인터가 데이터플로우칩으로 전달됨을 의미한다. 전송프레임은 데이터 버퍼로부터 판독되고 PRIZMA 셀의 형태로 스위치 인터페이스(10')상으로 전송된다. PRIZMA 셀들은 다양한 크기의 세크먼트들을 운반하는 64바이트 셀 또는 완전한 비대칭 전송모드(Asynchronous Transfer Mode:ATM) 셀이다. 셀들은 스위치 인터페이스(10;)를 경유하여 크로스 포인트 스위치(미도시)로 공급된다. 바람직한 실시예에서, 크로스포인트 스위치는 IBM상에 의해 제조되고 판매되는 PRIZMA란 명칭의 제품이다.
계속하여 도 1a를 참조하면, 출구측(12)상의 출구 방향으로, PRIZMA 셀들이 스위치 인터페이스(12')상에 수신되고 데이터 버퍼(18')에 전해진다. 완전한 프레임을 수신한 이후에, 프레임 포인터가 EPC 큐에 처리를 위해 대기된다. 출구 EPC(16')는 데이터플로우칩으로부터 프레임 콘텍스트를 검색하고 EPC 피코프로세서(미도시)에서 실행되는 피코코드로 프레임 헤더를 처리한다. 처리 결과는 프레임 콘텍스트이고, 이는 데이터 플로우칩(14')에 전달되고 스케쥴러(20')의 적절한 큐에 대기된다. 스케쥴러칩(20')의 스케쥴러는 전송될 프레임을 선택하고, 이는 데이터 버퍼(18')로부터 판독되어 데이퍼플로우칩(14')의 플렉스버스(4')라 라벨링된 라인 인터페이스상으로 전송된다. 간단하게, 본 발명의 바람직한 실시예에 관련된 네트워크 프로세서의 일부만을 이하에서 설명하겠다.
도 1b는 본 발명의 바람직한 실시예에 따른 데이터플로우칩과 메모리 시스템(sys, 21)의 블록도를 도시한다. 데이터플로우칩으로 들어가는 데이터는 데이터_입력(DATA_in)이라 라벨링된 버스상에 제공되고, 칩으로부터 나오는 데이터는 데이터_출력(DATA_out)이라 라벨링된 버스상에 전송된다. 전술한 바와 같이, 데이터_입력 및 데이터_출력은 대용량 데이터를 전송하는 클리어 채널이다. 메모리 시스템(21)은, 슬라이스_0에서 슬라이스_N으로 붙여진 다수의 DDR DRAM으로 구성된다. 도 1B에 도시된 실시예의 경우에, N은 5이다. 이하에 설명되는 바와 같이, 각각의 슬라이스는 다수의 버퍼로 구성되고 데이터플로우칩내의 개개의 DRAM 제어기에 개별 버스 0-5에 의해연결된다. DRAM 제어기는 종래의 DRAM 제어기이며, 그들이 서비스하는 슬라이스에 대한 기록, 판독, 리프레시 및 다른 기능들을 제공한다. DRAM 제어기는 본 기술분야의 공지된 기술이기 때문에 더 이상 설명하지 않겠다.
도 1b를 계속적으로 참조하면, 데이터플로우칩들의 기능 블록들은 수신 제어기(22), 메모리 중재기(24), FCB 중재기(26), BCB 중재기(28), EPC 제어기(30), 버퍼 수락 및 어카운팅(buffer acceptance and accounting, 32), 스캐쥴러 인터페이스 제어기(34) 및 전송 제어기(36)를 포함한다. QDR SRAM(38)은 메모리시스템(210)내에 있는 버퍼들의 리스트를 저장한다. QDR SRAM(40)은 타겟 블레이드(Target Blade:T/B) 및 타겟 포트(TP) 큐들에 프레임에 대한 정보를 저장한다. 메모리 중재기(24)는 데이터플로우칩을 메모리 시스템(21)에 접속시킨다. 이러한 목적을 위해, 메모리 중재기는 전송 제어기(36), 수신 제어기(22) 및 내장된 프로세서 복합체(embedded processor complex: EPC) 제어기(30)들로부터 판독/기록 요청을 수집하고 개별 데이터 저장 메모리 슬라이스를 향하는 액세스를 스케쥴링한다. 이하에서 설명하겠지만, 각각의 메모리 슬라이스는 다수의 버퍼들을 포함하는데, 각각의 버퍼는 64바이트로 이루어진다. 다른 크기의 데이터 대역폭도 설계될 수 있음을 이해할 것이다. 프레임 데이터는 메모리 대역폭의 이용을 촤대화하기 위해 메모리의 상이한 슬라이스들에 퍼져서 기록된다. 메모리로부터 데이터를 판독할 때에, 데이터는 64바이트로 꺼내진다. 또다르게 설명하면, 메모리로 들어가거나 나오는 대역폭은 64 바이트이다. 다른 크기의 데이터 대역폭 또한 설계될 수 있음을 주목한다. 바람직한 실시예에 따른 메모리 중재기는 메모리에 대한 임의의 액세스(판독 또는 기록)는 64바이트의 페이로드를 갖도록 확실하게 한다. 요청자로부터의 요청이 64바이트보다 작다면, 페이로드는 또다른 요청자에 의한 데이터에 의해 증가된다.
도 1b를 계속 참조하면, 수신 제어기(22)는 데이터_입력이라 라벨링된 인입 버스로부터 데이터를 수신하고 수신된 데이터를 메모리 시스템(21)의 개별 버퍼에 기록하기 위해 기록 요청을 송출한다. 마찬가지로, 전송 제어기(36)는 데이터_출력(DATA_OUT) 버스상에 선택된 프레임들을 전송하기 위해 판독 요청을 송출한다.EPC 제어기(30)는 EPC로부터/로의 상이한 메시지들을 종료시키고, (메모리 시스템(21)) 데이터 저장에 대한 판독/기록 요청을 송출한다. 또한, 처리 이전에 대기중인 프레임의 트랙(G-FIFO)을 유지한다. 버퍼 수락 및 어카운팅 블록(32)은 프레임별로 대기/무시 결정의 책임이 있다. 또한, 이것은 TB/TP 기본으로 큐-충진(queue-filling) 레벨을 유지하고 이러한 정보를 스위치 인터페이스상의 스위치 구조에 제공한다. BCB 및 FCB 메모리 중재기는 체인(chain)/체인해제(dechain) FCB 또는 BCB, 리스(lease)/해제(release) FCB 또는 BCB와 같은 링크 리스트 연산을 위한 상이한 액세스들의 스케쥴링을 제공한다.
도 2는 본 발명의 바람직한 실시예에 따른 메모리 중재기의 기능블럭도이다. 메모리 중재기의 기능은 메모리 시스템(21)에 대한 액세스를 제공하는 것이다. 메모리 중재기는 수신 제어기(22), 전송 제어기(36) 및 EPC 제어기(30)로부터의 요청들을 받아들인다. 요청들은 최고 우선순위를 갖는 전송 제어기(36)와, 다음의 우선순위를 갖는 수신 제어기(22)와, 가장 낮은 우선순위를 갖는 EPC 제어기(30)로 우선순위가 결정된다. 물론, 이와 다른 우선 순위 또는 순서가 선택될 수도 있다. 메모리에 대한 액세스를 허락 승인하는데 있어서, 중재기는 각각의 메모리 액세스에 대해 메모리에 의해 허용되는 데이터의 최대 대역폭이 이용될 수 있도록 보장한다. 이에 따라, 메모리 요청이 데이터를 판독하는 것이라면, 요청은 전송 제어기(36) 및/또는 EPC 제어기(30)로부터의 판독 요청일 것이다. 메모리 중재기는 전송 제어기로부터의 요청을 분석한다. 요청이 전체 메모리 대역폭을 필요로 한다면, 중재기는 슬라이스 부분당 명령과 뱅크 부분당 어드레스를 갖는 액세스 벡터를 생성한다. 액세스 벡터는 적절한 메모리 제어기로 전달되고 데이터가 메모리로부터 추출될 것이다.
본 명세서에서 설명하는 바와 같이, 메모리내의 각각의 버퍼는 4개의 쿼드워드, A, B,C 및 D로 분할되는 64바이트로 이루어지고, 각각의 쿼드워드는 각각 16바이트로 이루어진다. 전송 제어기가 임의의 메모리 액세스에서 4개의 쿼드워드보다 적게 필요로 한다면, 사용되지 않는 쿼드워드량은 EPC 제어기에 주어진다. 기록을 위한 요청은 수신 제어기 및 EPC 제어기에 의해 송출된다. 판독 요청과 마찬가지로, 모든 기록 요청은 4개 쿼드워드의 정보가 메모리 제어기에 전달될 것을 필요로 한다. 수신 제어기가 4개의 쿼드워드보다 적게 기록한다면, 비사용된 쿼드워드는 EPC 제어기에 할당된다. 그 결과, 메모리에 대한 모든 액세스는 4개 쿼드워드, 64 바이트의 데이터를 기록하거나 판독한다. 그렇게 함으로써, 최대 메모리 대역폭이 낭비되는 사이클의 여유없이 이용된다.
계속해서, 도 2를 참조하면, 메모리 중재기는 메모리 시스템(21), 전송 제어기(22), EPC 제어기(30) 및 전송 제어기(36)를 상호연결시키는 버스 구조(40)를 포함한다. 수신 제어기(22)는 메모리 중재기를 스위치 또는 라인 인터페이스에 접속시킨다. EPC 제어기는 중재기를 EPC 칩(도 1)에 접속시킨다. 전송 제어기(36)는 메모리 중재기를 데이터_출력(Data_out) 버스(도 1b)에 접속시킨다. 중재기는 도면에 도시된 각각의 요청을 수신하고 메모리 시스템내의 개별 슬라이스에 액세스하기 위해 각각의 제어기에 공급되는 액세스 벡터를 생성하는 메모리 중재 제어기(42)를 포함한다. 메모리 중재 중재기는 11개의 사이클 윈도우내에서 작동한다 (하나의 사이클은 6ns이다). 액세스 윈도우의 시작시점에서, 메모리 중재기는 다음 윈도우에서 스케쥴링될 이하의 입력(요청)들을 수신한다.
전송 제어기 요청- 판독될 버퍼의 BCB 어드레스에 의해 표현된다. RF 플래그는 버퍼가 해제될 수 있는지 여부를 나타내고 쿼드워드 마스크는 각각의 BCBA 어드레스를 보충한다. 이 버퍼내에 어떠한 쿼드워드가 효과적으로 판독될지를 나타내는 쿼드워드 마스크는 메모리 중재기가 비사용된 쿼드워드에 대한 액세스를 EPC의 액세스로 보충하는 것을 허용한다. 본 발명의 바람직한 실시예에서, 0, 1, 2 또는 3개의 요청들은 하나의 메모리 액세스 윈도우 내에서 전송 제어기에 의해 이루어질 수 있다. 각각의 요청들은 전송 제어기(36)를 메모리 중재 제어기(42)로 연결시키는 화살표에 의해 도시된다. 화살표 방향은 요청이 흐르는 방향을 나타낸다.
수신 제어기 요청 - 슬라이스 제외(exclusion) 마스크 및 2개의 쿼드워드 마스크에 의해 표현된다. 2개의 쿼드워드 마스크는 간접적으로 하나의 요청당 얼마나 많은 버퍼들이 배치될 필요가 있는지 (즉, 쿼드워드 마스크중 하나가 '0000'이라면, 이것은 오직 하나의 버퍼만이 할당될 것임을 의미함)와, 어떠한 메모리 뱅크(쿼드워드)가 상이한 버퍼들에서 이용되어야 하는지를 나타낸다. 전술한 바와 같이, 수신 제어기(22)는 메모리를 액세스하는데 제2의 높은 우선순위를 갖는다. 수신 제어기들에 허용되는 요청들은 수신 제어기로부터 메모리 중재 제어기(42)로 향하는 화살표로서 도시된다.
EPC 제어기 요청 - 슬라이스당, 동작당, 그리고 쿼드워드당 큐에 의해 표현된다. 메모리 중재기는 개별 쿼드워드 요청들의 웨이트(weight)에 근거하여 모든 나머지 슬라이스들을 할당한다. 이러한 웨이트는 6-비트 값에 의해 표현되는 쿼드워드 요청의 나이에 비례한다. 더욱이, 메모리 중재기는 EPC 요청 대기열 시스템으로부터 대응하는 쿼드워드 액세스 요청을 판독함으로써 전송기 및 수신기의 액세스를 보충할 수 있다. 본 발명의 바람직한 실시예에서, 하나의 메모리 액세스 윈도우내에서 EPC가 허락받을 수 있는 쿼드워드 액세스의 최대 개수는 8개의 판독 및 8개의 기록 쿼드워드로 제한된다. 단방향 화살표는 EPC 제어기 및 메모리 중재 제어기(42)로부터의 정보 흐름을 나타낸다.
도 2를 계속 참조하면, 메모리 중재 제어기(42)는 각각의 요청자(수신 제어기(22), 전송 제어기(36) 및 EPC 제어기(30))로부터 요청을 수신하고 선택된 슬라이스의 버퍼로부터 또는 버퍼에 정보를 판독/기록하기 위해 적절한 슬라이스 제어기(Ctrl)에 전달되는 액세스 벡터를 생성한다. 수신 제어기 또는 전송 제어기에 의해 이용되지 않는 여분의 대역폭은 EPC 제어기에 할당된다. 그 결과, 메모리에 대한 모든 액세스는 전체 메모리 대역폭을 이용한다. 요청자들로부터의 입력에 근거하여, 메모리 중재 제어기(42)는 다음 윈도우를 위한 버퍼 메모리 액세스 벡터를 생성하기 위해 다음의 슬라이스 선택 알고리즘을 수행한다.
- (각각의 DRAM 제어기에 의해 지시되는) 리프레시 사이클로 예정된 슬라이스들은 제외한다.
- 전송 제어기의 모든 R(판독) 요청에 대해 슬라이스를 할당한다.
- 대응 EPC 큐로부터 R-액세스를 보충한다(슬라이스:쿼드워드),
- 전역적으로(globally) W(기록) 제외된 슬라이스들(수신기로부터 모든 슬라이스 제외 규칙에 의해 제외된 슬라이스들)에 대하여 슬라이스를 EPC에 할당한다.
- 최근에 할당된 슬라이스(이전 윈도우에서 수신 제어기에 할당된 슬라이스)로부터 시작하는 비-제외 슬라이스간에 라운드 로빈(RR) 방식으로 W 요청에 대해 슬라이스를 할당한다.
- W-액세스를 대응 EPC 큐로로부터의 EPC 액세스에 의해 보충한다(슬라이스:쿼드워드).
- 웨이트에 의해 표현된 우선순위에 따라 EPC 요청에 슬라이스를 할당한다.
슬라이스 선택 알고리즘은 로직 하드웨어로 구현되거나 피코프로세서에서 실행되는 마이크로코드로서 코딩될 수 있다. 전술한 선택 알고리즘을 구현하기 위해 하드웨어 로직 또는 피코코드를 선택하는 것은 설계의 선택이며, 전술한 소정의 알고리즘이 주어지면 본 기술분야의 당업자들은 구현할 수 있다.
잠시, 도 6을 참조하면, 메모리 중재기의 대안 실시예가 도시된다. 대안적인 메모리 중재기는 요청 레지스터 A, B, 및 C와 우선순위 테이블(44)에 접속되는 메모리 중재 제어기(CTRL, 42)를 포함한다. 요청 레지스터들은 각각의 요청자로부터 요청들을 저장한다. 요청 레지스터 A는 전송(XMIT) 제어기로부터의 요청을 저장하고, 요청 레지스터 B는 수신(RECV) 제어기로부터의 요청을 저장하고, 레지스터 C는 EPC 제어기로부터의 요청을 저장한다. 우선순위 테이블(44)은 각각의 요청자들에 대한 우선순위 표시를 저장한다. 따라서, 가장 높은 우선순위를 갖는 전송 제어기는 1이고, 다음의 우선순위를 갖는 수신 제어기는 2이며, 가장 낮은 우선순위를 갖는 EPC 제어기는 3이다. 동작에 있어서, 전술한 선택 알고리즘에 따라 설계된 메모리 중재 제어기는 우선순위 레벨과 함께 레지스터내의 정보를 이용하여 메모리 벡터를 생성한다.
도 3, 4 및 5는 바람직한 실시예에 따라 본 발명을 더욱 자세히 설명한다. 도면에서, 데이터가 메모리로부터 추출되거나 판독될 때 전체 메모리 대역폭을 이용하는 특징이 설명된다. 메모리내의 데이터는 이전 기록 사이클에서 기록되었다.
도 3은 전체 대역폭이 전송 제어기에 의해 이용되는 판독 요청을 설명하는 기능블럭도이다. 전술한 바와 같이, 전송 제어기가 메모리로부터 데이터를 판독하는데 가장 높은 우선순위를 갖는다. 도면에는, 메모리(51), 타이밍표시(48), 메모리 중재 제어기(42) 및 준비 영역(46)이 포함되어 있다. 메모리(51)는 슬라이스라 지칭되는 집합들로 구성되는 다수의 버퍼들을 포함한다. 도면에서, 슬라이스 0,1,2,3,4가 도시되어 있다. 그러나, 더 많거나 더 적은수의 슬라이스들이 사용될 수 있기 때문에 이를 한정적으로 해석하여서는 아니될 것이다. 또한, 각각의 슬라이스에 3개의 버퍼들(1,2 및 3이라 라벨링됨)이 도시되어 있다. 그러나, 이는 단지 예일 뿐이며, 한정으로 해석되어서는 안될 것이다. 슬라이스내에서 이용되는 버퍼들의 개수는 설계자의 선택에 따라 달라진다. 그 결과, 슬라이스내의 버퍼 개수는 N이고, N은 설계자의 선택에 따라 임의의 숫자가 될 수 있다. 전술한 바와 같이, 각각의 버퍼는 쿼드워드 A, B, C 및 D라 지칭되는 섹터들로 할당되는 64개 바이트이다. 각각의 쿼드워드는 16바이트이다. 각각의 슬라이스는 N개의 버퍼로 분할되는 DDR DRAM로 제조된다. 버퍼 1에 숫자들을 도시하는 것은 슬라이스 1, 버퍼 1이 쿼드워드 3, 4, 1 및 2를 포함하는 데이터로 채워짐을 의미한다. 마찬가지로, 슬라이스 3, 버퍼 1은 쿼드워드 8, 5, 6 및 7을 포함하는 데이터로 채워짐을 의미한다. 각각의 쿼드워드는 더블 워드(16 바이트)를 저장한다. 다른 그래뉼리티(granularity)도 선택될 수 있다. 이러한 데이터는 도 1의 수신 제어기에 수신되었으며, 그보다 앞서서 메모리(51)에 로드되거나 기록되었다.
계속해서, 도 3을 참조하면, 도면부호(48)는 저장장치로부터 제거되고 재배치되는(순환되는) 데이터 전송의 타이밍을 그림으로 표현한 것이다. 그림 표현은 쿼드워드 A,B, C 및 D에 대한 공간을 갖는다. 메모리 액세스는 11개 사이클이며 대략적으로 66 나노초이다. 각각의 메모리 사이클에서, 상이한 메모리 슬라이스내의 2개 버퍼들이 동시에 액세스될 수 있다. 메모리 중재기(42)에 대해서는 이미 설명하였으므로 여기서 상세하게 반복설명하지 않겠다. 다만, 메모리 중재기(42)는 전송 제어기 및 EPC로부터 요청을 받아서 요청된 정보를 메모리(51)로부터 추출하기 위해 그들을 재구성한다는 것만으로 충분하다.
도 3을 계속 참조하면, 준비 영역(46)은 데이터를 관리하고, 전송 제어기(도 1b의 36)로부의 요청시에 저장장치로부터 제거하기 위해 필요한 리소스를 포함한다. 준비 영역(46)은 포트제어블럭(port control block:PCB), TP 0, TP 1, TP 2, TP 3, TP 4, ....,TP N이라 라벨링된 타겟 포트 버퍼 집합을 포함한다. TP 버퍼의 개수는 설계자의 선택이다. 따라서, 5개를 도시한 것이 한정사항으로 해석되어서는 안된다. 닫힌 화살표 라벨 RR은 버퍼들이 시계방향으로 채워지거나 제공되는 라운드 로빈 절차를 나타낸다. PCB는 준비영역내의 버퍼 리스트를 포함한다. 예에서, 64개의 PCB가 있다. 또한, PCB는 메모리로부터 추출될 다음 슬라이스를 포함한다. 도면을 참조하면, 슬라이스 1 및 3이 제거되어 타겟포트 버퍼 0으로 로드될 것이다. 버퍼내의 정보는 후속하여 포트 0을 통해 데이터_출력 라인 1(도 1b)로 전송될 것이다. 각각의 타겟 포트 버퍼는 128바이트(8개의 쿼드워드)를 포함한다.
계속해서 도 3을 참조하면, 동작에 있어서, 전송 제어기는 메모리의 슬라이스 1의 버퍼 1 및 슬라이스 3의 버퍼 1의 정보가 판독되어 타겟 포트 버퍼 0으로 로드될 것을 요구하는 요청을 메모리 중재 제어기에 제기한다. EPC 판독 요청 또한 메모리 중재 제어기(42)에 제공된다. 전송 제어기에 의한 요청은 2개의 전체 버퍼 전송을 필요로 하기 때문에, 이 메모리 사이클 동안에는, 판독 동작을 위한 EPC의 어느 요청도 수용할 여지가 없다. 요청이 슬라이스 1 및 3에 대한 것인 경우에 정보는 동시에 판독되어 스테이징 영역(48)에서 재배열되어 포트 0을 통한 후속 전송을 위해 TP 버퍼 0으로 전송된다. 스테이징 영역(48)으로부터 정보는 올바른 순차적 순서로 TP 버퍼 0으로 판독된다. 요약하면, 도 3은 전송 제어기가 메모리를 액세스하고 전체 대역폭을 이용하는 경우를 도시한다. 이러한 경우에, EPC는 상기 액세스 윈도우중에 메모리에 액세스하지 못한다. 전송 제어기는 2개의 전체 버퍼(슬라이스 1로부터 하나와 슬라이스 3으로부터 하나)를 수신하고 이 데이터를 타겟 포트 버퍼 0(TP 0)으로 대기시킨다.
기록 동작의 경우에, 도 3의 설명은 판독에 반대되는 방향의 데이터 흐름으로 동일하게 적용될 수 있다. 따라서, 기록 동작에 대한 부가적인 설명은 다시 하지 않겠다.
도 4는 동일한 슬라이스의 상이한 버퍼들이 액세스되고 메모리 액세스의 최적화를 위해 상이한 FIFO 버퍼들에 분산되는 예를 도시한다. 메모리(51)에 저장된 데이터 패턴을 제외하고, 도 4의 구조는 전술한 도 3과 실질적으로 유사하다. 따라서, 도 4의 부가적인 특징들만을 설명하겠다. 메모리(51)에 관련하여, 정보는 슬라이스 1의 버퍼 1, 쿼드워드 C 및 D, 슬라이스 1의 버퍼 2, 쿼드워드 A, B, C 및 D, 슬라이스 2의 버퍼 1, 쿼드워드 A 및 D, 슬라이스 2의 버퍼 3, 쿼드워드 B, C 및 D에 로드된다. 쿼드워드들은 각각의 번호에 의해 식별된다. PCB의 정보는 슬라이스 1, 버퍼 1의 데이터가 TP 버퍼 0으로 로드될 것임을 나타낸다. 마찬가지로, 슬라이스 2, 버퍼 1의 데이터는 TP1로 로드될 것이다. 메모리로부터 적절한 TP 버퍼들로 데이터를 이동하는 것에 관련하여 완전하고 정확한 명령을 주기 위하여 PCB 내에 요구되는 정보가 필요함을 주목해햐 할 것이다. 설명을 덜 복잡하게 하기 위해, 부가적인 정보는 생략하겠다. 그러나, 본 기술분야의 당업자가 부가적인 정보를 제공할수 있도록 하는 것은 이 정도의 설명만으로도 충분하다.
전송 요청이 (임의의 TP에 대해) 데이터의 전체 메모리 대역폭보다 적기 때문에, 전체 메모리 대역폭 쿼드워드는 각각의 메모리 사이클에서 판독되고 TP에 재분배된다.
도 4를 계속 참조하면, 버퍼 1의 경우에 슬라이스 C 및 D 만이 TP 버퍼 0의 전송 제어기에 의해 요청되고, A 및 B는 사용되지 않으며 TP 2를 위해 버퍼 2의 슬라이스 4 및 1만이 채워진다. 마찬가지로, 슬라이스 2, 버퍼 1의 경우에, TP 버퍼 1을 위해 전송 제어기에 의해 단지 쿼드워드 A 및 D만이 이용된다. 따라서, 이용되지 않은 쿼드워드 B는 슬라이스 2, 버퍼 2의 "2"라 라벨링된 데이터로 채워지고, 쿼드워드 C는 버퍼 3으로부터 "2"라 라벨링된 데이터로 채워진다. 데이터는 스테이징 영역 및 각각의 타겟 포트 FIFO 버퍼내에 도시된 번호로 배열된다. 메모리(51)로부터 각각의 TP 버퍼로의 데이터 이동은 적절한 단방향 화살표에 의해 표시된다. 예를 들면, 화살표(52)는 쿼드워드 1 및 2, 슬라이스 1이 순차적으로 TP 0에 배열됨을 나타내고, 화살표(54)는 쿼드워드 1 및 2, 슬라이스 2가 순차적으로 TP 1에 배열됨을 나타내고, 화살표(56)는 쿼드워드 1 및 4, 슬라이스 2가 순차적으로 TP 2에 배열됨을 나타내고, 화살표(58)는 쿼드워드 2, 버퍼 2, 슬라이스 2가 TP 3에 배열됨을 나타내고, 화살표(60)는 쿼드워드 2, 버퍼 2가 TP 4에 배열됨을 나타낸다.
도 4에서, 데이터가 상이한 TP FIFO (타겟 포트 선입선출 버퍼)에 분산되더라도 전체 메모리 대역폭은 각각의 메모리 사이클에서 사용됨을 주목하여야 할 것이다.
도 5를 참조하면, 전송 제어기로부터의 메모리 요청이 전체 메모리 대역폭보다 작고 슬라이스 2의 비사용된 쿼드워드가 RR(라운드 로빈) 방식으로 EPC에 화살표(62)를 통해 전달되는 쿼드워드 "2", 버퍼 3으로 채워지는 상황을 설명한다. 도 5의 나머지 부분은 도 4와 실질적으로 유사하여 이전 설명이 적용될 수 있으며 참조된다.
도 7은 전송 제어기, 수신 제어기 또는 EPC에 메모리 액세스를 승인하기 위해 이용되는 알고리즘에 대한 흐름도를 도시한다. 알고리즘은 스텝 A 내지 스텝 G로 라벨링된 프로세스 스텝들을 포함한다. 스텝 A는 모든 슬라이스들에 대한 글로벌 스텝이다. (S=0에서 N, N은 시스템 내의 슬라이스 전체 개수이고, 예를 들면, 본 실시예에서 S는 0에서 5까지 라벨링된다.) 요약하면, 스텝 A는 정보 기록 또는 판독을 위한 슬라이스의 적격성을 판단한다. 슬라이스가 리프레시될 필요없다면 그것은 할당하기에 적합하다. 스텝 B 및 C는 전송 제어기에 의해 수행되는 판독 동작에 관한 것인 반면에, 단계 D 내지 G는 수신 제어기에 의해 수행되는 기록 동작에 관한 것이다. EPC는 기록 또는 판독을 수행할 수 있으며 판독 루틴 또는 기록 루틴중 하나와 연관될 수 있다.
도 7을 계속적으로 참조하면, 스텝 B는 전송 제어기가 메모리로부터 요청된 번호의 슬라이스 R을 판독할 수 있도록 액세스를 승인한다. R은 1부터 최대 개수일 수 있다. 본 출원에 도시된 실시예에서 R은 3으로 설정된다. 물론, 설계자의 선택에 따라 다른 값의 R이 이용될 수도 있다. 단계 C는 판독 요청에서 비사용된 쿼드워드를 EPC에 허여함으로써 판독 동작을 보충한다. 다시 설명하면, 판독 요청이 모든 쿼드워드를 사용하는 것이 아닌 경우에 비사용된 쿼드워드가 EPC에 할당된다. EPC는 메모리로 가기 위한 여러개의 판독요청들을 가지고 있을 수 있다. 따라서, 알고리즘은 라운드 로빈 방식으로 EPC에 판독 요청을 할당한다.
도 7을 계속적으로 참조하면, 기록 동작은 수신 제어기 또는 EPC에 의해 수행되는 단계 D 내지 G에 의해 제어된다. 단계 D에서, 수신 제어기는 동일 프레임의 인접 부분들의 버퍼들은 동일한 슬라이스에서 기록될 수없다는 원칙에 기초한다. 이는 인접 정보는 메모리의 상이한 슬라이스들에 퍼지게 됨을 의미한다. 따라서, 메모리 내의 임의의 슬라이스는 기록하기에 부적합하다. 단계 D에서, 수신 제어기는 기록될 수 없는 슬라이스들을 식별해낸다. 단계 D에서, 슬라이스들은 1부터 최대 값까지 될 수 있는 X에 의해 식별된다. 단계 E에서, 알고리즘은 단계 D에서 식별되고 단계 B에서 배치되지 않은 X 슬라이스내에 위치하는 기록 동작에 대해 요청된 적합한 슬라이스를 EPC에 허여한다. 단계 E에서, X는 단계 D에서 제외된 슬라이스를 나타내며, R은 단계 B에서 판독하기 위해 이용된 슬라이스들을 나타낸다.
단계 F에서, 알고리즘은 라운드 로빈 방식으로, 수신 제어기에 의해 요청된 슬라이스를 허여한다. 수신 제어기가 1보다 큰 번호 N의 슬라이스를 요청할 수 있기 때문에 라운드 로빈 할당이 필요하다. 수신 제어기는 단계 D에서 제외된 슬라이스를 요청하지 않을 것임을 이해하기 바란다. 또한, 수신 제어기에 허여된 슬라이스들은 판독(R)을 위해 허여되지 않은 것들이다. 단계 G에서, 기록을 위해 수신 제어기에 의해 사용되지 않은 쿼드워드들은 EPC에 허여된다. EPC는 다수의 기록 요청을 할 수 있기 때문에 라운드 로빈 방식으로 허여가 이루어진다.

Claims (15)

  1. 메모리 이용을 최적화하기 위한 방법에 있어서,
    메모리 중재기 내에서 다수의 메모리 액세스 요청 - 상기 메모리 액세스 요청중 적어도 하나는 우선순위 표시자와 연관되어 있음-을 수신하는 단계와,
    필요한 메모리 대역폭 크기를 판단하기 위해 특정 우선순위 표시자를 갖는 상기 메모리 액세스 요청을 상기 메모리 중재기에 의해 분석하는 단계와,
    상기 특정 우선순위 표시자를 갖는 메모리 요청이 전체 메모리 대역폭을 필요로 하지 않는 경우에 적어도 하나의 다른 요청과 메모리 액세스를 공유하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 특정 우선순위 표시자를 갖는 메모리 요청이 전체 메모리 대역폭을 필요로 하는 경우에는 상기 특정 우선순위 표시자를 갖는 메모리 요청이 전체 메모리 대역폭을 이용하도록 허용하는 단계를 더 포함하는 방법.
  3. 제1항 또는 제2항에 있어서, 상기 특정 우선순위 표시자는 가장 높은 것인 방법.
  4. 제1 항 내지 제3항중 어느 한 항에 있어서, 적어도 하나의 슬라이스내에 배열되는 다수의 버퍼 - 상기 적어도 하나의 슬라이스 내의 각 버퍼는 다수의 쿼드워드(Quadword)를 구비함-를 갖는 메모리를 제공하는 단계를 포함하며, 상기 메모리 요청은 다수의 요청자로부터 상기 적어도 하나의 슬라이스에 대해 액세스하고자 하는 것인 방법.
  5. 전술한 항들중 어느 한 항에 있어서, 다수의 요청자들은 메모리 액세스를 요청하고, 상기 다수의 요청자들은 네트워크 프로세서 내에서 연동되는 수신 제어기, 전송 제어기 및 내장 프로세서 복합(Embedded Processor Complex: EPC) 제어기를 포함하는 방법.
  6. 제5항에 있어서, 상기 전송 제어기는 가장 높은 우선순위를 갖고 상기 수신 제어기는 다음으로 높은 우선순위를 갖는 방법.
  7. 제6항에 있어서, 상기 EPC 제어기는 상기 전송 제어기 또는 상기 수신 제어기와 메모리 대역폭을 공유하는 방법.
  8. 제5항 내지 제7항중 어느 한 항에 있어서, 상기 요청은 판독 및 기록을 포함하고, 적어도 하나의 판독 요청은 상기 전송 제어기에 의해 생성되고 적어도 하나의 기록 요청은 상기 수신 제어기에 의해 생성되는 방법.
  9. 제8항에 있어서, 판독 및 기록 요청은 상기 EPC 제어기에 의해 제공되는 방법.
  10. 네트워크 프로세서에 있어서,
    정보를 저장하기 위한 메모리 시스템과,
    상기 메모리 시스템에 연동되어 액세스를 허여하기 위한 메모리 중재기를 포함하고,
    상기 메모리 중재기는 메모리 액세스 요청이 수신되는 하나 이상의 요청 레지스터와, 상기 요청자들에 대한 우선순위 표시자를 저장하기 위한 적어도 하나의 우선순위 레지스터와, 상기 요청 레지스터 및 상기 우선순위 레지스터에 연동되는 제어기를 포함하고,
    상기 제어기는 요청들 및 요청 우선순위를 관찰하여 가장 높은 우선순위의 요청이 전체 대역폭보다 적은 양을 필요로 하는 경우에 상기 가장 높은 우선순위의 요청이 적어도 하나의 다른 메모리 요청과 메모리 대역폭을 공유하도록 해주는 메모리 액세스 벡터를 생성하는 회로를 포함하는 네트워크 프로세서.
  11. 제10항에 있어서, 가장 높은 우선순위의 요청이 전체 메모리 대역폭을 필요로 하는 경우에 상기 가장 높은 우선순위 요청이 전체 메모리 대역폭을 이용하도록 해주는 네트워크 프로세서.
  12. 제10항 또는 제11항에 있어서, 상기 메모리 시스템은 적어도 하나의 슬라이스내에 배열되는 다수의 버퍼들을 포함하고, 각각의 버퍼는 쿼드워드들로 분할되는 네트워크 프로세서.
  13. 제12항에 있어서, 상기 메모리 중재기에 연동되는 수신 제어기와, 상기 메모리 중재기에 연동되는 전송 제어기와, 상기 메모리 중재기에 연동되는 EPC 제어기를 더 포함하는 네트워크 프로세서.
  14. 제13항에 있어서, 상기 제어기는 버퍼 메모리 액세스 벡터를 생성하기 위해 이하의 스텝들,
    a) 리프레시(refresh) 사이클로 스케쥴링된 슬라이스를 제외함,
    b) 전송 제어기의 모든 판독 요청에 대해 슬라이스를 할당함,
    c) 대응 EPC 큐[슬라이스;쿼드워드]로부터 판독 액세스를 보충함,
    d) 전역적으로(globally) 기록이 제외된 슬라이스들을 EPC에 할당함,
    e) 최근에 할당된 슬라이스 (이전 윈도우에서 수신 제어기에 할당된 슬라이스)로부터 시작하는 제외되지 않은 슬라이스들중에서 라운드로빈(Round Robin:RR) 방식으로 기록 요청들에 슬라이스를 할당함,
    f) 대응 EPC 큐[슬라이스;쿼드워드]로부터 기록 액세스를 보충함,
    g) 웨이트(weight)에 의해 표현된 우선순위에 따라 EPC 요청들에 슬라이스를 할당함
    을 선택적으로 수행하는 네트워크 프로세서.
  15. 제1항 내지 제9항중 어느 한 항에 따른 방법을 수행하기 위해 개작된 프로그램 코드 수단을 포함하는 메모리 이용의 최적화용 컴퓨터 프로그램.
KR1020037011580A 2001-04-03 2002-03-28 네트워크 프로세서에서 메모리 대역폭을 효율적으로공유하기 위한 장치 및 방법 KR100590387B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US28106301P 2001-04-03 2001-04-03
US60/281,063 2001-04-03
US10/068,392 2002-02-05
US10/068,392 US6757795B2 (en) 2001-04-03 2002-02-05 Apparatus and method for efficiently sharing memory bandwidth in a network processor
PCT/GB2002/001484 WO2002082286A2 (en) 2001-04-03 2002-03-28 Apparatus and method for efficiently sharing memory bandwidth in a network processor

Publications (2)

Publication Number Publication Date
KR20040028725A true KR20040028725A (ko) 2004-04-03
KR100590387B1 KR100590387B1 (ko) 2006-06-15

Family

ID=26748923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037011580A KR100590387B1 (ko) 2001-04-03 2002-03-28 네트워크 프로세서에서 메모리 대역폭을 효율적으로공유하기 위한 장치 및 방법

Country Status (10)

Country Link
US (1) US6757795B2 (ko)
EP (1) EP1374072B1 (ko)
JP (1) JP4336108B2 (ko)
KR (1) KR100590387B1 (ko)
CN (1) CN1251102C (ko)
AT (1) ATE300763T1 (ko)
AU (1) AU2002242874A1 (ko)
DE (1) DE60205231T2 (ko)
TW (1) TW563028B (ko)
WO (1) WO2002082286A2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353288B1 (en) * 2001-10-17 2008-04-01 Ciena Corporation SONET/SDH payload re-mapping and cross-connect
JP3970581B2 (ja) * 2001-11-09 2007-09-05 富士通株式会社 伝送装置および伝送システム
US7346067B2 (en) * 2001-11-16 2008-03-18 Force 10 Networks, Inc. High efficiency data buffering in a computer network device
JP3864250B2 (ja) * 2002-10-31 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 排他制御装置、排他制御方法、プログラム、及び記録媒体
US6954387B2 (en) * 2003-07-15 2005-10-11 International Business Machines Corporation Dynamic random access memory with smart refresh scheduler
US20050160188A1 (en) * 2004-01-20 2005-07-21 Zohar Bogin Method and apparatus to manage memory access requests
US7137091B1 (en) * 2004-02-13 2006-11-14 Sun Microsystems, Inc. Hierarchical repeater insertion
US7602777B2 (en) 2004-12-17 2009-10-13 Michael Ho Cascaded connection matrices in a distributed cross-connection system
US8254411B2 (en) * 2005-02-10 2012-08-28 International Business Machines Corporation Data processing system, method and interconnect fabric having a flow governor
CN100432957C (zh) * 2005-02-12 2008-11-12 美国博通公司 一种管理存储器的方法
CN100438693C (zh) * 2005-03-21 2008-11-26 华为技术有限公司 一种分组域的业务接入方法
US7987306B2 (en) 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
US7739424B2 (en) * 2005-04-18 2010-06-15 Integrated Device Technology, Inc. Packet processing switch and methods of operation thereof
US7474662B2 (en) * 2005-04-29 2009-01-06 International Business Machines Corporation Systems and methods for rate-limited weighted best effort scheduling
US20070011287A1 (en) * 2005-05-16 2007-01-11 Charbel Khawand Systems and methods for seamless handover in a streaming data application
EP2016496B1 (en) * 2006-04-21 2014-03-12 Oracle America, Inc. Hiding system latencies in a throughput networking system
US7817652B1 (en) * 2006-05-12 2010-10-19 Integrated Device Technology, Inc. System and method of constructing data packets in a packet switch
US7747904B1 (en) 2006-05-12 2010-06-29 Integrated Device Technology, Inc. Error management system and method for a packet switch
US7706387B1 (en) 2006-05-31 2010-04-27 Integrated Device Technology, Inc. System and method for round robin arbitration
US7693040B1 (en) 2007-05-01 2010-04-06 Integrated Device Technology, Inc. Processing switch for orthogonal frequency division multiplexing
US8433859B2 (en) * 2008-11-25 2013-04-30 Mediatek Inc. Apparatus and method for buffer management for a memory operating
US20110320699A1 (en) * 2010-06-24 2011-12-29 International Business Machines Corporation System Refresh in Cache Memory
US8490107B2 (en) 2011-08-08 2013-07-16 Arm Limited Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels
KR102364382B1 (ko) * 2017-12-20 2022-02-16 한국전기연구원 듀얼 포트 메모리 및 그 제어 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4325116A (en) 1979-08-21 1982-04-13 International Business Machines Corporation Parallel storage access by multiprocessors
US4633434A (en) 1984-04-02 1986-12-30 Sperry Corporation High performance storage unit
US4797815A (en) 1985-11-22 1989-01-10 Paradyne Corporation Interleaved synchronous bus access protocol for a shared memory multi-processor system
US4761736A (en) 1986-01-02 1988-08-02 Commodore Business Machines, Inc. Memory management unit for addressing an expanded memory in groups of non-contiguous blocks
US5034914A (en) 1986-05-15 1991-07-23 Aquidneck Systems International, Inc. Optical disk data storage method and apparatus with buffered interface
EP0407697A1 (en) 1989-07-10 1991-01-16 Seiko Epson Corporation Memory apparatus
US5603061A (en) 1991-07-23 1997-02-11 Ncr Corporation Method for prioritizing memory access requests using a selected priority code
US5559953A (en) 1994-07-01 1996-09-24 Digital Equipment Corporation Method for increasing the performance of lines drawn into a framebuffer memory
US5581310A (en) 1995-01-26 1996-12-03 Hitachi America, Ltd. Architecture for a high definition video frame memory and an accompanying data organization for use therewith and efficient access therefrom
US5781201A (en) 1996-05-01 1998-07-14 Digital Equipment Corporation Method for providing improved graphics performance through atypical pixel storage in video memory
US5920898A (en) 1996-08-16 1999-07-06 Unisys Corporation Memory control unit providing optimal timing of memory control sequences between different memory segments by optimally selecting among a plurality of memory requests
US5907863A (en) 1996-08-16 1999-05-25 Unisys Corporation Memory control unit using preloaded values to generate optimal timing of memory control sequences between different memory segments
US6031842A (en) 1996-09-11 2000-02-29 Mcdata Corporation Low latency shared memory switch architecture
US5966143A (en) 1997-10-14 1999-10-12 Motorola, Inc. Data allocation into multiple memories for concurrent access
US5870325A (en) 1998-04-14 1999-02-09 Silicon Graphics, Inc. Memory system with multiple addressing and control busses
DE69935852T2 (de) 1999-06-09 2007-12-20 Texas Instruments Inc., Dallas Host-Zugriff zu gemeinschaftlichem Speicher mit Hochprioritätsbetriebsart

Also Published As

Publication number Publication date
EP1374072A2 (en) 2004-01-02
TW563028B (en) 2003-11-21
AU2002242874A1 (en) 2002-10-21
CN1498374A (zh) 2004-05-19
KR100590387B1 (ko) 2006-06-15
ATE300763T1 (de) 2005-08-15
WO2002082286A3 (en) 2003-10-30
DE60205231D1 (de) 2005-09-01
JP4336108B2 (ja) 2009-09-30
EP1374072B1 (en) 2005-07-27
JP2004523853A (ja) 2004-08-05
US6757795B2 (en) 2004-06-29
DE60205231T2 (de) 2006-05-24
US20020141256A1 (en) 2002-10-03
WO2002082286A2 (en) 2002-10-17
CN1251102C (zh) 2006-04-12

Similar Documents

Publication Publication Date Title
KR100590387B1 (ko) 네트워크 프로세서에서 메모리 대역폭을 효율적으로공유하기 위한 장치 및 방법
US8990498B2 (en) Access scheduler
US7143219B1 (en) Multilevel fair priority round robin arbiter
US8155134B2 (en) System-on-chip communication manager
US7483429B2 (en) Method and system for flexible network processor scheduler and data flow
US7506081B2 (en) System and method of maintaining high bandwidth requirement of a data pipe from low bandwidth memories
US7346722B2 (en) Apparatus for use in a computer systems
US9104531B1 (en) Multi-core device with multi-bank memory
US6430640B1 (en) Self-arbitrating, self-granting resource access
US7245617B2 (en) Queuing packets written to memory for switching
US7248596B2 (en) Memory interleaving in a high-speed switching environment
US20020078267A1 (en) Scheduler for a data memory access having multiple channels
US10002099B2 (en) Arbitrated access to resources among multiple devices
US8819325B2 (en) Interface device and system including the same
US10146434B1 (en) FIFO systems and methods for providing access to a memory shared by multiple devices
US20040190524A1 (en) Scheduler device for a system having asymmetrically-shared resources
JP5691419B2 (ja) 要求転送装置及び要求転送方法
CN116686269A (zh) 一种路由器及片上系统
GB2341766A (en) Bus architecture
GB2341771A (en) Address decoding
GB2341765A (en) Bus idle usage
GB2341772A (en) Primary and secondary bus architecture
GB2341769A (en) Data packet reordering
GB2341768A (en) Bus arbitration
GB2341767A (en) Bus arbitration

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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: 20090601

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee