KR20220113724A - 서브필드 최소 및 최대 클램핑을 갖는 콘텐트 주소 지정 가능한 메모리 - Google Patents

서브필드 최소 및 최대 클램핑을 갖는 콘텐트 주소 지정 가능한 메모리 Download PDF

Info

Publication number
KR20220113724A
KR20220113724A KR1020227021945A KR20227021945A KR20220113724A KR 20220113724 A KR20220113724 A KR 20220113724A KR 1020227021945 A KR1020227021945 A KR 1020227021945A KR 20227021945 A KR20227021945 A KR 20227021945A KR 20220113724 A KR20220113724 A KR 20220113724A
Authority
KR
South Korea
Prior art keywords
subfield
data
cam
value
entry
Prior art date
Application number
KR1020227021945A
Other languages
English (en)
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 KR20220113724A publication Critical patent/KR20220113724A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • 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
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Abstract

프로세싱 시스템은 입력/출력 경로에 콘텐트 주소 지정 가능한 메모리(CAM)를 포함하여 파이프라인 단위로 레지스터 기록을 선택적으로 수정한다. CAM은 레지스터 기록의 주소를 CAM의 각각의 엔트리의 주소 필드와 비교한다. 매치가 발견되면, CAM은 CAM의 매칭 엔트리에 대한 함수에 의해 정의된 바와 같이 레지스터 기록 데이터를 수정한다. 일부 실시형태에서, CAM의 각각의 엔트리는 레지스터 기록 데이터의 서브필드를 획정하는 데이터 마스크를 포함하고, 각각의 서브필드는 하나 이상의 비트를 포함하는 서브필드 데이터를 포함한다.

Description

