KR20150077288A - 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛 - Google Patents

멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛 Download PDF

Info

Publication number
KR20150077288A
KR20150077288A KR1020140160344A KR20140160344A KR20150077288A KR 20150077288 A KR20150077288 A KR 20150077288A KR 1020140160344 A KR1020140160344 A KR 1020140160344A KR 20140160344 A KR20140160344 A KR 20140160344A KR 20150077288 A KR20150077288 A KR 20150077288A
Authority
KR
South Korea
Prior art keywords
packet
request
exception
lookup
received
Prior art date
Application number
KR1020140160344A
Other languages
English (en)
Other versions
KR102126592B1 (ko
Inventor
윌슨 파크허스트 스나이더 2세
스티븐 크레그 바너
리차드 유진 케슬러
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 KR20150077288A publication Critical patent/KR20150077288A/ko
Application granted granted Critical
Publication of KR102126592B1 publication Critical patent/KR102126592B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

수신된 룩업 트랜잭션 요청을 제 1 버퍼 내에 저장하는 단계; 상기 룩업 트랜잭션 요청을 요청 패킷으로 재구축하는 단계; 상기 요청 패킷을 송신하는 단계; 패킷을 수신하는 단계; 상기 수신된 패킷이 응답 패킷 또는 예외 패킷을 포함하는지 여부를 결정하는 단계; 및 상기 결정에 따라 상기 수신된 패킷을 프로세싱하는 단계를 포함하는, 룩-어사이드 프로세서 유닛에서 정보 룩업 요청을 프로세싱하는 방법 및 이를 구현하는 시스템이 개시된다. 적어도 하나의 수신된 룩업 트랜잭션 요청을 제 1 버퍼 내에 저장하는 단계; 패킷을 수신하는 단계; 상기 수신된 패킷이 예외 패킷을 포함하는지를 결정하는 단계; 및 상기 제 1 버퍼의 식별자에 따라 상기 적어도 하나의 저장된 룩업 트랜잭션 요청 중 하나와 상기 예외 패킷을 연관시키는 단계를 포함하는, 룩-어사이드 프로세서 유닛에서 예외 패킷을 프로세싱하는 방법 및 이를 구현하는 시스템이 개시된다.

Description

멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛{A LOOK-ASIDE PROCESSOR UNIT WITH INTERNAL AND EXTERNAL ACCESS FOR MULTICORE PROCESSORS}
본 개시는 컴퓨터 네트워크들 내에서의 통신에 관한 것이다. 보다 특별히, 본 발명은 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛 (look-aside processor unit) 으로 지향된다.
네트워크 프로세서는 종종 네트워크를 통해 수신되거나 전달된 패킷 데이터를 프로세싱하기 위해 특별히 설계된 피처 세트를 갖는, 집적 회로의 형태로 구현된, 전문화된 프로세서이다. 이러한 프로세싱은 종종 정보 룩업 테이블 (lookup table) 내에서 보다 단순한 인덱싱 동작으로 고가의 런타임 계산을 대체하는 정보 룩업을 수반한다. 예로서, 라우팅 관련 프로세싱, 즉, 패킷 포워딩은 TCP/IP (Transmission Control Protocol/Internet Protocol) 접속을 형성하는 상이한 값들의 투플들 (tuple) 을 포함하는, 라우팅 정보의 룩업을 요구하고, 예를 들어, 5-투플은 소스 IP 어드레스, 목적지 IP 어드레스, 소스 포트 번호, 목적지 포트 번호, 및 사용 중인 프로토콜을 포함한다.
통상적으로 룩업은 ILA (Interlaken Lookaside) 를 통해 네트워크 프로세서에 접속될 수도 있는 TCAM (Ternary Content Addressable Memory) 에 의해 수행된다. 그러나, 메모리 기반 룩업은 룩업 요청들의 레이턴시를 겪는다. 또한, 제출된 룩업들을 추적하는, 룩업 리소스들은 프로세서 코어에 미리 할당되거나 전용이다. 따라서, 다수의 코어들, 전용 리소스들을 포함하는 네트워크 프로세서는 상이한 프로세서 코어들에 의한 전용 리소스들의 잠재적으로 균등하지 않은 사용때문에 효율성을 저해한다.
따라서, 이 분야에서 추가적인 장점들뿐만 아니라, 상기에서 식별된 문제들에 대한 솔루션을 제공하는, 룩-어사이드 프로세서 유닛에 대한 요구가 있다.
개시의 일 양태에서, 첨부된 독립 청구항들에 따라 룩-어사이드 프로세서 유닛에서 정보 룩업 요청 프로세싱 및 예외 패킷 프로세싱을 위한 방법 및 장치가 개시된다. 추가적인 양태들은 종속 청구항들에 개시된다.
본 명세서에 개시된 전술한 양태들은 첨부 도면들과 함께 취해질 때 이하의 기술을 참조함으로써 보다 용이하게 명백해질 것이다.
도 1a는 본 개시의 양태에 따라 룩-어사이드 프로세서 유닛에서 정보 룩업 요청 프로세싱 및 예외 패킷 프로세싱 프로세스를 가능하게 하는 흐름도의 제 1 부분을 도시한다.
도 1b는 본 개시의 양태에 따라 룩-어사이드 프로세서 유닛에서 정보 룩업 요청 프로세싱 및 예외 패킷 프로세싱 프로세스를 가능하게 하는 흐름도의 제 2 부분을 도시한다.
도 2는 본 개시의 양태에 따라 룩-어사이드 프로세서 유닛, 프로세서, 및 콘텐트 주소화 메모리 (CAM: content addressable memory) 의 개념적 구조를 도시한다.
임의의 참조되지 않은 화살표 또는 이중 화살표 라인은 도시된 엔티티들 간의 가능한 정보 플로우를 나타낸다.
달리 규정되지 않는 한, 본 명세서에 사용된 모든 용어들 (기술적 용어 및 과학적 용어를 포함) 은 본 발명이 속하는 당업자에 의해 일반적으로 이해되는 동일한 의미를 갖는다. 일반적으로 사용되는 사전들에 정의된 바와 같은 용어들은 관련 분야 및 본 개시의 맥락에서 이들의 의미와 일관된 의미를 갖는 것으로 해석되어야 한다는 것이 또한 이해될 것이다.
본 명세서에 사용된 바와 같이, 단수 형태들 "a", "an", 및 "the"는 문맥에 분명하게 달리 지시하지 않는 한, 복수 형태들도 포함하는 것으로 의도된다. 용어들 "포함하다 (comprise, cpmorises)" 및/또는 "포함하는"은 본 명세서에서 사용될 때 언급된 피처들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 이상의 다른 피처들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들, 및/또는 이들의 그룹의 존재 또는 추가를 불가능하게 하지 않는다는 것이 또한 이해될 것이다. 용어 "및/또는"은 하나 이상의 연관된 열거된 아이템들의 임의의 그리고 모든 조합들을 포함한다.
다양한 개시된 양태들은 하나 이상의 예시적인 구성들을 참조하여 예시될 수도 있다. 본 명세서에 사용된 바와 같이, 용어 "예시적인"은 "예, 사례 또는 예시로서 기능하는"을 의미하고, 본 명세서에 개시된 다른 구성들에 대해 선호되거나 유리한 것으로 해석될 필요는 없다.
본 발명의 다양한 양태들은 명시적으로 언급되지 않는 한, 본 발명의 개념적인 구성들의 개략적인 예시들인 도면들을 참조하여 본 명세서에 기술될 것이다. 본 개시의 다양한 양태들은 당업자들이 본 발명을 실행할 수 있도록 제공된다. 본 개시에 걸쳐 제공된 다양한 양태들에 대한 수정들은 당업자들에게 용이하게 명백해질 것이고, 본 명세서에 개시된 개념들은 다른 애플리케이션들로 확장될 수도 있다.
도 2는 룩-어사이드 프로세서 유닛 (204), 룩업 트랜잭션 요청 엔티티 (206), 및 스트럭처 (208), (210) 의 개념적인 구조를 도시한다. 룩업 트랜잭션 요청 엔티티는 프로세서 (206), 이더넷 패킷 입력 분류 엔진, 또는 당업자에게 공지된 임의의 다른 엔티티를 포함할 수도 있다. 설명의 명확성을 위해 프로세서 (206) 는 본 개시에 걸쳐서, 본 개시를 제한하지 않고, 룩업 트랜잭션 요청 엔티티의 예로서 참조된다. 프로세서 (206) 는 하나 또는 복수의 프로세서 코어들 (206_1 내지 206_3) 을 포함할 수도 있다. 3 개의 프로세서 코어들만이 도시되지만, 당업자는 단일 코어를 포함하는, 다른 수의 코어들이 고려된다는 것을 이해할 것이다. 프로세서 코어들 (206_1 내지 206_3) 동작은 스트럭처 (208), (210) 내에 저장된 정보의 룩업을 요구한다. 정보 룩업에 관련된 임의의 프로세서 코어들의 오버헤드를 최소화할뿐만 아니라, 정보 룩업에 필요한 리소스들을 효율적으로 할당하기 위해, 룩-어사이드 프로세서 유닛 (204) 은 프로세서 (206) 와 스트럭처 (208), (210) 사이에 개재된다. 상이한 블록들이 룩-어사이드 프로세서 유닛 (204) 의 구조 내에서 하드웨어 또는 소프트웨어로서 구현될 수도 있다.
도 1은 룩-어사이드 프로세서 유닛에서 정보 룩업 요청 프로세싱 및 예외 패킷 프로세싱을 위한 프로세스를 실현하는 흐름도를 도시한다. 도 1 및 연관된 문장에 의해 참조된 도 2의 개념적 구조의 특정한 엘리먼트들 사이의 관계를 보다 분명하게 하기 위해, 도 2의 구조적 엘리먼트들에 대한 참조번호들이 삽입된다.
프로세서 (206) 의 복수의 프로세서 코어들 중 적어도 하나, 예를 들어, 프로세서 코어 (206-1) 는 타깃으로 송신될 룩업 트랜잭션 요청을 생성하는, 단계 102에서, 프로세스가 시작한다. 타깃은 두 내부 엔티티들이 집합적으로 (208) 로 참조되는, 내부 콘텐트 주소화 메모리, 내부 룩업 엔진, 및/또는 외부 콘텐트 주소화 메모리 (210) 또는 필드 프로그램가능 게이트 어레이와 같은 다른 외부 컴포넌트 및 당업자에게 공지된 다른 컴포넌트들을 포함할 수도 있다. 일 양태에서, 외부 콘텐트 주소화 메모리 (210) 는 인터라켄 룩어사이드 인터페이스 (212) 를 통해 룩-어사이드 프로세서 유닛 (204) 에 인터페이스된 외부 3진 콘텐트 주소화 메모리 (TCAM) 를 포함한다. 용어 외부는 디바이스 (202) 외부의 컴포넌트를 식별한다. 디바이스 (202) 가 프로세서 (206), 룩-어사이드 프로세서 유닛 (204), 인터라켄 룩어사이드 인터페이스 (212), 및 내부 엔티티들 (208) 을 포함하는 것으로 도시되지만, 다른 구성들이 고려된다. 예로서, 프로세서 (206) 는 디바이스 (202) 에 외부에 있을 수도 있다. 일 양태에서, 디바이스 (202) 는 집적 회로로서 구현된다. 프로세스는 단계 104에서 계속된다.
단계 104에서, 프로세서 코어 (206_1) 는 룩-어사이드 프로세서 유닛 (204) 에 룩업 트랜잭션 요청을 송신한다. 프로세스는 단계 106에서 계속된다.
단계 106에서, 룩업 트랜잭션 요청이 제어 로직 (214) 에 의해 수신된다. 선택적인 예외 패킷 프로세싱이 인에이블되는 경우, 제어 로직 (214) 은 프로세스가 단계 110에서 계속되는 경우, 룩업 트랜잭션 요청의 정규 프로세싱이 수행되는지 여부를 결정하고, 또는 프로세스가 단계 108에서 계속되는 경우, 예외 패킷들 프로세싱을 위해 룩업 트랜잭션 요청이 홀딩되는지 여부를 결정한다. 룩업 트랜잭션 요청을 생성한 프로세서 코어 (206_1) 에 의해 제공된 정보에 따라 결정이 이루어진다. 이 정보는 예를 들어, 룩업 트랜잭션 요청 내의 표시자로서, 아웃-오브-바운드 (out-of-bound) 시그널링으로서, 또는 당업자에게 공지된 임의의 다른 방법으로 정보가 제공될 수도 있다. 그렇지 않으면, 선택적인 예외 패킷 프로세싱이 디스에이블되는 경우, 제어 로직 (214) 은 룩업 트랜잭션을 수신하고, 프로세스는 단계 108에서 계속된다.
단계 108에서, 룩업 트랜잭션 요청이 복수의 버퍼들 (231) 을 포함하는 예외 큐 스트럭처 (230) 내에, 예를 들어, 버퍼 (231_1) 내에 위치된다. 큐는 엔티티들, 즉, 패킷을 포함하는 데이터가 유지되는, 스트럭처 내로의 데이터의 구성이다. 프로세스는 단계 106에서 계속된다.
단계 110에서, 제어 로직 (214) 은 복수의 스트럭처들 (216) 에 룩업 트랜잭션 요청을 제공한다. 일반적으로, 필수적인 것은 아니지만, 일 스트럭처 (216) 는 하나의 채널, 즉, 정보가 타깃 (208), (210) 으로/으로부터 송신/수신되는 경로를 지원한다. 일 양태에서, 인터라켄 룩어사이드 인터페이스가 사용되는 경우, 2 개의 스트럭처들이 사용되는데, 각 구조체는 인터라켄 인터페이스에 의해 지원된 2 개의 송신 채널들 및 2 개의 수신 채널들을 위한 것이다. 구현 상세들에 의해 방해되지 않고 개념을 설명할 목적으로, 단지 단일 스트럭처가 도시된다. 그러나, 당업자는 다른 수의 스트럭처들 (216) 이 사용될 수도 있다는 것을 이해할 것이다. 복수의 스트럭처들 (216) 각각은 복수의 룩어사이드 버퍼들 (218) 을 포함한다. 복수의 룩어사이드 버퍼들 (218) 각각은 3 가지 상태들: 프리 (FREE) 상태, 즉, 룩-어사이드 버퍼가 임의의 복수의 스트럭처들 (216) 에 의해 사용되지 않음; 프로세싱 (PROCESSING) 상태, 즉, 룩-어사이드 버퍼의 콘텐트가 타깃 (208), (210)에 의해 프로세싱됨; 및 수신 (RECEIVED) 상태, 즉, 룩-어사이드 버퍼의 콘텐트가 타깃 (208), (210) 으로 송신되었고, 타깃 (208), (210) 에 의해 프로세싱되는 상태들 중 하나일 수 있고, 프로세싱 결과가 룩-어사이드 버퍼들 (218) 로 반환되지만 이 결과는 아직 프로세서 코어 (206) 에 제공되지 않았다. 복수의 스트럭처들 (216) 각각은 복수의 룩-어사이드 버퍼들 (218) 각각의 상태를 홀딩하는, 복수의 버퍼들 (221) 을 포함하는, 복수의 스트럭처들 (220) 중 하나와 연관된다. 따라서, 도시된 바와 같이, 버퍼 (221_1) 는 룩-어사이드 버퍼들 (218_1) 의 상태를 홀딩한다.
룩업 트랜잭션 요청의 수신 시, 제어 로직 (214) 은 프리 상태의 룩-어사이드 버퍼 (218) 에 대해 복수의 스트럭처들 (216) 중에서 문의하고, 이러한 룩-어사이드 버퍼, 예를 들어 룩업 버퍼 (218_1) 에 룩업 트랜잭션 요청을 저장하고, 룩-어사이드 버퍼 (218_1) 내에 홀딩된 룩업 트랜잭션 요청을 요청 패킷으로 재구축하도록 스트럭처들 (222) 에 요청한다. 재구축은 목표된 타깃 (208), (210) 으로의 요청 패킷의 송신을 인에이블하도록 룩업 트랜잭션 요청 내의 필드들의 추가 또는 교체를 포함한다. 특히, 생성된 패킷의 교체는 트랜잭션 식별자의 추가를 포함한다. 트랜잭션 식별자는 요청 패킷 예를 들어, 포인터, 및 어드레스 또는 당업자에게 공지된 임의의 다른 식별자를 저장하는 룩-어사이드 버퍼 (218_1) 의 임의의 식별자를 포함한다. 룩-어사이드 프로세서 유닛 (204) 이 나중에 개시되는 바와 같이, 타깃 (208), (210) 으로부터의 정보의 무순서 (out-of-order) 룩업 반환을 허용하기 때문에 트랜잭션 식별자가 필요하다.
요청 패킷을 포함하는 것에 더하여, 룩-어사이드 버퍼들 (218_1) 각각은 또한 에러 상태를 포함한다. 에러는 제어 로직 (214) 이 룩업 트랜잭션 요청을 요청 패킷으로 재구축하고 문의가 프리 상태의 룩-어사이드 버퍼 (218) 를 발견하지 못하는 경우 발생할 수 있다. 요청 패킷이 폐기되고 에러 인터럽트가 생성되고 룩업 트랜잭션 요청을 생성하는 프로세서 코어 (206_1) 에 제공된다. 일 양태에서, 에러를 나타내는, 응답이 요청 프로세서 코어 (206_1) 에 전송된다. 다른 타입의 에러가 프로세서 코어들 (206) 이 타깃 (208), (210) 이 수신할 수 있는 것보다 많은 데이터가 요청 패킷 내에 넣어지게 하여, 룩-어사이드 버퍼 (218) 오버플로우를 유발하는 경우에 발생할 수도 있다. 타깃 (208), (210) 이 수신할 수 있는 데이터의 양은 타깃 (208), (210) 이 개시되는 경우 구성 파라미터로서 설정된다. 과도한 데이터가 폐기되고 에러 표시자가 생성되고 요청 프로세서 코어 (206_1) 에 제공된다.
프로세스는 단계 112에서 계속된다.
단계 112에서, 타깃 (208), (210) 은 다른 요청을 수신하고 프로세스하기 위해 준비가 되어 있음을 표시한다. 응답하여, 제어 로직 (214) 은 요청 패킷, 예를 들어 룩-어사이드 버퍼 (218_1) 에 저장된 패킷을 송신기 (244) 에 제공하고 스트럭처 (220) 의 대응하는 버퍼 (221_1) 의 상태를 프로세싱으로 변경한다. 송신기는 룩-어사이드 유닛 (204) 밖의 요청 패킷을 타깃 (208), (210) 으로 송신한다. 프로세스는 단계 114에서 계속된다.
단계 114에서, 타깃 (208), (210) 은 요청 패킷으로부터 트랜잭션 식별자를 추출하고, 요청된 룩업을 수행한다. 타깃 (208), (210) 은 룩업 정보 및 트랜잭션 식별자를 포함하는 응답 패킷을 생성하고, 응답 패킷을 룩-어사이드 프로세서 유닛 (204) 으로 전송한다. 타깃 (208), (210) 은 요청 패킷들이 수신된 순서와 동일하게 응답 패킷들을 전송할 필요는 없다. 따라서, 예로서, 요청 패킷에 응답하는 정보 룩업이 보다 늦게 수신된 요청 패킷에 응답하는 정보 룩업보다 긴 시간이 걸리면 타깃 (208), (210) 은 보다 이르게 수신된 패킷에 대한 응답 패킷 전에 보다 늦게 수신된 요청 패킷에 대한 응답 패킷을 전송할 수도 있다.
요청 패킷에 대한 응답 패킷에 더하여, 타깃 (208), (210) 은 특정한 요청 패킷과 연관되지 않는 예외 패킷을 생성할 수도 있다. 이러한 예외 패킷은 예를 들어, 타깃 (208), (210) 의 내부 에러로 인해 생성된 인터럽트 패킷, 조건, 예를 들어, 통계적 문턱값에 도달했다고 보고하는 서비스에 대한 요청, 또는 타깃 (208), (210) 이 당업자에게 공지된 프로세서 코어(들)와 통신하기 위한 비-응답 관련 정보를 갖는다는 임의의 다른 표시를 포함할 수도 있다. 임의의 트랜잭션 식별자에 대응하지 않는 이러한 예외 패킷은 타깃 (208), (210) 에 의해 생성될 수도 있고, 응답 패킷 내의 특정 비트들을 설정함으로써 타깃 (208), (210) 에 의해 표시된다. 특정 비트들을 설정하는 것은 단일 비트를 설정하는 것을 포함할 수도 있다.
프로세스는 단계 116에서 계속된다.
단계 116에서, 타깃 (208), (210) 에 의해 생성된 패킷은 수신기 (226) 에 의해 수신되고, 이는 수신된 패킷을 블록 (228) 에 제공한다. 프로세스는 단계 118에서 계속된다.
단계 118에서, 블록 (228) 은 수신된 패킷이 응답 패킷 또는 예외 패킷을 포함하는지 여부를 결정하기 위해 수신된 패킷을 검사한다.
블록 (228) 은 수신된 패킷 내의 특정 비트들을 미리 결정된 예외 마스크와 비교함으로써 수신된 패킷을 검사한다. 일 양태에서, 예외 패킷들, 예를 들어, 인터럽트 패킷, 서비스 요청 패킷들, 및 다른 타입의 앞서 언급된 예외 패킷들을 분류하기 위해 복수의 상이한 미리 결정된 마스크들이 있을 수도 있다. 미리 결정된 예외 마스크 비트 각각의 값은 3진수이고, 즉, 비트 값은 "1", "0" 또는 "무시 (don't care)"를 나타내는 "X"를 포함할 수도 있다. "무시"는 값이 "1" 또는 "0"을 나타낼 수도 있다는 것을 의미한다. 일 양태에서, 미리 결정된 마스크는 2 개의 레지스터들로서 구현된다. 제 1 레지스터 내의 비트의 제 1 값, 예를 들어, 값 "0"은 제 2 레지스터의 값과 무관하게, 비교를 위해 3진 값 "X"로 해석된다. 제 1 레지스터 내의 비트의 제 2 값, 예를 들어, 값 "1" 및 제 2 레지스터 내의 비트의 제 1 값, 예를 들어, 값 "0"은 비교를 위해 3진 값 "0"으로 해석된다. 제 1 레지스터 내의 비트의 제 2 값, 예를 들어, 값 "1" 및 제 2 레지스터 내의 비트의 제 2 값, 예를 들어, 값 "1"은 비교를 위해 3진 값 "1"로 해석된다. 그러나, 당업자는 다른 조합들이 가능함을 이해할 것이다.
수신된 패킷 내의 특정 비트들이 미리 결정된 마스크에 일치되는 경우, 즉, 비교가 예외 패킷을 표시하는 긍정인 경우, 블록 (228) 은 예외 큐 (230) 내의 버퍼, 예를 들어, 버퍼 (231_1) 에 예외 패킷을 제공하고, 프로세스는 단계 120에서 계속된다. 그렇지 않으면, 수신된 패킷 내의 특정 비트들이 미리 결정된 마스크에 일치하지 않는 경우, 즉, 비교가 응답 패킷을 표시하는 부정인 경우, 프로세스는 단계 122에서 계속된다.
단계 120에서, 선택적인 예외 패킷 프로세싱이 인에이블되는 경우, 예외 패킷은 버퍼 (231_1) 의 식별자를 통해 예외 패킷들 프로세싱을 위해 홀딩되는 룩업 트랜잭션과 연관된다. 일 양태에서, 데이터 버퍼를 구성 및 조작하기 위한 선입선출 (first-in-first-out) 방법을 통해 연관되고, 즉, 예외 패킷 프로세싱을 위해 홀딩되는 가장 오래된 룩업 트랜잭션이 사용된다. 그렇지 않으면, 선택적인 예외 패킷 프로세싱이 디스에이블되는 경우, 예외 패킷은 나중에 개시된 바와 같이 정규 응답 패킷과 같은 방식으로 프로세싱된다. 프로세스는 단계 122에서 계속된다.
단계 122에서, 응답이 생성되고 예외 큐 (230), 예를 들어, 버퍼 (231_1) 내에 홀딩된 예외 패킷은 연관에 따라 복수의 프로세서 코어들 중 하나에 제공되고, 즉, 예외 패킷은 예외 패킷 프로세싱을 위해 룩업 트랜잭션 요청을 생성하는 프로세서 코어에 제공된다. 프로세서 코어는 예외 패킷을 생성하는 타깃 (208), (210) 에 대한 이유, 예를 들어, 앞서 개시된 바와 같이 인터럽트, 요청 서비스에 따라 응답한다.
단계 124에서, 반환 패킷은 블록 (232) 에서 수신된다. 블록 (232) 은 반환 패킷으로부터 트랜잭션 식별자를 추출한다. 프로세스는 단계 126에서 계속된다.
단계 126에서, 추출된 트랜잭션 식별자는 스트럭처 (220) 내에 홀딩된, 대응하는 트랜잭션 식별자를 갖는 요청 패킷의 상태와 비교된다. 상태가 프로세싱으로 설정될 때, 프로세스는 단계 128에서 계속되고, 그렇지 않으면 응답 패킷은 예외 큐 (230) 에 제공되고, 프로세스는 단계 124에서 계속된다.
단계 128에서, 반환 패킷은 블록 (234) 에 제공된다. 블록 (234) 은 룩-어사이드 버퍼 (218_1) 의 상태를 스트럭처 (220) 내, 즉, 대응하는 버퍼 (221_1) 내에 수신 상태로 설정하고, 반환 패킷과 함께 요청 패킷을 스트럭처들 (216) 중 하나에 저장하고, 반환 패킷 내부에 반환 패킷의 사이즈 표시자를 삽입한다. 일 양태에서, 블록 (234) 은 룩-어사이드 버퍼, 예를 들어, 룩-어사이드 버퍼 (218_1) 내에서 요청 패킷을 반환 패킷으로 대체한다. 프로세스는 단계 130에서 계속된다.
단계 130에서, 응답 패킷은 복수의 프로세서 코어들 (206_1 내지 206_3) 중 하나에 제공된다. 일 양태에서, 프로세서 코어 (206_1) 가 룩업 트랜잭션 요청을 룩-어사이드 프로세서 유닛 (204) 에 제공하는 경우, 이와 동시에 프로세서 코어 (206_1) 는 반환 블록 (234) 이 응답 패킷을 기록할 메모리의 어드레스를 제공한다. 어드레스는 룩-어사이드 프로세서 유닛 (204) 에 의해 지정된 메모리에 저장될 수도 있다. 일 양태에서, 어드레스는 스트럭처 (220) 내에 저장된다. 반환 블록 (234) 은 예를 들어, 직접적인 메모리 액세스를 사용하여 제공된 어드레스에 응답 패킷을 기록하고, 룩-어사이드 버퍼 (218_1) 의 상태를 스트럭처 (220), 즉, 대응하는 버퍼 (221_1) 내에 프리 상태로 설정한다.
다른 양태에서, 프로세서 코어 (206_1) 는 상태가 수신 상태를 표시할 때까지 룩-어사이드 버퍼 (218_1) 의 상태를 폴링 (poll) 한다. 일 양태에서, 폴링은 주기적인 스케줄로 수행되고, 다른 양태에서 프로세서 코어 (206_1) 는 보다 높은 우선순위 태스크를 수행하지 않을 때 상태를 폴링한다. 이어서 프로세서 코어 (206_1) 는 룩-어사이드 버퍼 (218_1) 로부터 응답 패킷을 검색한다. 블록 (234) 은 응답 패킷의 검색을 검출하고 룩-어사이드 버퍼 (218_1) 의 상태를 스트럭처 (220) 즉, 대응하는 버퍼 (221_1) 내에 프리 상태로 설정한다.
다른 양태에서, 프로세서 코어 (206_1) 는 룩-어사이드 프로세서 유닛 (204) 에 룩업 트랜잭션 요청을 제공한 후 어느 시점에 반환 블록 (234) 이 예를 들어, 직접적인 메모리 액세스를 사용하여, 제공된 어드레스에 응답 패킷을 기록하는 것을 요청할 수도 있다. 프로세서 코어 (206_1) 가 정확한 응답 패킷을 요청할 수 있게 하기 위해, 룩-어사이드 프로세서 유닛 (204) 내의 엔티티, 예를 들어, 제어 로직 (214) 은 불분명한 식별자를 프로세서 코어 (206_1) 에 제공한다. 일 양태에서, 식별자는 룩-어사이드 버퍼 (218_1) 의 어드레스를 포함할 수도 있다. 일단 반환 블록 (234) 이 응답 패킷을 제공된 어드레스에 기록하면, 반환 블록 (234) 은 룩-어사이드 버퍼 (218_1) 의 상태를 스트럭처 (220), 즉 대응하는 버퍼 (221_1) 내에 프리 상태로 설정한다.
일 양태에서, 응답 패킷은 룩업 트랜잭션 요청을 생성한 프로세서 코어에 제공된다. 다른 양태에서, 응답 패킷은 룩업 트랜잭션 요청을 생성한 프로세서 코어로부터 상이한 프로세서 코어에 제공된다. 예를 들어, 그로부터 데이터를 판독하기 위한 어드레스의 식별자, 또는 폴링하기 위한 룩-어사이드 버퍼의 식별자를 응답 패킷을 수신하도록 프로세서에 제공하는 요청 코어에 의해, 프로세서 코어들 내에서 변화가 달성될 수도 있다.
반환된 패킷을 프로세서 코어에 제공하는 상기 개시된 양태는 조합될 수도 있다. 예로서, 프로세서 코어는 제 1 양태에 따라, 즉, 프로세서 코어가 응답 패킷이 기록될 메모리의 어드레스를 제공함으로써 또는 제 3 양태, 즉, 프로세서 코어가 룩업 트랜잭션 요청을 제공한 후 어떤 시점에 응답 패킷을 요청함으로써 반환 패킷을 요청할 수도 있다. 그러나, 요청은 타임-아웃될 수도 있는데, 즉, 반환 패킷이 미리 결정된 양의 시간에 획득되지 않는다. 룩-어사이드 프로세서 유닛 (204) 내의 엔티티는 타임아웃을 표시하는 비트를 설정하는 응답을 생성한다. 타임아웃 응답의 수신 시, 프로세서는 반환 패킷을 다시 요청하기 위해 앞서 개시된 임의의 양태들을 사용할 수도 있다. 프로세서 코어가 응답을 대기하기 위해 시간을 소비할 필요가 없고 대신 보다 높은 우선순위의 태스크들을 수행하고, 응답을 검색하기 때문에 보다 높은 우선순위의 태스크들을 수반하지 않을 때, 리소스들의 소비가 감소되는 것이 장점이다.
본 개시의 다양한 양태들은 당업자가 본 발명을 실시하는 것을 인에이블하도록 제공된다. 이들 양태들에 대한 다양한 수정들이 당업자에게는 용이하게 명백해지고, 본 명세서에 개시된 개념들은 본 발명의 정신 또는 범위로부터 벗어나지 않고 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 본 명세서에 도시된 양태들로 제한되도록 의도되지 않고, 본 명세서에 개시된 원리들 및 신규한 피처들에 일치하는 가장 넓은 범위에 따른다.
따라서, 예에 의해, 당업자는 특정한 단계들이 추가되거나 불필요해질 수도 있고 및/또는 특정한 구현에 기초하여 병렬로 수행될 수도 있기 때문에 흐름도는 완전하지 않다는 것을 이해할 것이다. 예에 의해, 선택적인 예외 패킷 프로세싱이 디스에이블되는 경우, 제어 로직 (214) 은 룩업 트랜잭션을 수신하고 단계들 106 및 108 중 어떤 것도 필요로 하지 않고, 이를 복수의 스트럭처들 (216) 에 제공한다. 부가적으로, 단계들은 병렬로 또는 순차적으로 수행될 수 있다. 게다가, 단계들의 시퀀스는 재배치가 기능적 차이를 유발하지 않는 이상 재배열될 수도 있다.
당업자에게 공지되거나 나중에 공지될 본 개시에 걸쳐 기술된 다양한 양태들과 함께 기술된 다양한 예시적 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들에 대한 모든 구조적이고 기능적인 등가물들은 참조로서 명시적으로 통합되고 청구항들에 의해 포괄되도록 의도된다. 이러한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로 구현될 수도 있다.
당업자는 임의의 다양한 상이한 기술들 및 기법들을 사용하여 표현될 수도 있다는 것을 이해할 것이다. 예를 들어, 상기 기술에 걸쳐 참조될 수도 있는 데이터, 인스트럭션들, 명령들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압, 전류, 전자기 파, 자계 또는 파티클들, 광학계 또는 파티클들, 또는 임의의 이들의 조합으로 표현될 수도 있다.
또한, 이러한 개시가 청구항들에 명시적으로 언급되는지 여부와 무관하게 본 명세서에 개시되지 않은 것은 공공으로 전용되도록 의도된다. 어떠한 엘리먼트도 엘리먼트가 "을 위한 수단"이라는 구 또는 방법 청구항의 경우에, "을 위한 단계"라는 구를 사용하여 명시적으로 언급되지 않는 한, 35 U.S.C. §112의 조항, 여섯번째 문단에 따라 해석되지 않는다.

Claims (22)

  1. 룩-어사이드 프로세서 유닛 (look-aside processor unit) 에서 정보 룩업 요청 (lookup request) 을 프로세싱하는 방법으로서,
    수신된 룩업 트랜잭션 요청을 제 1 버퍼 내에 저장하는 단계;
    상기 룩업 트랜잭션 요청을 요청 패킷으로 재구축하는 단계;
    상기 요청 패킷을 송신하는 단계;
    패킷을 수신하는 단계;
    상기 수신된 패킷이 응답 패킷 또는 예외 패킷을 포함하는지 여부를 결정하는 단계; 및
    상기 결정에 따라 상기 수신된 패킷을 프로세싱하는 단계를 포함하는, 정보 룩업 요청 프로세싱 방법.
  2. 제 1 항에 있어서,
    상기 룩업 트랜잭션 요청을 요청 패킷으로 재구축하는 단계는,
    상기 제 1 버퍼의 식별자를 포함하는 트랜잭션 식별자를 상기 요청 패킷 내에 삽입하는 단계를 포함하는, 정보 룩업 요청 프로세싱 방법.
  3. 제 1 항에 있어서,
    상기 수신된 패킷이 응답 패킷 또는 예외 패킷을 포함하는지 여부를 결정하는 단계는,
    상기 수신된 패킷 내의 특정 비트들의 3진 (ternary) 값들을 3진 값들의 미리 결정된 마스크와 비교하는 단계;
    상기 비교가 부정적인 경우 상기 수신된 패킷을 응답 패킷으로 결정하는 단계; 및
    상기 비교가 긍정적인 경우 상기 수신된 패킷을 예외 패킷으로 결정하는 단계를 포함하는, 정보 룩업 요청 프로세싱 방법.
  4. 제 1 항에 있어서,
    상기 결정에 따라 상기 수신된 패킷을 프로세싱하는 단계는,
    요청 패킷의 상태에 대하여 상기 응답 패킷 내의 트랜잭션 식별자를 대응하는 트랜잭션 식별자와 비교하는 단계;
    상기 상태가 제 1 상태를 포함하는 경우 상기 응답 패킷을 제 1 저장부에 저장하는 단계; 및
    그 외의 경우, 상기 응답 패킷을 제 2 저장부에 저장하는 단계를 포함하는, 정보 룩업 요청 프로세싱 방법.
  5. 제 4 항에 있어서,
    상기 예외 패킷을 상기 제 2 저장부 내로 제공하는 단계를 더 포함하는, 정보 룩업 요청 프로세싱 방법.
  6. 제 4 항에 있어서,
    상기 저장된 응답 패킷을 복수의 요청 엔티티들 중 하나에 의해 제공된 메모리 내의 어드레스에 기록하는 단계를 더 포함하는, 정보 룩업 요청 프로세싱 방법.
  7. 제 4 항에 있어서,
    복수의 요청 엔티티들 중 하나에 의해 상기 요청 패킷의 상기 상태를 폴링 (polling) 하는 단계; 및
    상기 요청 패킷의 상기 상태가 제 2 상태를 포함하는 경우, 복수의 요청 엔티티들 중 상기 하나에 의해 상기 응답 패킷을 요청하는 단계를 더 포함하는, 정보 룩업 요청 프로세싱 방법.
  8. 제 4 항에 있어서,
    복수의 요청 엔티티들 중 하나 또는 상기 복수의 요청 엔티티들 중 다른 하나에 의해 상기 룩업 트랜잭션 요청이 송신된 후 미리 결정된 시간에 복수의 요청 엔티티들 중 상기 하나에 의해 상기 응답 패킷을 요청하는 단계를 더 포함하는, 정보 룩업 요청 프로세싱 방법.
  9. 룩-어사이드 프로세서 유닛에서 예외 패킷을 프로세싱하는 방법으로서,
    적어도 하나의 수신된 룩업 트랜잭션 요청을 제 1 버퍼 내에 저장하는 단계;
    패킷을 수신하는 단계;
    상기 수신된 패킷이 예외 패킷을 포함하는지를 결정하는 단계; 및
    상기 제 1 버퍼의 식별자에 따라 상기 적어도 하나의 저장된 룩업 트랜잭션 요청 중 하나와 상기 예외 패킷을 연관시키는 단계를 포함하는, 예외 패킷 프로세싱 방법.
  10. 제 9 항에 있어서,
    상기 제 1 버퍼의 식별자에 따라 상기 예외 패킷을 상기 적어도 하나의 저장된 룩업 트랜잭션 요청 중 하나와 연관시키는 단계는,
    데이터 버퍼를 구성하고 조작하기 위한 선입선출 (first-in-first-out) 방법을 통해 상기 적어도 하나의 저장된 룩업 트랜잭션 요청 중 하나와 상기 예외 패킷을 연관시키는 단계를 포함하는, 예외 패킷 프로세싱 방법.
  11. 제 9 항에 있어서,
    상기 연관에 따라 복수의 요청 엔티티들 중 하나에 상기 예외 패킷을 제공하는 단계를 더 포함하는, 예외 패킷 프로세싱 방법.
  12. 정보 룩업 요청을 프로세싱하는 장치로서,
    수신된 룩업 트랜잭션 요청을 제 1 버퍼 내에 저장하도록 구성된 제어 로직;
    상기 룩업 트랜잭션 요청을 요청 패킷으로 재구축하기 위한 수단;
    상기 요청된 패킷을 송신하도록 구성된 송신기;
    패킷을 수신하도록 구성된 수신기;
    상기 수신된 패킷이 응답 패킷 또는 예외 패킷을 포함하는지 여부를 결정하도록 구성된 비교기; 및
    상기 결정에 따라 상기 수신된 패킷을 프로세싱하기 위한 수단을 포함하는, 정보 룩업 요청 프로세싱 장치.
  13. 제 12 항에 있어서,
    상기 룩업 트랜잭션 요청을 요청 패킷으로 재구축하기 위한 상기 수단은,
    상기 제 1 버퍼의 식별자를 포함하는 트랜잭션 식별자를 상기 요청 패킷에 삽입하도록 구성된, 정보 룩업 요청 프로세싱 장치.
  14. 제 12 항에 있어서,
    상기 비교기는,
    상기 수신된 패킷의 특정 비트들의 3진 값들을 3진 값들의 미리 결정된 마스크와 비교하고,
    상기 비교가 부정적인 경우 상기 수신된 패킷을 응답 패킷으로 결정하고, 그리고
    상기 비교가 긍정적인 경우 상기 수신된 패킷을 예외 패킷으로 결정하는, 정보 룩업 요청 프로세싱 장치.
  15. 제 12 항에 있어서,
    상기 프로세싱 수단은,
    요청 패킷의 상태에 대하여 상기 응답 패킷의 트랜잭션 식별자를 대응하는 트랜잭션 식별자와 비교하는 제 2 비교기;
    상기 상태가 제 1 상태를 포함하는 경우 상기 응답 패킷을 저장하도록 구성된 제 1 저장부; 및
    그 외의 경우, 상기 응답 패킷을 저장하도록 구성된 제 2 저장부를 포함하는, 정보 룩업 요청 프로세싱 장치.
  16. 제 15 항에 있어서,
    상기 제 2 저장부는 상기 예외 패킷을 저장하도록 더 구성되는, 정보 룩업 요청 프로세싱 장치.
  17. 제 15 항에 있어서,
    복수의 요청 엔티티들 중 하나는 상기 저장된 응답 패킷을 기록할 메모리의 어드레스를 제공하도록 구성되는, 정보 룩업 요청 프로세싱 장치.
  18. 제 15 항에 있어서,
    복수의 요청 엔티티들 중 하나는,
    상기 요청 패킷의 상기 상태를 폴링하고, 그리고
    상기 상태가 제 2 상태를 포함하는 경우 상기 응답 패킷을 요청하도록 구성되는, 정보 룩업 요청 프로세싱 장치.
  19. 제 15 항에 있어서,
    복수의 요청 엔티티들 중 하나는,
    복수의 요청 엔티티들 중 하나 또는 상기 복수의 요청 엔티티들 중 다른 하나에 의해 상기 룩업 트랜잭션 요청이 송신된 후 미리 결정된 시간에 상기 응답 패킷을 요청하도록 구성되는, 정보 룩업 요청 프로세싱 장치.
  20. 룩-어사이드 프로세서 유닛에서 예외 패킷을 프로세싱하는 장치로서,
    적어도 하나의 수신된 룩업 트랜잭션 요청을 제 1 버퍼 내에 저장하도록 구성된 저장부;
    패킷을 수신하도록 구성된 수신기;
    상기 수신된 패킷이 예외 패킷을 포함하는지를 결정하도록 구성된 비교기; 및
    상기 제 1 버퍼의 식별자에 따라 상기 적어도 하나의 저장된 룩업 트랜잭션 요청 중 하나와 상기 예외 패킷을 연관시키도록 구성된 반환기 (returner) 를 포함하는, 예외 패킷 프로세싱 장치.
  21. 제 20 항에 있어서,
    제어 로직이 데이터 버퍼를 구성하고 조작하기 위한 선입선출 방법을 통해 상기 적어도 하나의 저장된 룩업 트랜잭션 요청 중 하나와 상기 예외 패킷을 연관시키도록 구성되는, 예외 패킷 프로세싱 장치.
  22. 제 20 항에 있어서,
    상기 반환기는 상기 저장부가 상기 연관에 따라 복수의 요청 엔티티들 중 하나에 상기 예외 패킷을 제공하게 하도록 더 구성되는, 예외 패킷 프로세싱 장치.
KR1020140160344A 2013-12-27 2014-11-17 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛 KR102126592B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/141,987 2013-12-27
US14/141,987 US9491099B2 (en) 2013-12-27 2013-12-27 Look-aside processor unit with internal and external access for multicore processors

Publications (2)

Publication Number Publication Date
KR20150077288A true KR20150077288A (ko) 2015-07-07
KR102126592B1 KR102126592B1 (ko) 2020-06-25

Family

ID=53483193

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140160344A KR102126592B1 (ko) 2013-12-27 2014-11-17 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛

Country Status (5)

Country Link
US (1) US9491099B2 (ko)
KR (1) KR102126592B1 (ko)
CN (1) CN104750580B (ko)
HK (1) HK1207718A1 (ko)
TW (1) TWI652623B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8942258B2 (en) 2012-09-14 2015-01-27 International Business Machines Corporation Segmentation and reassembly of network packets for switched fabric networks
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11403023B2 (en) * 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265235A (en) * 1990-11-30 1993-11-23 Xerox Corporation Consistency protocols for shared memory multiprocessors
US20010023466A1 (en) * 1990-04-18 2001-09-20 Michael Farmwald Memory device having a programmable register

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838894A (en) * 1992-12-17 1998-11-17 Tandem Computers Incorporated Logical, fail-functional, dual central processor units formed from three processor units
US6922753B2 (en) * 2002-09-26 2005-07-26 International Business Machines Corporation Cache prefetching
US20060050722A1 (en) * 2004-09-03 2006-03-09 James Bury Interface circuitry for a receive ring buffer of an as fabric end node device
JP4394670B2 (ja) * 2006-09-28 2010-01-06 株式会社日立製作所 ディスク制御装置及びストレージシステム
US20080235454A1 (en) * 2007-03-22 2008-09-25 Ibm Corporation Method and Apparatus for Repairing a Processor Core During Run Time in a Multi-Processor Data Processing System
US8429378B2 (en) 2010-07-06 2013-04-23 Qualcomm Incorporated System and method to manage a translation lookaside buffer
US8898430B2 (en) * 2012-12-05 2014-11-25 Arm Limited Fault handling in address translation transactions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010023466A1 (en) * 1990-04-18 2001-09-20 Michael Farmwald Memory device having a programmable register
US5265235A (en) * 1990-11-30 1993-11-23 Xerox Corporation Consistency protocols for shared memory multiprocessors

Also Published As

Publication number Publication date
US20150188816A1 (en) 2015-07-02
TWI652623B (zh) 2019-03-01
TW201528142A (zh) 2015-07-16
CN104750580B (zh) 2018-11-23
KR102126592B1 (ko) 2020-06-25
CN104750580A (zh) 2015-07-01
US9491099B2 (en) 2016-11-08
HK1207718A1 (en) 2016-02-05

Similar Documents

Publication Publication Date Title
KR20150077288A (ko) 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛
US11163719B2 (en) Hybrid remote direct memory access
US20210281499A1 (en) Network interface device
US7366865B2 (en) Enqueueing entries in a packet queue referencing packets
US7558925B2 (en) Selective replication of data structures
US8265092B2 (en) Adaptive low latency receive queues
US6618390B1 (en) Method and apparatus for maintaining randomly accessible free buffer information for a network switch
US6732184B1 (en) Address table overflow management in a network switch
US10924591B2 (en) Low-latency link compression schemes
US8397025B2 (en) Apparatus and method for determining a cache line in an N-way set associative cache using hash functions
US7117308B1 (en) Hypertransport data path protocol
US20110225168A1 (en) Hash processing in a network communications processor architecture
US9529640B2 (en) Work request processor
US20030172169A1 (en) Method and apparatus for caching protocol processing data
US8943507B2 (en) Packet assembly module for multi-core, multi-thread network processors
JP2007517286A (ja) 順次処理を減らしたtcp/ipオフロードデバイス
US9274586B2 (en) Intelligent memory interface
US20090073999A1 (en) Adaptive Low Latency Receive Queues
US6463478B1 (en) Method and apparatus for identifying runt data frames received by a network switch
US9288163B2 (en) Low-latency packet receive method for networking devices
US20140164553A1 (en) Host ethernet adapter frame forwarding
US20060161647A1 (en) Method and apparatus providing measurement of packet latency in a processor
US9338219B2 (en) Direct push operations and gather operations
US7219211B1 (en) Precompute logic for software packet processing
US6769055B1 (en) Two-part memory address generator

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