서브필드 최소 및 최대 클램핑을 갖는 콘텐트 주소 지정 가능한 메모리
프로세싱 시스템은 레지스터 및 다른 저장 모듈에서 애플리케이션 및 입력/출력(I/O) 디바이스로부터 데이터 및 명령을 수신한다. 차세대 프로세싱 시스템이 개발됨에 따라, 중요한 설계 고려 사항은 이전 애플리케이션 및 I/O 디바이스와의 호환성을 제공하는 것이다. 예를 들면, 애플리케이션에 의해 생성된 데이터 및 명령은 새로운 기능과 충돌할 수 있고, 그에 의해 사용자 경험에 부정적인 영향을 미친다. 게다가, 버그 수정 해결 방법은 레지스터 비트를 설정하거나 지워야 할 필요가 있을 수 있다. 이전 버전과의 호환성을 보장하기 위해 펌웨어 또는 플래시 마이크로코드를 사용하여 실행 시간에 데이터가 조작될 수 있다. 그러나, 펌웨어를 사용하여 데이터가 조작되는 경우, 각각의 레지스터 기록에 대해, 펌웨어는 주소 테스트를 적용하여 데이터의 잠재적 수정이 필요한지를 결정하고 필요한 경우 수정을 수행한다. 이것은 다수의 클록 사이클을 요구하고, 필요한 클록 사이클의 수는 확인해야 하는 주소의 수에 따라 증가한다. 따라서, 펌웨어 또는 플래시 마이크로코드의 레지스터 비트를 재설정하거나 지우기 위해 프로그램이 실행되는 동안 데이터를 분석하는 것은 시간 집약적이며, 잠재적으로 사용자 경험에 부정적인 영향을 미칠 수 있는 성능 저하를 초래한다.
본 발명은 더 양호하게 이해되고, 첨부된 도면을 참조함으로써 당업자에게 그의 수많은 특징 및 장점이 명백하게 될 수 있다. 상이한 도면에서 동일한 참조 부호의 사용은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시형태에 따라 하나 이상의 파이프라인 레지스터에 대한 레지스터 기록을 수정하기 위해 콘텐트 주소 지정 가능한 메모리(CAM)를 포함하는 프로세싱 시스템의 블록도.
도 2는 일부 실시형태에 따라 레지스터 기록의 서브필드 및 각각의 서브필드에 대응하는 서브필드 함수 및 서브필드 데이터를 정의하는 데이터 마스크를 포함하는 도 1의 CAM의 블록도.
도 3은 일부 실시형태에 따라 레지스터 기록의 명시된 비트를 대체하는 도 2의 CAM의 대체 서브필드 함수를 도시한 도면.
도 4는 일부 실시형태에 따라 레지스터 기록의 서브필드값을 최소값으로 클램핑(clamping)하는 도 2의 CAM의 최소 클램프 서브필드 함수를 도시한 도면.
도 5는 일부 실시형태에 따라 레지스터 기록의 서브필드값을 최대값으로 클램핑하는 도 2의 CAM의 최대 클램프 서브필드 함수를 도시한 도면.
도 6은 일부 실시형태에 따라 도 1 내지 도 5의 CAM을 사용하여 파이프 단위로 레지스터 기록을 수정하기 위한 방법을 도시하는 흐름도.
도 1 내지 도 6은 차세대 하드웨어와 매칭되도록 기존 소프트웨어로부터 수신된 레지스터 기록을 선택적으로 수정하기 위한 예시적인 하드웨어 시스템 및 기술을 도시한다. 다수의 프로세싱 파이프라인을 포함하는 프로세싱 시스템은 파이프라인 단위로 레지스터 기록을 선택적으로 수정하기 위해 I/O 경로에 CAM을 갖는다. CAM은 레지스터 기록의 주소를 CAM의 각각의 엔트리의 주소 필드와 비교한다. 레지스터 기록의 주소가 CAM의 엔트리의 주소 필드와 매칭된다고 결정한 것에 응답하여, CAM은 CAM의 매칭 엔트리(matching entry)에 대한 함수에 의해 정의된 바와 같이 레지스터 기록을 선택적으로 수정한다. 예를 들면, 일부 실시형태에서, 매칭 엔트리에 대한 함수는 대체 함수이고, 이에 응답하여 CAM은 레지스터 기록의 데이터의 값을 매칭 엔트리에 대해 CAM에 저장된 데이터(즉, 수정된 값)로 대체한다. 일부 실시형태에서, 매칭 엔트리에 대한 함수는 레지스터 기록의 데이터가 매칭 엔트리에 대해 CAM에 저장된 최소값과 비교되고 기록 데이터가 최소값 미만인 레지스터의 값의 최소값으로 대체되는 최소 클램프이다. 반대로, 일부 실시형태에서, 매칭 엔트리에 대한 함수는 레지스터 기록의 데이터가 매칭 엔트리에 대해 CAM에 저장된 최대값과 비교되고 레지스터 기록 데이터의 값이 최대값을 초과하는 경우 최대값으로 대체되는 최대 클램프이다.
CAM은 파이프라인 단위로 레지스터 기록을 선택적으로 수정하거나 폐기하여 유효한 CAM 엔트리에 대해, CAM이 제1 파이프라인에 대한 레지스터 기록을 수정하거나 폐기하지만 레지스터 기록을 제2(또는 제3, 등) 파이프라인에 대해 수정되지 않은 상태로 두게 한다. 일부 실시형태에서, 주어진 주소에 대해, 각각의 파이프라인은 파이프라인에 대한 레지스터 기록이 독립적으로 수정되도록 상이한 CAM 엔트리를 갖는다.
CAM은 일부 실시형태에서, 각각의 엔트리에 대한 데이터 마스크를 더 포함하며, 이 데이터 마스크는 레지스터 기록의 서브필드를 획정한다. 예를 들면, 일부 실시형태에서, 레지스터 기록 데이터는 32 비트를 포함하고 데이터 마스크는 각각의 서브필드에 속하는 비트 위치를 정의한다. 각각의 엔트리의 데이터 마스크에 의해 정의된 각각의 서브필드는 단일 비트 또는 다수의 비트를 포함할 수 있다. CAM은 각각의 서브필드에 대한 서브필드 함수 및 각각의 서브필드에 대한 서브필드 데이터 또는 서브필드값을 더 포함한다. 따라서, 제1 서브필드에 대한 서브필드 함수가 대체 함수이면, CAM은 데이터 마스크에 의해 정의된 비트 위치에 대한 데이터의 비트의 값을 매칭 CAM 엔트리에 대한 서브필드 데이터로 대체한다(예컨대, 각각의 0을 1로 반전시키고 각각의 1을 0으로 반전시킨다). 유사하게, 제1 서브필드에 대한 서브필드 함수가 최소 클램프인 경우, CAM은 데이터 마스크에 의해 정의된 데이터의 서브필드의 비트 위치의 값을 매칭 CAM 엔트리에 대한 서브필드값과 비교하고 데이터 서브필드의 값이 매칭 CAM 엔트리에 대한 서브필드값 미만인 경우 데이터 서브필드의 값을 매칭 CAM 엔트리에 대한 서브필드값으로 클램핑한다. 제1 서브필드에 대한 서브필드 함수가 최대 클램프인 경우, CAM은 데이터 마스크에 의해 정의된 데이터의 서브필드의 비트 위치의 값을 매칭 CAM 엔트리에 대한 서브필드값과 비교하고 데이터 서브필드의 값이 매칭 CAM 엔트리에 대한 서브필드값보다 큰 경우 데이터 서브필드의 값을 매칭 CAM 엔트리에 대한 서브필드값으로 클램핑한다.
게다가, 일부 실시형태에서, 각각의 CAM 엔트리는 제2(또는 제3) 서브필드 함수가 데이터 기록의 제2(또는 제3) 서브필드에 대해 수행될 것이라는 표시를 포함한다. 예를 들면, 다수의 서브필드를 가지는 CAM 엔트리의 제1 슬롯에 대해 연속 비트가 설정되고, 레지스터 기록의 주소가 CAM 엔트리의 주소 필드와 매칭되면, 레지스터 기록의 데이터의 제1 서브필드에 대해 제1 서브필드 함수가 수행되고, CAM 엔트리의 다음(제2) 슬롯은 데이터의 제1 서브필드 또는 제2 서브필드에 대해 제2 서브필드 함수를 수행하기 위해 사용된다. CAM 엔트리의 제2 슬롯에 대해 연속 비트가 설정되면, 데이터의 제1 서브필드, 제2 서브필드, 또는 제3 서브필드 중 하나에 대해 제3 서브필드 함수가 수행된다. 도시하기 위해, 제1 서브필드 함수가 제1 서브필드에 대한 대체 함수이고, 제2 서브필드 함수가 제2 서브필드에 대한 최소 클램프이고, 제3 서브필드 함수가 제3 서브필드에 대한 최대 클램프이면, CAM은 데이터의 제1 서브필드의 비트를 대체하고, 제2 서브필드의 값을 최소치로 클램핑하고, 제3 서브필드의 값을 최대치로 클램핑하며, 모두는 단일 CAM 검색 및 비교를 사용한다. 최소 클램프 및 최대 클램프가 동일한 서브필드에 적용되는 경우, CAM은 대응하는 서브필드의 값을 제한한다. 따라서, 연속 비트(들) 체인은 단일 레지스터 기록의 비트의 상이한 범위에 대해 다수의 연산이 수행되도록 함께 동작한다. CAM을 사용하여 레지스터 기록을 선택적으로 수정함으로써, 기존 소프트웨어에 의해 생성된 데이터는 눈에 띄는 성능 저하 없이 차세대 하드웨어와 매칭되도록 수정될 수 있다.
도 1은 일부 실시형태에 따라 외부 저장 매체(106)로부터 하나 이상의 파이프라인 레지스터로의 레지스터 기록을 수정하도록 구성된 콘텐트 주소 지정 가능한 메모리(CAM)(110)를 포함하는 프로세싱 시스템(100)의 블록도이다. 프로세싱 시스템은 입력/출력(I/O) 엔진(104)과 같은 인터페이스, 및 2개의 파이프라인, 파이프라인(120) 및 파이프라인(130)을 포함한다. 파이프라인(120)은 레지스터(122) 및 처리 장치(124)를 포함한다. 마찬가지로, 파이프라인(130)은 레지스터(124) 및 처리 장치(134)를 포함한다. 프로세싱 시스템(100)은 전자 디바이스에 대해 명시된 작업을 수행하기 위해 명령어의 하나 이상의 세트(예컨대, 컴퓨터 프로그램)를 실행한다. 이러한 작업의 예는 전자 디바이스의 연산의 양태를 제어하는 것, 명시된 사용자 경험을 제공하기 위해 사용자에게 정보를 디스플레이하는 것, 다른 전자 디바이스와 통신하는 것, 등을 포함한다. 그에 따라, 상이한 실시형태에서, 프로세싱 시스템(100)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 서버, 게임 콘솔, 태블릿, 스마트폰, 등과 같은, 다수의 유형의 전자 디바이스 중 하나에서 이용된다.
명령어의 하나 이상의 세트의 실행을 지원하기 위해, 프로세싱 시스템(100)은 복수의 프로세서 코어를 포함한다(그 중 단지 하나, 프로세서 코어(140)가 예시의 용이를 위해 도 1에 도시된다). 일부 실시형태들에서, 각각의 프로세서 코어는 명령어를 페치(fetch)하고, 명령어를 대응하는 연산으로 디코딩하고, 연산을 하나 이상의 실행 유닛(예컨대, 처리 장치(124, 134))로 디스패치하고, 연산을 실행하며, 연산을 중단하기 위해 하나 이상의 명령어 파이프라인(예컨대, 파이프라인(120) 및 파이프라인(130))을 포함한다. 도 1이 2개의 파이프라인(120, 130)을 도시할지라도, 다른 실시형태는 하나의 파이프라인 또는 2개보다 많은 파이프라인을 포함한다. 명령어를 실행하는 과정에서, 프로세서 코어는 정보의 시각적 디스플레이와 연관된 그래픽 연산 및 다른 연산을 생성한다. 이 연산에 기초하여, 프로세서 코어는 그래픽 처리 장치(GPU)(도시되지 않음)에 명령 및 데이터를 제공한다.
I/O 엔진(104)은 키보드, 마우스, 프린터, 외부 디스크, 등과 같은 프로세싱 시스템(100)의 다른 요소뿐만 아니라, 디스플레이(도시되지 않음)와 연관된 입력 또는 출력 연산을 취급한다. 도시된 실시형태에서, I/O 엔진(104)은 컴팩트 디스크(CD), 디지털 비디오 디스크(DVD) 등과 같은 외부 저장 매체(106)에 저장된 정보를 판독한다. 외부 저장 매체(106)는 비디오 게임과 같은 애플리케이션을 구현하기 위해 사용된 프로그램 코드를 나타내는 정보를 저장한다. 외부 저장 매체(106)의 프로그램 코드는 파이프라인(120)의 레지스터(122)에 기록되어 처리 장치(124)에 의해 실행될 프로그램 코드 또는 명령어의 사본을 형성한다. 유사하게, 외부 저장 매체(106)의 프로그램 코드는 파이프라인(130)의 레지스터(132)에 기록되어 처리 장치(134)에 의해 실행될 프로그램 코드 또는 명령어의 사본을 형성한다.
외부 저장 매체로부터 레지스터(122, 132)로의 레지스터 기록의 선택적인 수정을 용이하게 하기 위해, 프로세싱 시스템은 CAM(110)을 포함한다. CAM(110)은 제1 파이프라인에 대해 레지스터 기록이 수정되고, 제2 파이프라인에 대해 레지스터 기록이 수정되지 않거나, 제1 파이프라인에 대한 수정과 상이하게 수정되도록, 파이프라인 단위로 레지스터 기록의 데이터를 선택적으로 수정하도록 구성된다. 일부 실시형태에서, CAM(110)은 CAM(110)의 엔트리의 주소와 매칭되는 주소에 대한 레지스터 기록에 데이터 마스크를 적용하도록 구성된다. 데이터 마스크는 레지스터 기록의 서브필드를 획정하고 데이터 마스크에 대응하는 레지스터 기록(즉, 서브필드)의 비트에 대해 수행될 서브필드 함수, 또는 연산코드를 명시한다. 일부 실시형태에서, CAM(110)은 제2 서브필드 함수(즉, 부가적인 연산)가 레지스터 기록의 동일한 서브필드 또는 상이한 서브필드에서, 레지스터 기록에 대해 수행되어야 한다는 표시(예컨대, 연속 비트)를 저장하도록 구성된다. CAM(110)의 각각의 엔트리는 주소 필드, 데이터 마스크, 연산코드를 식별하는 함수 선택 필드, 데이터 값 서브필드, 각각의 파이프라인에 대한 파이프라인 활성화 비트, 및 하나보다 많은 함수가 단일 레지스터 기록에서 수행되어야 하는 경우 연속 비트를 포함한다. 일부 실시형태에서, CAM(110)의 각각의 엔트리는 각각의 서브필드에 대한 함수 선택 필드를 포함한다. 일부 실시형태에서, CAM(110)의 각각의 엔트리는 레지스터 기록 데이터를 폐기하라는 표시를 더 포함한다. 스킵 기록과 같은 표시가 설정되면, CAM(110)은 하드웨어에 의해 폐기될 레지스터 기록을 위해 예약된 레지스터 주소로 출력된 주소를 수정한다.
함수 선택 필드는 대체, 최소 클램프, 및 최대 클램프 함수를 포함한다. 대체 함수가 데이터 마스크에 의해 정의된 비트의 서브필드에 대해 명시된 것에 응답하여, CAM(110)은 대응하는 데이터 마스크 비트 세트를 가지는 레지스터 기록 데이터(102)의 비트를 매칭 CAM(110) 엔트리의 대응하는 데이터 값 서브필드로 대체한다. 따라서, 예를 들면, 데이터 마스크가 0xffff0000이고, 매칭 CAM(110) 엔트리의 데이터 값 서브필드가 0xccddeeff이며, 레지스터 기록 데이터(102)가 0x12345678이면, 수정된 값은 0ccdd5678이 될 것이다. 최소 클램프 함수가 데이터 마스크에 의해 정의된 비트의 서브필드에 대해 명시된 것에 응답하여, CAM(110)은 레지스터 기록 데이터(102)의 서브필드의 값을 매칭 CAM(110) 엔트리의 대응하는 데이터 값 서브필드와 비교한다. 레지스터 기록 데이터(102)의 서브필드의 값이 매칭 CAM(110) 엔트리의 대응하는 데이터 값 서브필드 미만인 경우, CAM(110)은 레지스터 기록 데이터(102)의 서브필드의 값을 매칭 엔트리의 데이터 값 서브필드로 클램핑한다. 최대 클램프 함수가 데이터 마스크에 의해 정의된 비트의 서브필드에 대해 명시된 것에 응답하여, CAM(110)은 레지스터 기록 데이터(102)의 서브필드의 값을 매칭 CAM(110) 엔트리의 대응하는 데이터 값 서브필드와 비교한다. 레지스터 기록 데이터(102)의 서브필드의 값이 매칭 CAM(110) 엔트리의 대응하는 데이터 값 서브필드보다 크면, CAM(110)은 레지스터 기록 데이터(102)의 서브필드의 값을 매칭 엔트리의 데이터 값 서브필드로 클램핑한다. 따라서, CAM(110)은 레지스터 기록 데이터(102)의 서브필드를 선택적으로 수정한다.
도시하기 위해, 동작 시에, I/O 엔진(104)은 외부 저장 매체(106)로부터 레지스터 기록 데이터(102)를 수신한다. I/O 엔진(104)은 레지스터 기록 데이터(102)를 CAM(110)에 제공한다. CAM(110)은 레지스터 기록 데이터(102)의 주소를 CAM(110)의 각각의 엔트리의 주소 필드와 비교하기 위해 검색을 수행한다. 일부 실시형태에서, 매치(match)에 대해 CAM(110)을 검색할 때, 엔트리 0으로 시작하여 발견된 제1 매치가 사용되고, 상위 엔트리에서 매치가 무시된다. 매치가 발견되고 예를 들면, 파이프라인 활성화 비트를 설정함으로써 적어도 하나의 파이프라인이 활성화되면, CAM(110)은 매칭된 CAM(110) 엔트리에 대한 데이터 마스크 및 서브필드 함수 및 데이터 필드에 의해 정의된 바와 같이 레지스터 기록 데이터(102)를 수정한다. 파이프라인이 활성화되지 않으면, CAM(110)은 데이터(102)를 수정하는 것을 억제한다. 따라서, 도시된 예에서, CAM(110)은 데이터(102)의 주소에 대한 매치를 포함하고 파이프라인(120)에 대한 파이프라인 활성화 비트는 매칭 엔트리에 대해 설정된다. CAM(110)은 따라서, 파이프라인(120)에 대한 데이터(102)를 수정하고 수정된 데이터(112)를 레지스터(122)에 제공한다. 그러나, 도시된 예에서, 파이프라인(130)에 대한 파이프라인 활성화 비트는 설정되지 않고, 따라서 CAM(110)은 파이프라인(130)에 대한 데이터(102)를 수정하지 않고 데이터(102)를 레지스터(132)에 제공한다.
도 2는 일부 실시형태에 따라 레지스터 기록 데이터의 서브필드 및 각각의 서브필드에 대응하는 서브필드 데이터를 정의하는 데이터 마스크(206)를 포함하는 도 1의 CAM(110)의 블록도이다. 도시된 예에서, CAM(110)의 각각의 엔트리는 주소 필드(202), 스킵 기록 필드(204), 데이터 마스크(206), 함수 선택(208), 파이프라인 활성화(210), 파이프라인 활성화(212), 및 연속 비트(216)를 포함한다. 설정될 때, 스킵 기록 필드(204)는 레지스터 기록 데이터에 대해 CAM(110)으로부터 출력된 레지스터 주소를 하드웨어에 의해 폐기되는 주소로 수정한다. 데이터 마스크(206)는 CAM(110)의 엔트리의 주소 필드(202)와 매칭되는 레지스터 기록 데이터의 3개의 서브필드: 서브필드-1(220), 서브필드-2(230), 및 서브필드-3(240)을 정의한다. 각각의 서브필드는 하나 이상의 비트를 포함하고 독립적으로 크기가 조정된다. 따라서, 도시된 예에서, 서브필드-1(220)은 서브필드-2(230)보다 적은 비트를 포함하고, 서브필드-3(240)은 서브필드-1(220)보다 많은 비트를 포함하지만 서브필드-2(230)보다 적은 비트를 포함한다. 일부 실시형태에서, 설정되는 비트 위치는 서브필드의 마지막 비트를 정의한다. 예를 들면, 다음 상위 수의 비트에 대한 마스크 비트가 설정될 때 새로운 서브필드가 시작된다. 32 비트 데이터에 대해, 비트 31는 서브필드를 시작하고 비트 0은 서브필드를 종료한다. 최상위 비트 31부터 시작하여, 데이터 마스크(204)의 비트가 0이면, 새로운 서브필드가 시작되거나 이는 서브필드의 중간이다. 데이터 마스크(204)의 비트가 1이면, 이는 서브필드의 마지막 비트이다.
CAM(110)의 매칭 엔트리는 데이터 마스크(206)에 의해 식별된 비트에 대응하는 레지스터 기록 데이터(도시되지 않음)의 비트에 대해 수행될, 함수 또는 연산코드를 식별하는 함수 선택(208)을 포함한다. 일부 실시형태에서, 함수 선택(208)은 대체 함수, 최소 클램프 함수, 또는 최대 클램프 함수 중 하나이다. 서브필드-1 데이터 값(222)은 서브필드-1(220)에 대응하는 레지스터 기록 데이터의 비트의 값을 대체하거나(함수 선택(208)이 대체 함수인 경우에) 서브필드-1(220)에 대응하는 레지스터 기록 데이터의 비트의 값을 클램핑하기 위해(함수 선택(208)이 최소 또는 최대 클램프 함수이고 "서브필드-1" 레지스터 기록 데이터의 값이 서브필드-1 데이터의 값(222) 미만이거나 이를 초과하는 경우에) 사용된다. 설정되는 연속 비트(216)는 CAM(110)이 주소 필드(202)와 매칭되는 레지스터 기록 데이터에 대해 제2 함수를 수행한다는 것을 나타낸다. 그에 따라, 제2 CAM 슬롯인 서브필드-2(230)는 제2 함수를 수행하기 위해 사용된다.
서브필드-1(220)과 유사하게, 함수 선택(208)은 데이터 마스크(206)에 의해 서브필드-2(230)로서 식별된 비트에 대응하는 레지스터 기록 데이터의 비트에 대해 수행될 기능, 또는 연산코드를 식별한다. 서브필드-2 데이터 값(232)은 (함수 선택(208)이 대체 함수인 경우에) 서브필드-2(230)에 대응하는 레지스터 기록 데이터의 비트의 값을 대체하거나 (함수 선택(208)이 최소 또는 최대 클램프 함수이고 "서브필드-2" 레지스터 기록 데이터의 값이 서브필드-2 데이터(232)의 최소값 미만이거나 최대값을 초과하는 경우에) 서브필드-2(230)에 대응하는 레지스터 기록 데이터의 비트의 값을 클램핑하기 위해 사용된다. 설정되는 연속 비트(216)는 CAM(110)이 주소 필드(202)와 매칭되는 레지스터 기록 데이터에 대해 제3 함수를 수행한다는 것을 나타낸다. 그에 따라, 제3 CAM 슬롯인 서브필드-3(240)은 제3 함수를 수행하기 위해 사용된다.
서브필드-1(220) 및 서브필드-2(230)에서와 같이, 함수 선택(208)은 데이터 마스크(206)에 의해 서브필드-3(240)으로서 식별된 비트에 대응하는 레지스터 기록 데이터의 비트에 대해 수행될 기능, 또는 연산코드를 식별한다. 서브필드-3 데이터 값(242)은 서브필드-3(240)에 대응하는 레지스터 기록 데이터의 비트의 값을 대체하거나(함수 선택(208)이 대체 함수인 경우에) 서브필드-3(240)에 대응하는 레지스터 기록 데이터의 비트의 값을 클램핑하기 위해(함수 선택(208)이 최소 또는 최대 클램프 함수이고 "서브필드-3" 레지스터 기록 데이터의 값이 서브필드-3 데이터의 값(242)의 최소값 미만이거나 최대값을 초과하는 경우에) 사용된다.
일부 실시형태에서, 서브필드-1(220), 서브필드-2(230), 및 서브필드-3(240)의 각각은 서브필드에 특정한 서브필드 함수 선택(도시되지 않음)을 포함한다. 따라서, 각각의 서브필드에 대한 서브필드 함수 선택은 다른 서브필드에 대한 서브필드 함수 선택과 독립적이다. 예를 들면, 일부 실시형태에서, 서브필드-1(220)에 대한 서브필드 선택은 대체 함수이고, 서브필드-2(230)에 대한 서브필드 선택은 최소 클램프 함수이며 서브필드-3(240)에 대한 서브필드 선택은 최대 클램프 함수이다.
도 3은 일부 실시형태에 따라 레지스터 기록 데이터(300)의 명시된 비트를 대체하는 도 1의 CAM(110)의 대체 서브필드 함수를 도시한다. 도시된 예에서, 데이터 마스크(310)는 레지스터 기록 데이터(300)의 비트 31(301)로부터 비트 N(308)까지의 범위의 서브필드를 획정하며, 여기서 수정될 비트는 "f"로 표시되고 수정되지 않은 상태로 유지될 비트는 "0"으로 표시된다. 도시된 예에서, 레지스터 기록 데이터(300)는 다음 값을 가지는 비트를 포함한다: 비트 31(301)은 0이고, 비트 30(302)은 0이고, 비트 29(303)은 1이고, 비트 28(304)은 0이고, 비트 27(305)는 1이고, 비트 26(306)은 1이고, 비트 25(307)는 0이며, 비트 N(308)은 1이다. 데이터 마스크(310)는 다음 비트가 수정될 것임을 나타낸다: 비트 31(301), 비트 30(302), 비트 28(304), 비트 27(305), 및 비트 25(307). 서브필드(310)와 연관된 함수 선택은 대체 함수(322)이고, 데이터 마스크(310)가 수정될 것이라고 나타내는 비트(301 내지 308)의 값을 대체할 데이터 값은 대체 데이터(324)로서 제공된다. CAM(110)은 레지스터 기록 데이터(300)를 대체 데이터(324)로 대체하여 수정된 데이터(330)를 생성한다. 도시된 예에서, 대체 데이터(324)는 레지스터 기록 데이터(300)의 비트 값으로부터 반전되는 비트 값을 갖는다. 따라서, 수정된 데이터(330)에 대해, 비트 31(301)은 1로 반전되고, 비트 30(302)은 1로 반전되고, 비트 29(303)는 1로서 수정되지 않은 채로 유지되고, 비트 28(304)은 1로 반전되고, 비트 27(305)은 0으로 반전되고, 비트 26(306)은 1로서 수정되지 않은 상태로 유지되고, 비트 25(307)는 1로 반전되며, 비트 N(308)은 1로서 수정되지 않은 상태로 유지된다.
도 4는 일부 실시형태에 따라 레지스터 기록 데이터(400)의 서브필드값(402)을 최소값(414)으로 클램핑하는 도 1의 CAM(110)의 최소 클램프 서브필드 함수를 도시한다. 도시된 예에서, 레지스터 기록 데이터(400)와 매칭 CAM(110)의 엔트리에 대한 데이터 마스크에 의해 정의된 서브필드(410)는 최소 클램프 함수(412) 및 최소값(414)을 명시하는 함수 선택을 갖는다. CAM(110)은 레지스터 기록 데이터(400)의 서브필드값(402)을 최소값(414)과 비교한다. 서브필드값(402)이 최소값(414)보다 크거나 이와 같으면, CAM(110)은 어떤 파이프라인이 활성화되는지에 의존하여, 이것이 레지스터 기록 데이터(400)를 레지스터(122, 132) 중 하나 또는 둘 다에 제공할 때 서브필드값(402)을 수정하지 않는다. 그러나, 서브필드값(402)이 최소값(414) 미만인 경우, CAM(110)은 서브필드값(402)을 최소값(414)으로 클램핑(설정)하고 수정된 데이터(420)를 레지스터(122, 132) 중 하나 또는 둘 다에 제공한다.
도 5는 일부 실시형태에 따라 레지스터 기록 데이터(500)의 서브필드값(502)을 최대값(514)으로 클램핑하는 도 1의 CAM(110)의 최대 클램프 서브필드 함수를 도시한다. 도시된 예에서, 레지스터 기록 데이터(500)와 매칭 CAM(110)의 엔트리에 대한 데이터 마스크에 의해 정의된 서브필드(510)는 최소 클램프 함수(512) 및 최대값(514)을 명시하는 함수 선택을 갖는다. CAM(110)은 레지스터 기록 데이터(500)의 서브필드값(502)을 최대값(514)과 비교한다. 서브필드값(502)이 최대값(514) 미만이거나 이와 같으면, CAM(110)은 어떤 파이프라인이 활성화되는지에 의존하여, 이것이 레지스터 기록 데이터(500)를 레지스터(122, 132) 중 하나 또는 둘 다에 제공할 때 서브필드값(502)을 수정하지 않는다. 그러나, 서브필드값(502)이 최대값(514)보다 큰 경우, CAM(110)은 서브필드값(502)을 최대값(514)으로 클램핑(설정)하고 수정된 데이터(520)를 레지스터(122, 132) 중 하나 또는 둘 다에 제공한다.
도 6은 일부 실시형태에 따라 도 1의 CAM(110)을 사용하여 파이프 단위로 레지스터 기록 데이터를 수정하기 위한 방법(600)을 도시하는 흐름도이다. 블록(602)에서, CAM(110)은 레지스터 기록 데이터(102)를 수신한다. 블록(604)에서, CAM(110)은 레지스터 기록 데이터(102)의 주소와 매칭되는 주소 필드를 가지는 엔트리에 대해 이의 엔트리를 검색한다. 블록(606)에서, CAM(110)은 이것이 매칭 엔트리를 포함하는지의 여부를 결정한다. 블록(606)에서, CAM(110)이 매칭 엔트리를 포함하지 않으면, 방법 흐름은 블록(608)으로 계속된다. 블록(608)에서, CAM(110)은 레지스터 기록 데이터(102)를 수정하는 것을 억제하고 수정되지 않은 레지스터 기록 데이터(102)를 레지스터(122, 132)에 제공하며, 방법 흐름은 다음 레지스터 기록 데이터를 수신하기 위해 블록(602)으로 다시 계속된다.
블록(606)에서, CAM(110)이 이것이 매칭 엔트리를 포함한다고 결정하면, 방법 흐름은 블록(610)으로 계속된다. 블록(610)에서, CAM(110)은 매칭 엔트리가 임의의 파이프라인에 대해 설정된 파이프라인 활성화를 갖는지의 여부를 결정한다. 파이프라인 활성화가 임의의 파이프라인에 대해 설정되지 않은 경우, 방법 흐름은 CAM(110)이 레지스터 기록 데이터(102)를 수정하는 것을 억제하는 블록(608)으로 다시 계속되고, 방법 흐름은 다음 레지스터 기록 데이터를 수신하기 위해 블록(602)으로 다시 계속된다. 블록(610)에서, 파이프라인 활성화가 적어도 하나의 파이프라인에 대해 설정되면, 방법 흐름은 블록(612)으로 계속된다. 블록(612)에서, CAM(110)은 레지스터 기록 데이터(102)의 하나 이상의 서브필드를 획정하기 위해 CAM(110)의 매칭 엔트리와 연관된 데이터 마스크를 적용한다. 블록(614)에서, CAM(110)은 데이터 마스크에 의해 정의된 각각의 서브필드에 대응하는 레지스터 기록 데이터(102)의 비트에 대해 함수 선택에 의해 명시된 함수를 수행한다. 블록(616)에서, CAM(110)은 연속 비트가 매칭 엔트리에 대해 설정되는지의 여부를 결정한다. 블록(616)에서, 연속 비트가 설정되지 않은 경우, 방법 흐름은 어떤 파이프라인 활성화가 설정되었는지에 의존하여, CAM(110)이 레지스터(122, 132) 중 하나 또는 둘 다에 수정된 데이터(112)를 제공하는 블록(618)으로 계속된다. 방법 흐름은 그 다음, 다음 레지스터 기록 데이터를 수신하기 위해 블록(602)으로 다시 계속된다.
블록(616)에서, CAM(110)이 연속 비트가 설정되었다고 결정하면, 방법 흐름은 블록(620)으로 계속된다. 블록(620)에서, CAM(110)은 다음 CAM(110) 엔트리를 얻고, 그 후에 방법 흐름은 다음 CAM(110) 엔트리에 대해 데이터 마스크를 적용하기 위해 블록(612)으로 다시 계속된다. 일단 CAM(110)이 레지스터 기록 데이터(102)에 대한 모든 함수를 수행했으면, 블록(618)에서 CAM(110)은 수정된 데이터(112)를 레지스터(122, 132) 중 하나 또는 둘 다에 제공한다. 일부 실시형태에서, CAM(110)은 파이프라인(120)에 대한 레지스터 기록 데이터(102)의 서브필드에 대해 제1 세트의 하나 이상의 함수를 수행하고 파이프라인(130)에 대한 레지스터 기록 데이터(102)의 서브필드에 대해 제2 세트의 하나 이상의 함수를 수행한다.
컴퓨터 판독 가능한 저장 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하기 위해 사용 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체, 또는 비일시적 저장 매체의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(예컨대, 콤팩트 디스크(CD), 디지털 다기능 디스크(DVD), 블루 레이 디스크), 자기 매체(예컨대, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예컨대, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예컨대, 판독 전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로전자기계 시스템(MEMS) 기반 저장 매체를 포함할 수 있지만 이로 제한되지는 않는다. 컴퓨터 판독 가능한 저장 매체는 컴퓨팅 시스템(예컨대, 시스템 RAM 또는 ROM)에 내장되거나, 컴퓨팅 시스템(예컨대, 자기 하드 드라이브)에 고정적으로 부착되거나, 컴퓨팅 시스템(예컨대, 광학 디스크 또는 범용 직렬 버스(USB) 기반 플래시 메모리)에 탈착 가능하게 부착되거나, 유선 또는 무선 네트워크(예컨대, 네트워크 액세스 가능한 저장 장치(NAS))를 통해 컴퓨터 시스템에 결합될 수 있다.
일부 실시형태에서, 상기 설명된 기술의 특정 양태는 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독 가능한 저장 매체에 저장되거나 그렇지 않으면 유형으로 구현된 실행 가능한 명령어의 하나 이상의 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 상기 설명된 기술의 하나 이상의 양태를 수행하기 위해 하나 이상의 프로세서를 조작하는 명령어 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독 가능한 저장 매체는 예를 들면, 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리와 같은 고체 상태 저장 디바이스, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 디바이스 또는 디바이스들, 등을 포함한다. 비일시적 컴퓨터 판독 가능한 저장 매체에 저장된 실행 가능한 명령어는 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서에 의해 해석되거나 그렇지 않으면 실행 가능한 다른 명령어 포맷일 수 있다.
하나의 양태에 따르면, 방법은 프로세싱 시스템에서, 프로세싱 시스템의 제1 레지스터에 기록될 제1 주소와 연관된 제1 데이터를 수신하는 단계를 포함한다. 방법은 프로세싱 시스템의 콘텐트 주소 지정 가능한 메모리(CAM)에서, 제1 주소를 CAM의 각각의 엔트리의 주소 필드와 비교하는 단계, 및 제1 주소가 CAM의 엔트리의 주소 필드와 매칭된다고 결정한 것에 응답하여, CAM의 엔트리와 연관된 함수 선택에 기초하여 제1 데이터의 값을 선택적으로 수정하는 단계를 더 포함한다. 방법은 또한, 수정된 값을 제1 레지스터에 기록하는 단계를 포함한다. 일부 실시형태에서, 방법은 CAM의 엔트리와 연관된 데이터 마스크를 적용하는 단계를 더 포함하고, 데이터 마스크는 제1 레지스터의 하나 이상의 서브필드를 획정하며, 각각의 서브필드는 하나 이상의 비트를 가지는 서브필드 데이터를 포함한다.
일부 실시형태에서, 방법은 함수 선택이 대체 함수를 명시한 것에 응답하여 데이터 마스크의 제1 서브필드에 대응하는 제1 데이터의 비트의 값을 CAM의 엔트리에 저장된 비트의 값으로 대체함으로써 제1 데이터의 값을 수정하는 단계를 포함한다. 일부 실시형태에서, 방법은 함수 선택이 최소 클램프를 명시한다고 결정하고 제1 데이터의 제1 서브필드의 값이 CAM의 엔트리의 제1 서브필드에 저장된 제1 값 미만이라고 결정한 것에 응답하여 CAM의 엔트리의 제1 서브필드에 대응하는 제1 데이터의 제1 서브필드의 값을 CAM의 엔트리의 제1 서브필드에 저장된 제1 값으로 설정함으로써 제1 데이터의 값을 선택적으로 수정하는 단계를 포함한다. 게다가, 일부 실시형태에서, CAM은 부가적인 연산이 수행되어야 한다는 표시에 응답하여 제1 데이터의 제1 서브필드에 대해 제1 연산을 수행하고 제1 데이터의 제2 서브필드에 대해 제2 연산을 수행한다. 일부 실시형태에서, CAM은 프로세싱 시스템에 의해 폐기될 레지스터 기록에 대한 레지스터 주소로 제1 데이터가 출력되는 주소를 수정함으로써 제1 데이터의 값을 선택적으로 수정한다.
또 다른 양태에 따르면, 방법은 프로세싱 시스템의 CAM에서, 프로세싱 시스템의 레지스터에 기록될 제1 데이터를 수신하는 단계, 및 제1 데이터가 CAM의 엔트리와 매칭된 것에 응답하여, 엔트리에 저장된 데이터 마스크를 적용하는 단계를 포함하고, 데이터 마스크는 제1 데이터의 하나 이상의 서브필드를 획정하고, 각각의 서브필드는 하나 이상의 비트를 가지는 서브필드 데이터를 포함한다. 방법은 CAM의 매칭 엔트리에 저장된 함수 선택에 기초하여 제1 데이터의 제1 서브필드에 대해 제1 연산을 수행하는 단계를 더 포함한다. 일부 실시형태에서, 방법은 또한, 부가적인 연산이 수행되어야 한다는 표시에 응답하여 제1 데이터의 제2 서브필드에 대해 제2 연산을 수행하는 단계를 포함한다. 게다가, 일부 실시형태에서, 방법은 제1 파이프라인이 활성화된다는 표시에 기초하여, 제1 파이프라인에 대한 제1 데이터의 값을 선택적으로 수정하는 단계, 및 제2 파이프라인이 활성화된다는 표시에 기초하여, 제2 파이프라인에 대한 제1 데이터의 값을 선택적으로 수정하는 단계를 더 포함한다.
또 다른 양태에 따르면, 프로세싱 시스템은 레지스터, 레지스터에 기록될 제1 주소와 연관된 제1 데이터를 수신하도록 구성된 인터페이스, 및 제1 주소를 CAM의 각각의 엔트리의 주소 필드와 비교하도록 구성된 CAM을 포함한다. 제1 주소가 CAM의 엔트리의 주소 필드와 매칭된다고 결정한 것에 응답하여, CAM은 CAM의 엔트리와 연관된 함수에 기초하여 제1 데이터의 값을 선택적으로 수정하고 수정된 값을 레지스터에 기록한다.
일반 설명에서 상기 설명된 모든 활동 또는 요소의 전부가 반드시 요구되지 않고, 특정 활동 또는 디바이스의 일부가 요구되지 않을 수 있으며, 하나 이상의 또 다른 활동이 수행되거나, 설명된 것에 더하여 요소가 포함될 수 있음에 유의한다. 여전히 게다가, 활동이 나열되는 순서가 반드시 이것이 수행되는 순서는 아니다. 또한, 개념은 특정 실시형태를 참조하여 설명되었다. 그러나, 당업자는 하기의 청구항에 제시된 바와 같이 본 발명의 범위를 벗어나지 않고 다양한 수정 및 변경이 행해질 수 있음을 인식한다. 그에 따라, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 의미로 간주되어야 하며, 모든 이러한 수정은 본 발명의 범위 내에 포함되도록 의도된다.
이득, 다른 장점, 및 문제점에 대한 해결책은 특정 실시형태와 연관하여 상기 설명되었다. 그러나, 이득, 이점, 문제점에 대한 해결책, 및 임의의 이득, 장점, 또는 해결책으로 하여금 발생하게 하거나 더 두드러지게 할 수 있는 임의의 특징(들)은 임의의 또는 모든 청구항의 중요하거나, 요구되거나, 필수 특징으로서 해석되어서는 안된다. 게다가, 개시된 주제가 본 명세서의 교시의 이득을 가지는 당업자에게 명백한 상이하지만 동등한 방식으로 수정되고 실시될 수 있기 때문에, 상기 개시된 특정한 실시형태는 단지 예시적이다. 하기의 청구항에 설명된 바와 같은 것 외에, 본 명세서에 도시된 구성 또는 설계의 상세에 대한 어떠한 제한도 의도되지 않는다. 따라서, 상기 개시된 특정한 실시형태가 변경되거나 수정될 수 있고 모든 이러한 변형이 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 그에 따라, 본 명세서에서 추구된 보호는 하기의 청구항에 제시된 바와 같다.

Claims (20)

  1. 방법으로서,
    프로세싱 시스템에서, 상기 프로세싱 시스템의 제1 레지스터에 기록될 제1 주소와 연관된 제1 데이터를 수신하는 단계;
    상기 프로세싱 시스템의 콘텐트 주소 지정 가능한 메모리(CAM)에서, 상기 제1 주소를 상기 CAM의 각각의 엔트리의 주소 필드와 비교하는 단계;
    상기 제1 주소가 상기 CAM의 엔트리의 주소 필드와 매칭된다고 결정한 것에 응답하여, 상기 CAM의 엔트리와 연관된 함수 선택에 기초하여 상기 제1 데이터의 값을 선택적으로 수정하는 단계; 및
    상기 수정된 값을 상기 제1 레지스터에 기록하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 CAM의 엔트리와 연관된 데이터 마스크를 적용하는 단계를 더 포함하되, 상기 데이터 마스크는 상기 제1 레지스터의 하나 이상의 서브필드를 획정하고, 각각의 서브필드는 하나 이상의 비트를 포함하는 서브필드 데이터를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 제1 데이터의 값을 선택적으로 수정하는 단계는, 상기 함수 선택이 대체 함수를 포함한 것에 응답하여 상기 데이터 마스크의 제1 서브필드에 대응하는 상기 제1 데이터의 비트의 값을 상기 CAM의 엔트리에 저장된 상기 서브필드 데이터의 비트의 값으로 대체하는 단계를 포함하는, 방법.
  4. 제2항에 있어서,
    상기 제1 데이터의 값을 선택적으로 수정하는 단계는,
    상기 함수 선택이 최소 클램프를 포함한다고 결정한 것; 및
    상기 제1 데이터의 제1 서브필드의 값이 상기 CAM의 엔트리의 제1 서브필드에 저장된 상기 제1 값 미만이라고 결정한 것
    에 응답하여 상기 CAM의 엔트리의 제1 서브필드에 대응하는 상기 제1 데이터의 제1 서브필드의 값을 상기 CAM의 엔트리의 제1 서브필드에 저장된 제1 값으로 설정하는 것을 포함하는, 방법.
  5. 제2항에 있어서,
    상기 제1 데이터의 값을 선택적으로 수정하는 단계는,
    상기 제1 서브필드의 제1 서브필드 함수가 최대 클램프를 포함한다고 결정한 것; 및
    상기 제1 데이터의 제1 서브필드의 값이 상기 CAM의 엔트리의 제1 서브필드에 저장된 상기 제1 값보다 크다고 결정한 것
    에 응답하여 상기 CAM의 엔트리의 제1 서브필드에 대응하는 상기 제1 데이터의 제1 서브필드의 값을 상기 CAM의 엔트리의 제1 서브필드에 저장된 제1 값으로 설정하는 것을 포함하는, 방법.
  6. 제2항에 있어서,
    상기 제1 데이터의 값을 선택적으로 수정하는 단계는, 부가적인 연산이 수행되어야 한다는 표시에 응답하여 상기 제1 데이터의 제1 서브필드에 대해 제1 연산을 수행하고 상기 제1 데이터의 제2 서브필드에 대해 제2 연산을 수행하는 단계를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 제1 데이터의 값을 선택적으로 수정하는 단계는,
    제1 파이프라인이 활성화된다는 표시에 기초하여, 상기 제1 파이프라인에 대한 상기 제1 데이터의 값을 선택적으로 수정하는 것; 및
    제2 파이프라인이 활성화된다는 표시에 기초하여, 상기 제2 파이프라인에 대한 상기 제1 데이터의 값을 선택적으로 수정하는 것
    을 포함하는, 방법.
  8. 제1항에 있어서,
    상기 제1 데이터의 값을 선택적으로 수정하는 단계는,
    상기 프로세싱 시스템에 의해 폐기될 레지스터 기록에 대한 레지스터 주소로 상기 제1 데이터가 출력되는 주소를 수정하는 것을 포함하는, 방법.
  9. 방법으로서,
    프로세싱 시스템의 콘텐트 주소 지정 가능한 메모리(CAM)에서, 상기 프로세싱 시스템의 레지스터에 기록될 제1 데이터를 수신하는 단계;
    상기 제1 데이터가 상기 CAM의 엔트리와 매칭된 것에 응답하여, 상기 엔트리에 저장된 데이터 마스크를 적용하는 단계로서, 상기 데이터 마스크는 상기 제1 데이터의 하나 이상의 서브필드를 획정하고, 각각의 서브필드는 하나 이상의 비트를 포함하는 서브필드 데이터를 포함하는, 상기 적용하는 단계; 및
    상기 CAM의 매칭 엔트리(matching entry)에 저장된 제1 함수 선택에 기초하여 상기 제1 데이터의 제1 서브필드에 대해 제1 연산을 수행하는 단계
    를 포함하는, 방법.
  10. 제9항에 있어서,
    부가적인 연산이 수행되어야 한다는 표시에 응답하여 상기 제1 데이터의 제2 서브필드에 대해 제2 연산을 수행하는 단계를 더 포함하는, 방법.
  11. 제9항에 있어서,
    상기 제1 연산을 수행하는 단계는, 상기 함수 선택이 대체 함수를 포함한 것에 응답하여 상기 데이터 마스크의 제1 서브필드에 대응하는 상기 제1 데이터의 비트의 값을 상기 CAM의 엔트리에 저장된 상기 서브필드 데이터의 비트의 값으로 대체하는 단계를 포함하는, 방법.
  12. 제9항에 있어서,
    상기 제1 연산을 수행하는 단계는,
    상기 제1 함수 선택이 최소 클램프를 포함한다고 결정한 것; 및
    상기 제1 데이터의 제1 서브필드의 값이 상기 CAM의 엔트리의 제1 서브필드에 저장된 상기 제1 값 미만이라고 결정한 것
    에 응답하여 상기 CAM의 엔트리의 제1 서브필드에 대응하는 상기 제1 데이터의 제1 서브필드의 값을 상기 CAM의 엔트리의 제1 서브필드에 저장된 제1 값으로 설정하는 것을 포함하는, 방법.
  13. 제9항에 있어서,
    상기 제1 연산을 수행하는 단계는,
    상기 제1 함수 선택이 최대 클램프를 포함한다고 결정한 것; 및
    상기 제1 데이터의 제1 서브필드의 값이 상기 CAM의 엔트리의 제1 서브필드에 저장된 상기 제1 값보다 크다고 결정한 것
    에 응답하여 상기 CAM의 엔트리의 제1 서브필드에 대응하는 상기 제1 데이터의 제1 서브필드의 값을 상기 CAM의 엔트리의 제1 서브필드에 저장된 제1 값으로 설정하는 것을 포함하는, 방법.
  14. 제9항에 있어서,
    상기 제1 연산을 수행하는 단계는,
    제1 파이프라인이 활성화된다는 표시에 기초하여, 상기 제1 파이프라인에 대한 상기 제1 데이터의 값을 선택적으로 수정하는 것; 및
    제2 파이프라인이 활성화된다는 표시에 기초하여, 상기 제2 파이프라인에 대한 상기 제1 데이터의 값을 선택적으로 수정하는 것
    을 포함하는, 방법.
  15. 프로세싱 시스템으로서,
    레지스터;
    상기 레지스터에 기록될 제1 주소와 연관된 제1 데이터를 수신하도록 구성된 인터페이스; 및
    콘텐트 주소 지정 가능한 메모리(CAM)
    를 포함하되, 상기 콘텐트 주소 지정 가능한 메모리는,
    상기 제1 주소를 상기 CAM의 각각의 엔트리의 주소 필드와 비교하도록;
    상기 제1 주소가 상기 CAM의 엔트리의 주소 필드와 매칭된다고 결정한 것에 응답하여, 상기 CAM의 엔트리와 연관된 함수 선택에 기초하여 상기 제1 데이터의 값을 선택적으로 수정하도록; 그리고
    상기 수정된 값을 상기 레지스터에 기록하도록
    구성되는, 프로세싱 시스템.
  16. 제15항에 있어서,
    상기 CAM은,
    상기 CAM의 엔트리와 연관된 데이터 마스크를 적용하도록 더 구성되고, 상기 데이터 마스크는 상기 제1 레지스터의 하나 이상의 서브필드를 획정하고, 각각의 서브필드는 하나 이상의 비트를 포함하는 서브필드 데이터를 포함하는, 프로세싱 시스템.
  17. 제16항에 있어서,
    상기 CAM은 상기 함수 선택이 대체 함수를 포함한 것에 응답하여 상기 데이터 마스크의 제1 서브필드에 대응하는 상기 제1 데이터의 비트의 값을 상기 CAM의 엔트리에 저장된 상기 서브필드 데이터의 비트의 값으로 대체함으로써 상기 제1 데이터의 값을 선택적으로 수정하도록 더 구성되는, 프로세싱 시스템.
  18. 제16항에 있어서,
    상기 CAM은,
    상기 함수 선택이 최소 클램프를 포함한다고 결정한 것; 그리고
    상기 제1 데이터의 제1 서브필드의 값이 상기 CAM의 엔트리의 제1 서브필드에 저장된 상기 제1 값 미만이라고 결정한 것
    에 응답하여 상기 CAM의 엔트리의 제1 서브필드에 대응하는 상기 제1 데이터의 제1 서브필드의 값을 상기 CAM의 엔트리의 제1 서브필드에 저장된 제1 값으로 설정함으로써 상기 제1 데이터의 값을 선택적으로 수정하도록 더 구성되는, 프로세싱 시스템.
  19. 제16항에 있어서,
    상기 CAM은,
    상기 함수 선택이 최대 클램프를 포함한다고 결정한 것; 및
    상기 제1 데이터의 제1 서브필드의 값이 상기 CAM의 엔트리의 제1 서브필드에 저장된 상기 제1 값보다 크다고 결정한 것
    에 응답하여 상기 CAM의 엔트리의 제1 서브필드에 대응하는 상기 제1 데이터의 제1 서브필드의 값을 상기 CAM의 엔트리의 제1 서브필드에 저장된 제1 값으로 설정함으로써 상기 제1 데이터의 값을 선택적으로 수정하도록 더 구성되는, 프로세싱 시스템.
  20. 제16항에 있어서,
    상기 CAM은 부가적인 연산이 수행되어야 한다는 표시에 응답하여 상기 제1 데이터의 제1 서브필드에 대해 제1 연산을 수행하고 상기 제1 데이터의 제2 서브필드에 대해 제2 연산을 수행함으로써 상기 제1 데이터의 값을 선택적으로 수정하도록 더 구성되는, 프로세싱 시스템.
KR1020227021945A 2019-12-11 2020-12-11 서브필드 최소 및 최대 클램핑을 갖는 콘텐트 주소 지정 가능한 메모리 KR20220113724A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/710,563 US11537319B2 (en) 2019-12-11 2019-12-11 Content addressable memory with sub-field minimum and maximum clamping
US16/710,563 2019-12-11
PCT/US2020/064478 WO2021119409A1 (en) 2019-12-11 2020-12-11 Content addressable memory with sub-field minimum and maximum clamping

Publications (1)

Publication Number Publication Date
KR20220113724A true KR20220113724A (ko) 2022-08-16

Family

ID=76318008

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227021945A KR20220113724A (ko) 2019-12-11 2020-12-11 서브필드 최소 및 최대 클램핑을 갖는 콘텐트 주소 지정 가능한 메모리

Country Status (6)

Country Link
US (1) US11537319B2 (ko)
EP (1) EP4073800A4 (ko)
JP (1) JP2023505788A (ko)
KR (1) KR20220113724A (ko)
CN (1) CN114902336B (ko)
WO (1) WO2021119409A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579802B2 (en) * 2019-10-04 2023-02-14 Fungible, Inc. Pipeline using match-action blocks

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5167029A (en) * 1989-12-13 1992-11-24 International Business Machines Corporation Data processing system and associated process using memory cards having data modify functions utilizing a data mask and an internal register
US5438535A (en) * 1994-03-29 1995-08-01 Panasonic Technologies, Inc. Content addressable memory system
US5995967A (en) * 1996-10-18 1999-11-30 Hewlett-Packard Company Forming linked lists using content addressable memory
US7634635B1 (en) * 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
US6678678B2 (en) * 2000-03-09 2004-01-13 Braodcom Corporation Method and apparatus for high speed table search
US6993622B2 (en) 2001-10-31 2006-01-31 Netlogic Microsystems, Inc. Bit level programming interface in a content addressable memory
US6876559B1 (en) 2002-02-01 2005-04-05 Netlogic Microsystems, Inc. Block-writable content addressable memory device
US7418543B2 (en) * 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
JP4799027B2 (ja) * 2005-03-31 2011-10-19 富士通株式会社 記憶制御回路、記憶制御回路におけるアドレスエラーチェック方法
JP2009026350A (ja) * 2007-07-17 2009-02-05 Renesas Technology Corp 半導体装置
US7782645B1 (en) 2008-02-04 2010-08-24 Netlogic Microsystems, Inc. Selective encoding of data values for memory cell blocks
US8990657B2 (en) * 2011-06-14 2015-03-24 Freescale Semiconductor, Inc. Selective masking for error correction
US9055114B1 (en) * 2011-12-22 2015-06-09 Juniper Networks, Inc. Packet parsing and control packet classification
JP2013191255A (ja) * 2012-03-14 2013-09-26 Renesas Electronics Corp 内容参照メモリシステム
US10340007B2 (en) 2015-06-05 2019-07-02 King Abdullah University Of Science And Technology Resistive content addressable memory based in-memory computation architecture
US10403333B2 (en) 2016-07-15 2019-09-03 Advanced Micro Devices, Inc. Memory controller with flexible address decoding

Also Published As

Publication number Publication date
EP4073800A1 (en) 2022-10-19
US11537319B2 (en) 2022-12-27
US20210181973A1 (en) 2021-06-17
EP4073800A4 (en) 2023-12-06
JP2023505788A (ja) 2023-02-13
CN114902336B (zh) 2023-08-11
CN114902336A (zh) 2022-08-12
WO2021119409A1 (en) 2021-06-17

Similar Documents

Publication Publication Date Title
JP6807383B2 (ja) 転送プレフィックス命令
US9804851B2 (en) Operand size control
US8898642B2 (en) Profiling and sequencing operators executable in an emulated computing system
JP4814937B2 (ja) デノーマル入力ハンドリングメカニズムをサポートするシステム、方法およびプログラム
JP2019504403A5 (ko)
JP2004038923A (ja) プログラムコード変換のための条件コードフラグのエミュレーション
TWI785064B (zh) 用於測試向量元素內部的位元值的設備、方法、電腦程式及電腦可讀儲存媒體
US8095775B1 (en) Instruction pointers in very long instruction words
KR20220113724A (ko) 서브필드 최소 및 최대 클램핑을 갖는 콘텐트 주소 지정 가능한 메모리
US10338926B2 (en) Processor with conditional instructions
US20210165654A1 (en) Eliminating execution of instructions that produce a constant result
JP7269318B2 (ja) 早期リターン予測を有する分岐ターゲットバッファ
US10409602B2 (en) Vector operand bitsize control
JP6545417B2 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JP2020530151A (ja) データ処理装置における連続値の照合
JP2014013570A (ja) 再構成可能プロセッサのソースレベルデバッギング装置及び方法
WO2016201699A1 (zh) 指令处理方法及设备
JP4662087B2 (ja) コンピュータ・アーキテクチャの状態コード設定を効率的にエミュレートする方法、システムおよびコンピュータ・プログラム
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
US20240028336A1 (en) Techniques for reducing cpu privilege boundary crossings
US7712076B2 (en) Register indirect access of program floating point registers by millicode
JP3057732B2 (ja) 情報処理装置
JP2003228492A (ja) 計算機シミュレーションプログラム、プロセッサのモデルの検証方法、及び計算機シミュレーション方法
US20160103685A1 (en) System register access
JP2010092273A (ja) 情報処理装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal