KR100555997B1 - 메모리 엔진과, 데이터 조사 및 정정 방법 - Google Patents

메모리 엔진과, 데이터 조사 및 정정 방법 Download PDF

Info

Publication number
KR100555997B1
KR100555997B1 KR1020047002048A KR20047002048A KR100555997B1 KR 100555997 B1 KR100555997 B1 KR 100555997B1 KR 1020047002048 A KR1020047002048 A KR 1020047002048A KR 20047002048 A KR20047002048 A KR 20047002048A KR 100555997 B1 KR100555997 B1 KR 100555997B1
Authority
KR
South Korea
Prior art keywords
data
character
characters
command
memory device
Prior art date
Application number
KR1020047002048A
Other languages
English (en)
Other versions
KR20040039285A (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 KR20040039285A publication Critical patent/KR20040039285A/ko
Application granted granted Critical
Publication of KR100555997B1 publication Critical patent/KR100555997B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories

Abstract

메모리 엔진은 데이터에 대해 고속 스트링 검색, 삽입 및 삭제 동작을 수행가능하게 하는 관련 메모리 및 랜덤 액세스 메모리를 조합하고, 데이터를 데이터 스트링 문자로서 임시 저장하는 메모리 장치를 포함한다. 다수의 명령 중 하나를 메모리 장치에 선택적으로 출력하고 메모리 장치로부터 데이터 피드백을 수신하는 제어기가 이용되며, 메모리 장치는 제어기에 의해 출력되는 명령에 따라서 스트링내의 데이터 문자를 조사한다. 초당 기 설정된 수의 클록 사이클로 구성된 클록 신호를 메모리 장치 및 제어기에 출력하는 클록 장치가 또한 이용되고, 메모리 장치는 클록 사이클 중 하나의 사이클내에서 데이터 문자 중 하나를 조사하고 선택적으로 조작한다.

Description

메모리 엔진과, 데이터 조사 및 정정 방법{A MEMORY ENGINE FOR THE INSPECTION AND MANIPULATION OF DATA}
본 발명은 데이터 검사 및 조작을 위한 메모리 엔진에 관한 것으로, 특히 심볼 스트링(strings of symbols) 형태의 데이터를 고속 검색하고, 필요한 경우, 문자 스트링내에 데이터를 선택적으로 삽입하고 문자 스트링내의 데이터를 선택적으로 삭제하는 메모리 엔진에 관한 것이다.
심볼들의 주어진 또는 기 설정된 스트링과 매칭하는 스트링들에 대한 심볼들을 포함하는 버퍼나 다른 메모리 디바이스를 검색하는 것은 데이터 베이스, 유전 정보 처리, 데이터 압축 및 컴퓨터 언어의 처리(그러나, 이에 제한되는 것은 아님)와 같은 많은 응용에서 발견되는 기본 작용이다. 또한, 스트링에 새로운 시퀀스를 삽입하거나 스트링으로부터 시퀀스들을 삭제함으로써, 그 스트링을 정정하는 것도 이러한 도메인에서의 기본 작용이며, 이들 스트링의 동작에 소요되는 시간은 주요 응용의 실행 시간에 직접적으로 영향을 미친다.
일련의 계산, 즉, M 심볼을 포함하는 버퍼내에 존재하는 모든 N 심볼 스트링 들의 모든 발현을 찾아내기 위한 매칭 동작이 실행될 경우, 필요한 단계들의 최대 횟수는 N*M이다. 버퍼 내에 문자 삽입이 필요한 경우, 새로운 셀을 위한 방을 만들기 위해서, 평균적으로 버퍼내의 심볼들의 절반을 한 셀 씩 오른쪽 또는 왼쪽으로 이동시켜야 한다. 이 경우 평균적으로 N/2회의 단계들이 필요하다.
이러한 작용을 개선하기 위한 일련의 알고리즘들이 제안되었으며, 이들 알고리즘들은 해싱(hashing)이나 트리 데이터 구조(tree data structure)를 포함하는 여러 가지 기술에 기반한다. 해싱은, 관심 대상의 스트링이 고정된 길이의 워드(word)일 경우에 이용된다. 이 경우, 각 워드는, 그 워드가 사전(dictionary)내에 저장되는 인덱스(index)로서 이용되는 고유 번호와 연관된다. 이 방법은 정보가 정적일 경우에만 작업이 잘 이루어지고 처리동안에는 위치 변경을 하지 못한다는 단점이 있다. 또한, 이 고유 번호를 생성하는 것은 비용이 많이 들고, 여러개의 워드가 동일한 번호와 연관되는 경우가 있으며, 그 경우에 찾고자 하는 워드를 발견하기 위해서는 추가적인 작업이 필요하게 된다. 또한 접미 트리(suffix tree)가 이용될 수 있는데, 그 접미 트리는 버퍼내의 모든 서브 스트링(substring)이 저장되는 트리 구조이다. 주어진 스트링이 버퍼내에 배치되어 있는지를 확인하고자 한다면, 스트링이 발견되거나 그렇지 않을 때 까지, 한번에 찾고자 하는 스트링의 한 문자씩 트리를 내려가야 한다. 어느 경우든, 스트링이 M 심볼을 포함한다면, 그 스트링이 길이 L의 버퍼내에 있는지를 결정하기 위해서는 적어도 M회의 단계가 필요하다. 이러한 검색 방법이 고속이긴 하지만, 접미 트리를 형성하는 것은, 때때로 산술적으로 비용이 많이 든다.
CAM(Content Addressable Memory)은 단일 메모리 억세스 방식으로 주어진 심볼 또는 워드를 발견하기 위한 병렬식 해법이다. 이러한 방법은 고정된 길이의 워드에 대해서는 작업이 잘 이루어지지만, 가변 길이의 심볼 스트링에 대해서는 쉽지 않다. 검색이 버퍼내에서 병렬로 실행될 수 있을 경우, 즉, 동일한 시간에 M번의 비교가 실행될 수 있다면, 단계들의 횟수가 N으로 줄어든다. 주어진 심볼과의 각 비교 결과를 저장하는 마커(marker) 및 병렬 비교기를 가진 버퍼가 제안되었으며, 그 버퍼는 스트링 검색의 속도를 높였다. 예를들어, Almy등에 의한 미국특허번호 제4,575,818호와, Mayer등에 의한 미국특허번호 제5,319,762호와, Eskandari-Gharnin등에 의한 미국특허번호 제5,602,764호 또는 Satoh등에 의한 미국특허번호 제5,448,733호를 참조하면 된다. 이들 공지된 장치들은, 전형적으로, 비교기를 버퍼의 각 셀 및 실행된 마지막 비교 결과를 저장하는 1비트 마커와 연관시킨다. 비교기, 저장 셀 및 마커는, 버퍼내에 배치될 스트링으로 부터의 심볼이 버퍼의 모든 비교기들로 방송되는 방식으로 동작한다. 그 다음, 이 비교기들은 주어진 심볼을 그들과 연관된 저장 셀에 저장된 심볼과 비교한다. 비교 결과는 비교기 및 저장 셀과 연관된 마커에 저장된다.
시프트 레지스터로 구현된 버퍼에 의해 그들의 컨텐츠는 왼쪽 또는 오른쪽으로 시프트되는데, 이러한 시프트는 병렬로 이루어지고, 또한, 클록 신호와 동기되어 이루어진다. 이 경우에, 버퍼의 모든 콘텐츠는 단지 한 단계로 시프트될 수 있다. 그러나, 이들 버퍼들은 시프트될 그 콘텐츠들의 한 섹션만을 제공하는 것이 아니라, 글로벌 시프트 동작만을 제공한다. 또한, 버퍼의 각 셀 마다의 개별적인 비 교기를 집적화하면 장치의 크기 및 복잡성을 전체적으로 증가시키는 경향이 있으며, 그에 따라 비용 및 에너지 사용이 과도하게 된다.
상술한 문제점들 및 우려를 염두에 두고, 본 발명은 고속의 문자 스트링 검색, 삽입 및 삭제가 가능한 메모리 장치를 이용하고자 하는 것으로, 그 장치에서는 CM(Connex Memory)이라고 하는 새로운 유형의 메모리 저장 회로가 이용된다.
본 발명의 목적은, 데이터에 대해 고속의 스트링 검색, 삽입 및 삭제 동작이 실행될 수 있도록 하는 데 있다.
본 발명의 다른 목적은, 데이터 문자 스트링을 포함하는 데이터에 대하여 고속의 스트링 검색, 삽입 및 삭제 동작이 실행될 수 있도록 하는데 있다.
본 발명의 다른 목적은, 데이터 문자 스트링을 포함하는 데이터에 대하여 고속의 스트링 검색, 삽입 및 삭제 작용이 실행될 수 있도록 하면서, 임의의 주어진 데이터 문자의 검사 및 조작이 단일 클록 사이클내에서 이루어질 수 있게 하는데 있다.
본 발명의 다른 목적은, 데이터 문자 스트링내의 가변 크기의 데이터 필드를 검사할 수 있도록 하는데 있다.
본 발명의 다른 목적은, 정적 또는 동적 메모리 셀을 이용하여, 데이터 문자 스트링을 임시 저장하고 조작하는데 있다.
본 발명의 다른 목적은, 메모리 셀내에 저장된 데이터 문자 스트링을 순방향 또는 역방향으로 검사하는데 있다.
본 발명의 일 실시예에 따르면, 메모리 엔진은 연관 메모리 및 RAM(Random Access Memory)을 조합하여, 데이터에 대해 고속의 스트링 검색, 삽입 및 삭제 작용이 가능하게 하고, 그 데이터를 데이터 문자 스트링으로서 임시 저장하는 메모리 장치를 포함한다. 메모리 장치로 다수의 명령어중 하나를 선택적으로 출력하는 제어기가 이용되며, 그 제어기는 그로부터 피드백된 데이터를 수신한다. 메모리 장치는 제어기에 의해 출력된 명령에 따라 스트링내의 데이터 문자를 검사한다. 초당 기 설정된 수의 클록 사이클을 포함하는 클록 신호를 메모리 장치 및 제어기에 출력하는 클록 장치가 이용되며, 메모리 장치는 한 클록 사이클내에 하나의 데이터 문자를 검사하고 선택적으로 조작한다.
본 발명의 상술한 목적 및 다른 목적과, 그들의 바람직한 실시예는 상세한 설명, 특허청구범위 및 도면을 전체로서 고려함으로서 더욱 명백하게 될 것이다.
도 1은 본 발명의 일 실시예에 따른, 외부 제어기 및 클록 소자를 포함하는 메모리 엔진의 전반적인 아키텍쳐를 나타낸 블록도,
도 2는 도 1의 메모리 엔진을, 메모리 엔진의 구성 소자들간의 정보 교환이 이루어지게 하는 서로 다른 버스들과 관련하여 나타낸 블록도,
도 3은 도 1의 메모리 엔진의 전반적인 작동에 대한 일 실시예를 나타내는 흐름도,
도 4는 도 1의 메모리 엔진의 전반적인 작동에 대한 다른 실시예를 나타내는 흐름도,
도 5는 도 1의 메모리 엔진이 'c-find' 명령을 처리하는 것을 나타내는 흐름도,
도 6은 도 1의 메모리 엔진이 'read' 명령을 처리하는 것을 나타내는 흐름도,
도 7은 도 1의 메모리 엔진이 'insert' 명령을 처리하는 것을 나타내는 흐름도,
도 8은 도 1의 메모리 엔진이 'delete' 명령을 처리하는 것을 나타내는 흐름도,
도 9는 도 1의 메모리 엔진이 'next' 명령을 처리하는 것을 나타내는 흐름도,
도 10은 도 1의 메모리 엔진이 'jump' 명령을 처리하는 것을 나타내는 흐름도,
도 11은 메모리 엔진의 메모리 장치를 그의 주변 장치와 인터페이스하고, 여러개의 메모리 장치를 서로 연결하는데 필요한 입력 및 출력 신호를 도시한 블록도,
도 12는 정적 또는 동적 메모리 셀의 2차원 어레이가 두 개의 트랜스코더(transcoder)를 통해 억세스 가능하게 이루어진, 메모리 장치의 내부 구조에 대한 일 실시예를 나타낸 블록도,
도 13은 동적 메모리 셀을 그의 주변 장치와 인터페이스하는 데 필요한 입력 및 출력 신호를 나타낸 블록도,
도 14는 본 발명의 일 실시예에 따라, 심볼 및 그의 관련 마커를 저장하기 위한 메모리 셀의 내부 아키텍쳐를 나타낸 것으로, 그 아키텍쳐에 의해 심볼 및 그의 관련 마커가 저장되고, 독출되며, 방송 심볼과 비교될 수 있음을 나타내는 회로도,
도 15는, 본 발명의 일 실시예에 따른, 도 12에 도시된 트랜스코더의 내부 아키텍쳐를 나타낸 것으로, 그 아키텍쳐에 의해 2차원 메모리 셀 어레이가 억세스 될 수 있고, 첫 번째 또는 마지막 마킹된 셀의 어드레스가 생성될 수 있음을 나타내는 회로도,
도 16은 버퍼 메모리의 콘텐츠를 RAM 및 RAM 제어기의 조합으로 나타내는 회로도, 및
도 17은 도 16에 도시된 RAM 제어기의 내부 구조를 나타낸 회로도.
CM은 최종 메모리 심볼 세트로부터 값을 획득하는 각 워드들의 스트링을 위한 물리적 지원부이며, 이때 각 워드는 추가 비트를 '세트'함에 의해 증가되고, 그에 의해 그 워드는 두 상태, 즉 마킹 또는 비 마킹 상태로 마크된다. 본 명세서에서, 용어 '메모리 심볼'은 연속적인 비트의 고정 길이 콜렉션(collection)을 나타내며, 그 길이는 응용에 따라 달라지는 것으로 우선 순위를 설정하는 것은 아니다.
본 발명의 구조에서는 한 클록 사이클내에 모든 CM 명령을 수행하는 것이 가능하며, CM 명령 수행은 현 캐시 메모리 기술에서 전형적으로 조우하는 지연 시간 보다 대략 두배 정도 지연된다. 본 명세서에서 설명된 구조는 독립형 회로(stand-alone) 구조로서, 보다 정교한 회로로 복제될 수 있다. 도 1에는 본 발명의 일 실시예에 따른 메모리 엔진(205)의 전반적인 아키텍쳐와, 그 메모리 엔진(205)과 외부 제어기(255) 및 동기 클록 회로(256)간의 동작적인 상관 관계가 도시된다. 외부 제어기(255)와 메모리 엔진의 동작이 클록 회로(256)로부터 발생하는 공통 클록 신호를 사용함으로써 조정됨을 쉽게 알 수 있을 것이다. 또한, 본 발명이 의도하는 바는, 외부 제어기(255)가 메모리 엔진(205)에 명령을 내리고 메모리 엔진(205)으로부터 데이터를 수신할 수 있다면, 본 발명의 보다 넓은 측면을 벗어나지 않고도, 외부 제어기(255)가 임의 수의 회로 지정적 구성을 가질 수 있게 하는 것이다.
도 2에 도시된 바와 같이, CM(26)은, 각각이 CM(26)과 동일한 크기를 가지며 메모리 엔진(205)의 제어를 받는 버퍼들의 풀(pool)로 구성된 라인 메모리 랜덤 억세스 장치(200)(본 명세서에서는 CE(Connex Engine)라고 함)와 연결된다. 라인이라고도 부르는, 이 버퍼들의 목적은 CM(206)내에 수용되는 것보다 긴 문자 스트링에 대해 검색, 삽입 및 삭제 동작이 실행될 수 있도록 하는 것이며, 또한 낮은 원가의 구현 및 전력 낭비의 감소를 제공하기 위한 것으로, 이에 대해서는 이하에서 보다상세하게 설명할 것이다.
도 3에는 CE(205)의 전반적인 응용이 도시되며, 제어기(255)가 검사를 위해 이전에 선택한 문자 스트링이 연관 라인 메모리(206)내에 로딩되는 블록(302)부터 시작된다. 문자 스트링은 데이터 심볼 콜렉션을 구비하며, 이 콜렉션은 예시적으로 라인 메모리(200)내의 하나 이상의 버퍼에 로딩되며, 이러한 로딩은 데이터 심볼들이 버퍼에 완전히 저장될 때 까지 계속된다. 이러한 방식으로, 라인 메모리(200)내의 각 버퍼는 서로 다른 문자 스트링 부분을 포함하는데, 이때 각 부분은 상술한 바와 같이 CM(206)과 동일한 크기를 갖는다.
도 3의 블록(304)에 도시된 바와 같이, CE(205)는 제 1 버퍼내의 검사될 콘텐츠를 라인 메모리(200)에서 데이터 RAM 버스(100)를 통해 CM(206)으로 로딩한다. 그러면, CM(206)은, 블록(306)에 도시된 바와 같이, 제어기(255)로부터 입력된 명령에 따라 문자 스트링의 로딩된 부분에 대한 원하는 스트링 동작 및 검사를 수행한다. 그 다음, CM(206)은, 하나 이상의 데이터 마커가 문자 스트링의 검사 부분에 세트되어야 하는지(블록(308)), 그러한 마커를 선택적으로 세트해야 하는지(블록(307)) 및 마커를 리세트해야 하는지(블록(309))를 판정한다. CM(206)으로 시프트되었던 문자 스트링의 주어진 부분에 하나 이상의 마커가 세트되어야 하는지에 대한 판정은 제어기(255)가 입력한 특정 명령에 좌우됨을 쉽게 알 수 있을 것이며, 그에 대해서는 이하에서 상세하게 설명할 것이다.
CM(206)내의 문자 스트링의 로딩된 부분을 검사하고, 필요한 경우, 거기에 하나 이상의 마커를 세트한 후, CE(205)는 라인 메모리(200)의 제 1 버퍼에 다시 CM(206)의 콘텐츠를 저장하고, 제 2 버퍼의 콘텐츠를 로딩하며, 동일한 동작을 실행한다. CE(205)는, CM(206)내에 버퍼를 로딩하고, CM(206)에서 스트링을 처리하고, 버퍼에 다시 CM(206)의 콘텐츠를 저장하는 패턴을, 전체 문자 스트링이 처리될 때 까지, 계속하여 수행한다. 검색된 심볼 스트링내에 있는 로컬리티(locality)의 레벨 때문에, CM(206)내에 로딩된 버퍼의 수는 검색 동작수가 진행됨에 따라 빠르게 감소하고, 동작 적하(bulk of operation)가 적은 수의 버퍼로 빠르게 제한된다.
그러므로, 본 발명의 중요한 측면은, 세트된 마커의 존재(또는 부재)로 인해 후속하는 검열로부터 임의의 버퍼가 제거될 수 있기 때문에, 제어기(255)가 발생한 명령에 응답하여 반복적으로 검사하는데, 라인 메모리(200)내의 버퍼에 저장된 문자 스트링 데이터 전체가 필요한 것은 아니다라는 것이다. 예를들어, 제어기(255)가 발생한 명령이 주어진 데이터 소자 세트에 검색을 지시한 것이라면(이하에서 보다 상세하게 설명할 것임), CM(206)은 우선적으로 라인 메모리(200)내의 각 버퍼의 각 문자 스트링을 검토하여, 데이터 소자의 첫 번째를 검색할 때에 사용하는 마커를 세트할 것이다. 라인 메모리(200)내의 버퍼에 대한 후속하는 검사는 세트된 마커를 포함하는 이러한 버퍼들로 제한되며, 세트된 마커를 가지고 있지 않은 버퍼들은 배제된다. 이러한 방식으로, 본 발명의 CM(206)은 검색될 데이터 소자의 모든 요소를 결코 포함할 수 없는 이 버퍼들을 반복적으로 검색할 필요가 없으며, 그에 따라 대량의 데이터 검열을 크게 및 점차로 제거하고, 응답 시간을 촉진시키다.
본 발명의 다른 중요한 측면은, CM(206)이, 온전한 한 클록 사이클내에서 서로간에 평행하게 상술한 블록 번호들의 동작을 수행할 수 있다는 것이다. 그러므로, CM(206)에 의해 도 3, 특히 블록(306,307,308,309) 병렬 처리가 단일 클록 사이클내에 이루어진다. 도 3의 개별적인 블록들 및 본 발명의 다른 블록도가 그들의 실행에 있어서 일시적으로 순차적인 것은 아니며, 상술한 바와 같이, CM(206)이 단일 클록 사이클내에 많은 블록들의 병렬 처리를 가능하게 한다는 것을 쉽게 알 수 있을 것이다.
아래에서는 CM(206)의 동작 및 CE(205)의 동작을, 제어기(255)가 발생한 특정 명령과 관련하여 보다 상세히 설명할 것이다.
CM(206)은 전형적으로 제어기(255)로 부터 명령과 데이터를 수신함에 의해 동작한다. 예를들어, 문자내의 주어진 심볼이나 데이터 소자 또는 CM(206)에 현재 저장된 심볼 스트링의 모든 발현의 위치를 결정하는 'find' 명령과 같은 명령이 데이터 피 연산자를 필요로 하면, 그 명령 및 심볼은 동시에 CM(206)에 공급된다. CM(206)은 순방향 명령 및 역방향 명령의 두 개의 주요 카테고리로 분할되는 여러 유형의 명령을 지원한다. 각 그룹은 3 유형의 명령, 즉, 셀과 연관된 마커를 세트 또는 리세트(reset)하는 명령과, 마커가 세트된 셀에 저장된 워드를 억세스하는 명령, 및 마커가 세트된 셀내에 저장된 워드를 정정하는 명령을 포함한다. 본 고안이 각 저장 워드와 연관된 1-비트 마커를 예시하지만, 본 발명의 보다 넓은 측면을 벗어나지 않고도, 각 워드의 상태를 코드화하기 위해 여러 비트가 이용될 수 있다.
우선적으로, 순방향 명령 그룹에 속하는 명령을 설명한다. 역방향 그룹에 있어서의 지시는 미러 이미지(mirror-image) 방식으로 작용하며, 이에 대해서는 후술할 것이다. 아래의 설명에 있어서, 용어, 심볼은 임의의 논리 비트 블록이다. 몇가지 응용에 있어서, 8비트 바이트들이 바람직한 구현일 수 있다. 게놈 스트링(genomic string)의 생물학적 처리와 같은 다른 응용에서는, 심볼이 4비트 엔티티(entity)일 수 있다.
순방향 명령
스트링 검색 및 삽입 동작을 위해, 입력 데이터 스트림은, 명령과 함께 한번에 한 심볼(예를들어, 문자)씩 CM(206)에 제공된다. 명령이 검색이면, 각 심볼은 CM(206)내에 현재 저장되어 있는 모든 심볼과 동시에 비교된다. 조건식 및 무조건식의 두가지 유형의 비교가 실행될 수 있다. 스트링의 첫 번째 심볼은 무조건식으로 검색되고, 후속하는 심볼들은 CM(206)에서 발견되었던 이전 심볼에 따른 조건식으로 검색된다.
그 동작이 삽입이면, 삽입 지점의 우측상의 CM(206)내의 심볼들이 한 위치씩 우측으로 시프트되고, 새로운 심볼이 삽입 지점에 저장된다. 본 발명의 일 실시예에서, 삽입 지점은 마커가 세트된 제 1 심볼의 위치이다.
본 발명의 다른 중요한 목적은, 상술한 바와 같이, CE(205) 시스템 아키텍쳐의 효율성 때문에, 검색 및 삽입의 두 동작이 단지 한 클록 사이클내에서 작동한다는 것이다.
스트링 삭제 동작에 있어서, 연속적인 심볼이 CM(206)내의 삭제 지점으로부터 독출되며, 이 지점의 우측상의 모든 심볼들은 한 위치씩 좌측으로 시프트된다. 여기에서 다시, 삭제 지점은 세트 마커를 가진 첫 번째 또는 마지막 저장 셀의 위치이다. 이러한 동작의 독출 및 시프트 요소는 동시에 실행되며 단지 한 클록 사이클이 소요된다.
상술한 동작을 구현한 명령에 대해 이제 설명할 것이다.
find 및 cfind 명령은 억세스 명령이다. 도 3 및 도 4의 흐름도에 도시된 바 와 같이, find 명령은 제어기를 통해 심볼과 함께 CM(206)에 제공되며, 그 심볼은 CM(206)에 의해 메모리 셀에 포함된 모든 심볼과 연관성 비교된다. 이러한 명령의 결과로써, 그의 콘텐츠가 주어진 심볼과 매칭되는 셀에 후속하는 모든 셀들의 마커가 세트된다. 모든 다른 마커는 리세트된다. 도 3의 블록들(302-314)은 이러한 동작을 막연하게 설명한 것이다. 예를들어, 본 발명에 있어서, 심볼 마커가 그 주변에 괄호로 세트되고, 스트링 "RON AND ROBERT"가 현재 CM(206)에 저장되어 있다고 가정하자. 명령 find(R)를 CM(206)에 제공하면, 그의 콘테츠는 "R[O]N AND R[O]BERT"로 변경된다. 두 개의 O 심볼의 마커가 세트되는데, 그 이유는 도 3의 블록(308)에 도시된 바와 같이, 그 둘이, 발견될 심볼인 'R'을 포함하는 셀에 후속하기 때문이다.
"conditional find"를 위한 'cfind'의 작업은 'find'와 유사하게 이루어진다. 즉, 심볼은 그 명령과 함께 CM(206)에 제공되고, CM(206)은 이 심볼에 대한 연관성 검색을 수행하지만, 이 경우에는, 도 5의 블록(322)에 도시된 바와 같이, 단지 이전에 세트된 마커를 가진 셀들 또는 라인 메모리(200)의 버퍼만이 비교에 포함된다. 그 결과, 매칭이 이루어진 셀에 후속하는 셀들의 마커들이 세트된다. 모든 다른 마커들은 리세트된다. 두 개의 'O'심볼들의 마커가 여전히 세트되어 있을 경우에는, 상술한 예시와 동일한 예를 이용하면, 명령 cfind(O)는 연관성 비교를 마킹된 셀로만 제한할 것이다. 그 둘은 'O'를 포함하고 있기 때문에, 그 둘의 비교는 성공할 수 있으며, 'O'를 포함하는 셀의 오른쪽 셀의 마커가 "RO[N] AND RO[B]ERT"와 같이 세트된다. cfind(B)가 현재 실행되고 있으면, 단지 두 번째 마킹된 셀의 성공적인 비교가 수행되어 E 심볼의 마커가 "RON AND ROB[E]RT"와 같이 세트된다. 도 5의 블록(324-326)에 도시된 바와 같이, 이러한 프로세스는, 모든 심볼 또는 데이터 소자가 검색될 때 까지 계속되며, 그에 의해 성공적인(또는, 대안적으로 성공하지 못한) 매칭이 제어기(255)에 출력된다.
본 명세서에서 설명한 바와 같이, 도 3이, 입력된 모든 명령에 대해 전반적으로 응용할 수 있는, 본 발명의 기본적인 기능성을 설명하고 있음을 쉽게 알 수 있을 것이다. 따라서, 예를들어 블록(302)과 관련하여 설명한 '문자 스트링'은, 조작되거나 검사되는 특정의 데이터 및 발생된 명령의 본질에 따른 하나 이상의 데이터 소자를 포함한다. 또한, 도 3에서는, 로딩된 문자 스트링이, CM(206)에서 수용하고 있는 것보다 더 크고, 그에 따라 검사를 위해 그 문자 스트링을 라인 메모리(200)에서 CM(206)으로 조금씩 시프트할 필요가 있다고 하였지만, 항상 그런 것은 아니다. 도 4의 블록(301)에 도시된 바와, 대안적인 방법으로는 CM(206)이 수용할 수 있는 크기를 가진 이 문자 스트링들을 CM(206)에 직접 로딩하는 것을 포함한다. 특정의 명령에 따라 CM(206)으로 로딩된 문자 스트링을 검사하는 것은 블록(303)에서 이루어지고, 블록(305)은 적절한 경우에 마커를 세트 또는 리세트한다.
CM(206)이 검사받을 데이터를 수용할 수 있는 이러한 상황에서는, CE(205) 및 라인 메모리(200)를 선택적으로 바이패싱(bypassing)함에 의해, 처리 시간 및 에너지 소비가 그에 상응하게 절약됨을 쉽게 알 수 있을 것이다.
다른 제안된 명령은 read-순방향 명령이다. read-순방향 명령에 의해 CM(206)은 첫 번째 셀, 즉 마커가 세트된 최 좌측 셀에 저장된 심볼로 되돌린다. 본 기법에서 허용된 실행에 따라, CM(206)의 최 좌측 심볼은 어드레스 0을 가지며, 저장 용량이 M 심볼일 경우, 최 우측 심볼은 어드레스 M-1을 가진다.
독출 동작이 실행되면, 곧바로, 방금 독출된 셀의 마커는 리세트되고, 방금 독출된 셀의 옆에 있는 셀의 마커는 세트된다. CM이 "RO[N] AND RO[B]ERT"를 포함한다고 가정하자. read-순방향 명령하면, CM은 심볼 'N'을 출력하며, 최 좌측 마커는 "RON[] AND RO[B]ERT"와 같이 변경된다. 스페이스 심볼이 바로 마크된다. 도 6은 블록(330)과 같은 이러한 프로세스를 도시한 것으로, 그의 작용은, read-순방향 명령이 발생하면 도 3의 블록(308)에 포함된다.
다른 제안된 명령은 insert-명령이다. 삽입 명령은 심볼 X와 함께 CM(206)에 제공된다. 이러한 명령은 단지 첫 번째, 또는 최 좌측의 마킹된 셀에 대해서만 유효하다. 심볼 X가 삽입되면, 마커를 포함한, 첫 번째 마킹된 셀의 좌측에 있는 모든 셀의 콘텐츠 및 상태가 한 위치씩 우측으로 시프트되며, 심볼 X가 첫 번째 마킹된 셀의 이전 위치에 저장된다. 새로운 셀을 방금 수신하였던 셀의 마커는 리세트된다. 이 셀의 바로 우측에 있는 셀의 마커는 세트된다. 예를들어, CM(206)이 "R[O]N AND R[O]BERT"를 포함한다고 하면, insert(X)에 의해 CM(206)의 콘텐츠는 "RX[O]N AND R[O]BERT"로 될 것이다. 도 7의 블록(332)은 이러한 처리를 나타낸다.
다른 제안된 명령은 delete 명령이다. delete 명령의 작업은 첫 번째 마킹된 셀에 저장된 심볼을 제거하고, 이 셀의 오른쪽에 있는 모든 셀의 모든 콘텐츠를 왼쪽으로 시프트함에 의해 이루어진다. CM이 "RO[N] AND RO[B]ERT"를 포함한다면, 삭 제 명령이 유효하게 된 후, CM은 "RO[]AND ROBERT"를 포함한다. 도 8의 블록(334)은 이러한 처리를 나타낸다.
다른 제안된 명령은 next 명령이다. next 명령은 파라메타를 갖지 않으며, 첫 번째 또는 최 좌측 마킹된 셀의 마커를 리세트한다. 이 방식에서는, 여러 마커가 세트되면, 이 명령이 반복적으로 이용되어, CM(206)의 모든 마킹된 셀에 대한 억세스가 가능하게 된다. 예를들어, CM(206)이 "R[O]N AND R[O]BERT"를 포함한다면, next의 실행은 CM(206)의 콘텐츠를 "RON AND R[O]BERT"로 변경시킨다. 도 9의 블록(335)은 이러한 처리를 나타낸다.
도 1로 되돌아가서, index 출력(13)은 CM(206)내의 첫 번째 마킹된 셀의 선형 어드레스를 운반한다. 예를들어, CM(206)의 첫 번째 또는 최 좌측 셀의 마커가 세트되면, index는 0으로 된다. 두 번째 셀이 마킹되면, index는 1로 된다. CM(206)이 스트링 "RO[N] AND RO[B]ERT"를 포함하고, 스트링 "RON"이 CM(206)의 최 좌측 셀에 저장되면, index는 2로 되는데, 이는 심볼 'N'이 CM(206)의 어드레스 2에 저장되기 때문이다.
다른 제안된 명령은 write-one 명령이다. write-one 명령은, CM(206)의 첫 번째, 또는 최 좌측 마킹된 셀에 기록되는 심볼S와 함께 CM(206)에 제공된다. 이 셀의 마커는 리세트되고, 선형적으로 뒤따르는 셀의 마커가 세트된다.
다른 제안된 명령은 write-all 명령이다. write-all 명령은, 마커가 세트된 CM(206)내의 모든 셀에 동시에 및 한 클록 사이클내에 기록되는 심볼S와 함께, CM(206)에 제공된다. 이 셀들의 마커들은 리세트되고 이 셀들에 후속하는 셀들의 마커는 세트된다.
다른 제안된 명령은 write 명령이다. write 명령은 어드레스 A 및 어드레스 A의 CM(206)의 셀에 저장되는 심볼 S와 함께, CM(206)에 제공된다. 이 명령은 RAM의 기록 동작과 유사하다. 어드레스 A의 셀과 관련된 마커는 리세트되고, 선형적으로 뒤따르는 셀의 마커는 세트된다.
read 명령은 어드레스 A와 함께 CM(206)에 제공되며, read 명령에 의해 CM(206)은 어드레스 A에 위치한 그의 셀의 콘텐츠를 출력한다. 이 명령은 RAM의 독출 동작과 유사하다. 이 동작에 의해 억세스된 셀의 마커는 정정되지 않는다.
다른 제안된 명령은 jump 명령이다. jump 명령은 CM(206)에 제공되어, 동일한 접두부(prefix) 및 접미부(suffix)(즉, 동일한 시퀀스가 두 개의 스트링의 시작부이고 동일한 시퀀스가 두 개의 스트링의 종료부임)이되, 길이가 다를 수 있는 다른 중간 섹션을 가진 가변 길이의 문자 스트링이 CM(206)에 저장되는 상황을 어드레싱하고, 또한, 모든 스트링의 접두부의 마지막 심볼이 마킹되면, CM(206)은 하나의 피 연산자를 획득하는 jump라고 하는 동작을 지원하는데, 그의 작용은 예시를 통해 가장 바람직하게 설명된다.
CM(206)이 그의 다른 저장 부분에 두 개의 스트링, 즉 "AAA%BB%CCC"와 "AAA%DDD%CCCC"(여기에서, %는 장래에 특정 응용을 위한 분리 문자로서 이용되는 고유 심볼을 나타냄)을 포함하고 있다고 하자. 또한, 접두부 AAA를 뒤따르는 %와 관련된 마커가, 예를들어 명령 find(A), cfind(A)를 실행함에 의해 "AAA[%]BB%CCCC"와 AAA[%]DDD%CCCC"로 세트되었다고 하자. s가 심볼인 jump 명령의 목적은, 그 마커를 그들의 현 위치로 부터 접미부 CCCC의 시작부인 마킹되지 않은 %심볼로 이동시키고, 그 다음 그들을 s 심볼로 대체하기 위한 것이다.
예를들어, 명령 jump($)의 첫 번째 예시(instantiation)후, 상술한 예시의 CM(206)내의 두 개의 스트링은 "AAA%[B]B%CCC" 및 "AAA%[D]DD%CCCC"로 변경될 것이다. 두 번째 jump($) 명령이 발생하고 나면, 그 스트링들은 "AAA%B[B]%CCCC" 및 "AAA%D[D]D%CCCC"로 된다. 세 번째 jump($)이 발생하고 나면, 그 스트링들은 "AAA%BB$CCCC" 및 " "AAA%DD[D]%CCCC"로 된다. 네 번째 jump($)이 발생하고 나면, 그 스트링들은 "AAA%BB$CCCC" 및 " "AAA%DDD$CCCC"로 된다. 따라서, CM(206)은 jump 명령에 응답하여, 다음과 같은 동작, 즉 마커가 세트된 모든 셀이 그들의 심볼을 특정 분리 문자 심볼(본 예시에서는 %-부호)과 비교하는 동작을 실행한다. 매칭이 발견되면, 특정 분리 문자를 명령(본 예시에서는 $ 부호)을 구비한 심볼 s로 대체하고, 셀의 마커를 리세트한다. 그렇지 않고, 매칭이 발생하지 않으면, 셀의 마커를 리세트하고, 바로 오른쪽에 있는 셀의 마커를 세트하여, 실질적으로 마커를 오른쪽으로 한 위치 이동시킨다.
도 10의 블록(336)은 이러한 처리를 도시한다.
jump 명령은, 심볼의 스트링이 필드 식별자나 분리 문자 쌍 및 데이터 값들을 포함하는(식별자들은 고정된 길이를 가지지만, 데이터 값을 포함하는 필드는 그렇지 않음) 데이터베이스 응용에서 중요하다. 이러한 방식에 있어서, 본 발명의 장점은, 문자 스트링내의 필드(각 필드는 불규칙한 크기의 데이터 값을 포함하되, 그들의 콘텐츠와 상관없이 문자 스트링내의 특정 데이터 필드를 마킹함)를 검사하는 방법을 제공하는 것이다. 또한, 문자 스트링내의 마킹된 셀의 각각의 비교가 한 클록 사이클내에 이루어짐에 따라, 문자 스트링의 검사는 빠르고 효율적인 방식으로 완료될 것이다.
본 발명의 다른 중요한 측면은, jump 명령이 문자 스트링내의 분리 문자 심볼을 기 설정된 위치 표시 심볼로 대체한다는 것이다. 그러므로, 위치 표시 심볼은 특정 데이터 필드의 단부를 길이와 무관하게 마킹하는데 이용되며, 대안적으로 검색 대상인 데이터 필드에 후속하는 데이터 필드를 마크 할 수 있도록 하는데 이용된다.
상술한 바와 같이, jump 명령에 의해 CM(206)에 저장된 다수의 문자 스트링을 병렬로 검사하는 것이 가능하게 되고, 단일 클록 사이클내에서 그에 따라 분리 문자 심볼의 각각의 식별 및 선택적 대체가 이루어지는 문자 스트링의 각각의 분리 문자 심볼을 병렬로 식별할 수 있게 된다.
역방향 명령(reverse command)
지금까지 설명한 검색, 삽입 및 삭제 메카니즘은 항상 CM(206)의 첫 번째 마킹된 셀에 적용되며, 그들이 다른 셀에 영향을 미칠 경우, 첫 번째 마킹된 셀의 오른쪽상의 셀에 영향을 준다. 또한, CM(206)은 후방향 또는 역방향 발견, 삽입, 삭제, 다음(next) 및 인텍스 동작을 지원하며, 그 작용들은 CM(206)의 마지막 마킹된 셀에 적용된다. 그들의 작용은 상술한 순방향 발견, 삽입, 삭제, 다음 및 인덱스 동작의 미러(mirror) 동작이다.
reverse-find 명령은 심볼 s와 함께 CM(206)내에 제공되는 명령으로써, 심볼 s를 포함하는 셀의 왼쪽에 있는 셀의 마커를 세트한다. 모든 다른 마커는 리세트된다. CM(206)이 "JOHN AND JOHNNY"를 포함하면, reverse-find(N)는 마커를 "JO[H]N [A]ND JO[H][N]NY"로 세트한다.
reverse-cfind 명령은 역방향 조건적-발견을 위한 명령으로서, 심볼 s와 함께 CM(206)에 제공되며, CM(206)은 단지 마킹된 셀만을 연관성 검색한다. 심볼 s의 사본을 포함하는 모든 그러한 셀들의 좌측 이웃에 있는 셀의 마커가 세트된다. 다른 모든 마커는 리세트된다. CM(206)이 "JO[H]N [A]ND JO[H][N]NY"을 포함한다고 하면, reverse-cfind(H)는 마커를 "J[O]HN AND J[O]HNNY"로 변경한다.
reverse-insert 명령은 심볼 s와 함께 CM(206)에 제공되는 명령이다. 최좌측 마킹된 셀 및 그의 오른쪽에 있는 모든 셀들의 콘텐츠는 우측으로 하나씩 시프트되며, 심볼 s는 최좌측 마킹된 셀에 저장된다. 이 셀의 마커는 변경되지 않는다. 예를들어, "JO[H]N AND JO[H]NNY"에서 'X'를 역방향 삽입하면, 새로운 CM(206)의 콘텐츠는, "JO[X]HN AND JO[H]NNY"로 된다.
reverse-delete 명령은 최 좌측 셀의 심볼을 독출 또는 제거하고, 그의 오른쪽에 있는 모든 셀의 콘텐츠를 하나씩 왼쪽으로 시프트하는 작용을 하는 명령이다. 최 좌측 마킹된 셀의 마커는 리세트되며, 그의 왼쪽에 있는 셀의 마커가 세트된다. 예를들어, CM(206)이 "JO[H]N AND JP[H]NNY"이면, reverse-delete의 결과는, "J[O]N AND JO[H]NNY"이다.
제한된 범위 명령(limited-range command)
상술한 바와 같이, CM(206)은, 어드레스가 두 개의 추가적인 명령에 의해 세트될 수 있는 몇몇 번호보다 더 큰 셀 에만 영향을 미치는 동작을 지원한다. 동작 도메인이 그 제한보다 더 큰 어드레스를 가진 셀로 제한되는 명령을 제한 형 명령이라 한다. 이 경우에, 검색, 삽입 및 삭제 동작의 범주는 CM(206)내의 전체 M 워드가 아니라, 보다 작은 섹션이다. 이 경우, find, cfind, insert 또는 delete 동작이 실행되면, CM(206)의 셀의 인접 블록의 셀만이 영향을 받는다. 이러한 셀 블록은 좌측으로는 CM(206)의 어드레스 디코딩 섹션에 배치된 특정 어드레스 레지스터에 의해 제한되며, CM(206)의 가장 마지막, 즉, 최 우측 셀까지 연장된다.
set-limit는, 제한형 명령을 위한 하부 제한 어드레스를 첫 번째, 또는 최 좌측 마킹된 셀의 어드레스로 세트시키는 명령이다. 예를들어, CM(206)이 스트링"RO[N] AND RO[B]ERT"를 포함하고 있으면, set-limit 명령은 제한 어드레스를 2로 세트하는데, 이는 최 좌측 마킹된 심볼이 CM(206)내의 어드레스 2에 있는 'N'이기 때문이다.
set-limit-address는 어드레스 A와 함께 CM(206)에 제공되며, 제한 어드레스가 유지되고 있는 내부 저장부에 이 어드레스를 저장시키는 명령이다.
limited-find, limited-cfind, limited-reverse-find, 및 limited-reverse-cfind는 find, cfind, reverse-find 및 reverse-cfind 명령과 유사하게 동작하나, 단지 어드레스가 제한 어드레스 이상인 셀에만 적용되는 제한형 명령이다.
limited-write-all 명령은 심볼 s와 함께 CM(206)에 제공되어, write-all 명 령과 동일한 방식으로 작동한다. 그것은, 단지 어드레스가 제한 어드레스 이상인 모든 마킹된 셀내에 심볼 s를 기록한다.
여러개의 불 신호(boolean signal)가 CM(206)에 의해 출력되어 그의 마킹된 셀의 상태를 반영한다.
1) CM(206)내에 적어도 하나의 마킹된 셀이 있으면, CM(206)은 하나의 신호를 1로 세트하고, 다른 것들은 0으로 세트한다.
2) 모든 CM(206)내에 정확히 하나의 마킹된 셀이 있으면, CM(206)은 하나의 신호를 1로 세트하고, 다른 것들은 0으로 세트한다.
3) 마지막 조건적 발견 유형의 명령(순방향, 역방향 또는 제한형)이 성공하지 못했고(세트된 마커가 없고), CM(206)이 발견-유형의 동작으로 자동 반전되어 몇 개의 마커를 세트해야 하면, 하나의 신호가 1로 세트된다.
4) 기 설정된 2진 패턴을 가진 하나 또는 여러개의 문자들과 관련된 마커가 세트되면 하나의 신호가 CM(206)에 의해 1로 세트된다. 이 문자들은 엠프티(empty) 심볼 위치 또는 무효(invalid) 심볼 위치를 나타내는데 이용되며, 하나의 동작에 의해 세트되는 그들의 마커는 외부 제어기(255)에 의해 어드레스되어야 하는 특정 조건을 나타낸다.
5) 버퍼내의 어디에도 세트된 마커를 가진 심볼이 포함되어 있지 않거나 또는 RAM 제어기가 CE내의 모든 버퍼를 로딩해서 로딩될 버퍼가 남아있지 않음을 나타내기 위해, CE는 하나의 신호를 1로 세트한다.
코넥스 엔진
상술한 바와 같이, 코넥스 엔진(CE)(205)은 도 2에 도시되어 있다. 코넥스 엔진은 RAM으로 구현된, 라인이라고 하는 라인 메모리(200)내의 버퍼와 CM(206)내에 저장된 심볼의 스트링을 관리하기 위한 회로이다. 각 라인은 CM(206)의 용량과 동일한 용량을 가지며, (N+1) 비트의 M워드를 포함한다. CE(205)는, 컴퓨터 또는 프로세서와 같은 외부 엔티티로 부터의 제어하에, 라인이나 버퍼를 포함하는 라인 메모리(200)(LM)에 기록되거나 라인 메모리로부터 독출할 CM(206)의 전체 콘텐츠가 교환될 수 있게 한다. 기록 동작은 라인의 콘텐츠를 CM(206)에 저장한다. 독출 동작은 CM(206)의 콘텐츠를 라인에 저장한다. 두 동작을 하는데 한 사이클이 소요된다. 외부 프로세서는, insert 또는 write 명령을 이용하여, CM(206)에 정보를 기록할 수 있으며, data-in 버스(10)를 통해 심볼을 제공할 수 있다. 심볼은 CE(205)로부터 두가지 경로를 통해 독출될 수 있다. 하나는, 예를들어, CM(206)을 통해 command 라인(14)상에 read 명령을 발생하고, data-out 버스(11)상의 심볼을 가로채는 것이다. 다른 경로는, 구현에 따라, LM(200)내의 라인으로부터 직접 하나의 심볼 내지 여러개의 심볼을 포함하는 워드를 독출하는 것이다. 이 경우, 워드의 어드레스는 word-address 버스(203)를 통해 CE(205)로 전송되며, 그 워드는 data-word 버스(204)로부터 획득된다. data-ram 버스(100)에 의해 CM(206)의 콘텐츠가 LM(200)의 주어진 라인에 저장되거나 그로부터 독출된다. 이 버스는 M*(N+1) 와이어를 포함하며, 그 버스에 의해 전체 CM(206)이 한 클록 사이클내에 독출되거나 기록된다.
도 16은 LM을 형성하는 두 요소의 블록도이다. 하나는 라인이 저장되는 RAM(130)이고, 다른 하나는 RAM 제어기(120)이다. RAM 제어기의 목적은 CM(206)에 라인을 신속하게 제공하여, RAM의 라인 콜렉션에 저장된 심볼 스트링을 신속하게 처리하기 위한 것이다. 이러한 목적을 위해, RAM 제어기는 RAM 통과를 실행하며, RAM에 저장된 라인 콜렉션을 스캔하고, 처리를 위해 선택된 서브셋을 CM(206)에 전송한다. RAM 제어기는 RAM내의 간 라인마다 2비트씩 저장되게 한다. 첫 번째 비트는, 그와 관련된 라인이 현재의 통과 동안에 CM(206)에 전송되어야 하는지를 나타낸다. RAM 제어기는, 첫 번째 비트가 1로 세트되는 라인들의 연속적인 어드레스를 자동적으로 일정 시간에 생성하고, RAM 제어기에 의해 그들의 콘텐츠는 처리를 위해 CM(206)내에 저장되고 CM(206)으로부터 다시 기록된다. CM(206)에 의해 바로 처리된 라인이 RAM에 다시 저장되면, no-flag 신호(15)의 값은 RAM 제어기에 의해 관리되는 그 라인의 두 번째 비트에 저장된다. 현재의 통과가 끝나면, RAM 제어기는 모든 라인과 관련된 모든 두 번째 비트의 값을 그들과 관련된 첫 번째 비트로 복사한다. 이러한 새로운 비트 콜렉션은, 어느 라인의 마커가 세트되었는지 및 다음 통과에서 처리되어야 하는지를 나타낸다.
RAM내의 모든 라인이 유효 정보를 포함하는 것은 아니며, 단지 일부만이 유효 정보를 포함하고, 모든 라인이 인접하게 저장되며, 라인 어드레스 0에서 시작하는 경우에는, 그의 초기 통과를 유효 라인 그룹으로 제한하기 위해, 마지막 유효 라인의 어드레스가 RAM 제어기에 지정될 수 있다. 이러한 어드레스는, 외부 처리 장치가 limit-address(207) 신호를 이용하여 RAM 제어기에 제공한다.
LM(200)의 L 라인들의 콜렉션은 CM(206)을 포함하는 동일 실리콘 칩상에 구현되거나, 선반 제고(off-the-shelf) 메모리 회로를 이용하여 실리콘 칩 외부에 구현될 수 있다. 두 경우에 있어서, CE(205)는 L라인에 저장된 정보를 관리하는데 이용되는데, 이 관리는, 라인에 저장된 정보를 상술한 섹션에서 설명한 스트링 명령을 실행하는 CM(206)으로 가져오고, CM(206)의 콘텐츠를 라인으로 되가져오며, 스트링 동작이 CM(206)의 M심볼 저장 용량 보다 훨씬 더 긴 스트링에서 실행되게 함으로서 이행된다.
삽입 및 삭제 동작이 필요한 경우, 라인은 용량만큼 심볼로 충진되는 것이 아니라, 단지 부분적으로 충진된다. 따라서 이 동작하에서, CM(206)내의 심볼 스트림의 확장 및 수축이 가능하게 된다. 그 경우에, 유효 심볼을 포함하고 있지 않은 CM(206)의 셀들은 처리중인 스트링내에서 발견되지 않은 기 설정된 이진 패턴과 함께 초기화된다. CM(206)은 interrupt라고 하는 외부 처리 엔티티를 위한 신호(도 2의 101)를 생성한다. 이 신호는, 이러한 특정 이진 패턴을 포함하는 CM(206)의 하나 또는 여러개의 셀들의 마커가 세트되면 구동된다.
CM(206) 및 그의 외부 접속
서로 다른 두가지 유형의 접속이 있다. 한 유형은 주변 장치를 가진 CM(206)의 상호 접속과 대응하고, 다른 유형은 회로의 확장을 위해 필요한 신호, 즉 저장량의 증가를 위해 다수의 CM(206) 회로가 서로 접속되는 경우에 필요한 신호에 대응한다.
아래의 설명에서는, 소자 CM(206)블록이 M 워드의 메모리를 저장할 수 있으며, 각 워드는 N+1 비트(심볼을 위한 N 비트 및 마커를 위한 1비트) 길이를 가진다고 가정한다.
도 11에 도시된 바와 같이, CM(206)의 시스템 접속은 아래에 목록으로 개시된다. 괄호안의 번호는 각 신호에 대한 비트 수를 나타낸다. 로그 함수가 이용되는 경우 로그의 밑수는 2이다.
·data-in(M) : CM(206)내의 심볼 입력을 위한 N비트 워드의 데이터 입력(10).
·data-out(M) : CM(206)으로부터 심볼을 독출하기 위한 N-비트 워드의 데이터 출력(11).
·address(log(N)) : 로그(N) 비트(로그( )의 로그 밑수는 2이다)의 어드레스 입력(12).
·data-ram : 양방향 데이터 입력(100) 및 M*(N+1) 비트의 출력으로서, 저장 버퍼 또는 라인중 하나의 콘텐츠가 RAM(200)에 기록되거나 RAM(200)으로부터 독출됨.
·index(log(M)) : 순방향 또는 역방향 동작이 마지막에 실행되었지는에 따른, 첫 번째 또는 마지막 마킹된 셀의 어드레스를 홀딩하는 log(M) 비트의 출력(13).
·interrupt(1) : 이 신호는 외부 처리 엔티티를 위해 CM(206)이 생성한 것 으로, 엠프티 또는 무효 조건을 나타내는데 이용되는 기 설정된 특정 이진 구성을 포함하는 하나 이상의 셀들의 마커가 세트됨을 나타냄.
·command(5) : CM(206)에 의해 실행될 동작을 나타내는 명령 코드에 대한 5-비트 입력(14).
·no-flag(1) : CM(206)이 마킹된 셀을 포함하고 있지 않음을 나타내는 이진 출력 신호(15).
·no-eq(1) : 마지막 조건적 발견 부류 명령(순방향, 역 방향 또는 제한형 cfind)이 마커들중 임의의 것을 세트하지 못함을 나타내는 이진 출력 신호(16).
·one-flag : CM(206)이 정확히 하나의 마킹된 셀을 포함함을 나타내는 이진 출력 신호(17).
·clock : CM(206)의 동작을 제어하는 클록 신호를 위한 입력 신호(24).
신호 data-in, addr 및 com은 능동 클록 에지(active clock edge)와 관련된 셋업(setup) 및 홀드 타임(hold time)을 가진다. 신호 data-out, index, no-flag, no-eq, 및 one-flag는 메모리 억세스와 관련된 지연후에 안정화된다. 이러한 지연은 클록 신호의 능동 에지와 관련되어 측정된다. 여러개의 CM(206) 회로 또는 모듈이 서로 접속되면, 내부 시프트 레지스터를 연장시키는 1차원 어레이에 있어서, 여러 신호가 이용되어, 선형 방식으로 CM(206) 모듈을 링크시킨다. 이러한 신호는 도 1에 도시되어 있으며, 이하에서 설명한다.
·data-left-in(N+2) : 이전 모듈로부터 수신 것으로, 심볼(M비트)과, 그의 관련 마커(1비트) 및 그 마커와 관련된 비교기의 출력(1비트)의 이진 표현을 전달하는 신호(26).
·data-left-out(N+2) : 이전 모듈에 대해 생성된 신호(25)이며, 심볼(M 비트), 관련 마커(1 비트) 및 마커와 관련된 비교기의 출력의 이진 표현을 전달함.
·data-right-in(N+2) : 다음 모듈로부터 수신된 신호(19)이며, 심볼(M 비트), 관련 마커(1 비트) 및 마커와 관련된 비교기 출력의 이진 표현을 전달함.
·data-right-out(N+2) : 다음 모듈에 대해 생성된 신호(18)이며, 심볼(M 비트), 관련 마커(1 비트) 및 마커와 관련된 비교기 출력의 이진 표현을 전달함.
·line-in(2) : X 트랜스코더 회로로부터 수신되어, 구조 확장을 위해 이용된 두개의 신호(23).
·line-out(1) : X 트랜스코더 회로에 대해 생성된 신호(22).
·column-in : Y 트랜스코더 회로로부터 수신되어, 구조 확장을 위해 이용된 두개의 신호(20).
·column-out : Y 트랜스코더 회로를 위해 생성된 신호(21).
마지막 4 신호 그룹에 대해서는, 내부 구조 라고 제목이 붙여진 부분에서 보다 상세히 정의된다. 이들 8개의 접속이 메모리 확장을 위해 사용되지 않는다면, CM(206) 시스템의 적절한 동작을 위해, 그들은 종래의 기술을 이용하여 적절하게 접속 및/또는 종결되어야 한다.
CM(206)의 내부 구조
도 12는, CM(206)을 포함하는 셀들(30)의 2차원 어레이와, 그것을 다른 CM(206) 또는 CE(205) 회로와 인터페이스 하는데 사용된 신호들과, 셀의 선택이 가능하게 하고, 마크된 셀의 위치에 관한 상태 정보를 보고하는 회로를 도시하는 블록도이다. 셀 어레이는 2차원 어레이로 구성된 N+1 비트의 M셀을 포함한다. 2차원 방식은 두 가지의 이유 때문에 선택된다. 첫째는, 실리콘 영역의 이용을 최대화하기 위해서이고, 둘째는, CM(206)에서의 신호 전파와 관련된 지연을 최소화하기 위해서이다. RAM 회로에서 발견되는 전형적인 디코더를 이용하는 대신에, CM(206)은 트랜스코더 회로를 사용하는데, 그것은 실행된 명령에 따라, 어드레스가 코딩, 디코딩 및 트랜스코딩될 필요가 있기 때문이다. 2차원 방식은 2개의 트랜스코더 회로 이용을 필요로 하며, 각 트랜스코더 회로는 각각의 차원을 위한 것이다.
이와 달리, 본 발명의 보다 넓은 양상으로부터 벗어나지 않고서도, CM(206)은 1차원 메모리 셀 어레이로서 형성될 수 있음을 쉽게 알 수 있을 것이다.
도 12에 도시된 CM(206)의 내부 구조는 다음의 서브시스템을 포함한다.
·symbol cell : 심볼 저장부 또는 동적 메모리 셀은 M 셀의 2차원 어레이(30)로 구성되며, 각 셀은 메모리에 포함된 각 심볼에 대응한다(첫 번째 셀은 2차원 어레이의 제 1 라인상 및 제 1 컬럼에 위치됨). 표현을 위한 목적으로, 표 I(아래)에서는 라인 번호들이 시작 지점부터(bottom up) 커지는 순서로 매겨지며, 컬럼 번호들은 좌측으로부터 우측으로 커지는 순서로 매겨진다.
·data-ram : 본 명세서에서 가정한 저장 라인에 저장된 M 심볼 및 그들의 관련된 마커가 심볼 셀 영역(30)에 배치되게 하고, 외부 데이터 저장부에 기록 및 그로부터 판독되도록 하는 M*(N+1) 비트의 양방향 버스(100). 이러한 전송에서 포함되는 라인의 선택은 X 트랜스코더 회로(39)에 의해 생성된 라인 선택(106) 신호에 의해 수행된다.
·interrupt : 이 1비트 신호는 엠프티 셀 또는 무효 심볼을 포함하는 셀을 나타내는데 사용된 사전정의된 고유 이진 패턴을 포함하는 CM(206)내의 하나 또는 수 개의 셀에 의해 생성되며, 이러한 또는 이들 셀에는 그들과 관련된 마커가 세트된다.
·X 트랜스코더 : 회로(39)는 Y 트랜스코더 회로(40)와 결합하여, CM(206)내의 셀을 어드레싱 및 액세싱하는데 사용되는 논리를 포함한다.
·Y 트랜스코더 : 회로(40)는 X 트랜스코더(30)와 결합하여 셀의 어레이내의 정보를 어드레싱 및 액세싱하는데 필요한 논리를 포함한다.
·2입력 AND 게이트 : 게이트(34)는 두 트랜스코더 회로에 의해 생성된 eq 신호(36, 41)를 수신하여, one-flag(35)를 생성한다.
·두 트랜스코더 회로는 CM(206)의 콘텐츠를 3개의 영역, 즉 첫 번째 마킹된 셀 이전에 위치된 셀들의 콜렉션, 첫 번째 마킹된 셀, 첫 번째 마킹된 셀로 시작하는 셀들의 콜렉션으로 분할한다.
이하에 리스트된 신호들은 CM(206)의 내부 부품들상에서 동작한다. M 셀을 포함하는 어레이의 2차원성 때문에, 그리고 최하위 또는 최상위 어드레스 마킹된 셀의 어드레스가 계산되어야 하기 때문에, 트랜스코더 회로의 동작은 수 개의 주요 신호, 즉 line-out, line-in, column-out 및 column-in 신호에 의존한다.
·line-out : line-out 신호(42)는
Figure 112004005470992-pct00001
개다. 각각의 line-out 신호는 2차원 셀 어레이의 하나의 로우(row)와 관련되며, 해당 로우가 마킹된 셀을 포함하는 경우 액티브로 되고, 그렇지 않은 경우에는 인액티브로 된다.
·column-out : 마찬가지로,
Figure 112004005470992-pct00002
개인 column-out 신호(44)는 2차원 셀 어레이의 각 컬럼에 대응한다. column-out 그룹의 신호는, 그의 대응하는 컬럼이 제 1 액티브 라인상에 마킹된 셀을 포함하는 경우 액티브로 되며, 그렇지 않은 경우에는 인액티브로 된다.
·line-in : line-in 신호(43)는
Figure 112004005470992-pct00003
개다. 2차원 어레이의 각 로우는 X 트랜스코더로부터 2개의 신호, 즉 line-in[1] 및 line-in[0]을 수신하며, 이 신호들은 다음의 조건을 나타낸다.
- 로우가 마킹된 셀을 포함하는 제 1 로우인지,
- 로우가 마킹된 셀을 포함하는 제 1 로우와 동일하거나 그 보다 큰지.
예를 들어, 이하에 개시된 콘텐츠를 갖는, 8x8 2차원 셀 어레이를 갖는다고 하자. 이때 각 괄호는 마킹된 셀내에 심볼을 포함한다. 최상부 로우 및 제 1 컬럼상의 번호는 CM(206)의 로우 및 컬럼을 액세스하는데 사용된 번호 체계를 나타내며, 어레이에 저장된 심볼은 아니다.
Figure 112004005470992-pct00004
그 다음, 로우 0, 1, 2에서 7까지의 순으로 리스트된 line-out 신호(42)는 00001011과 동일하다. line-in 신호(43)에서의 line-in[1] 신호를 동일 순서로 나타내면, 00001000이고, line-in 신호(43)의 line-in[0]은 00001111이다.
·column-in(45) : Y 트랜스코더 회로의 각 컬럼은 이하의 조건을 나타내는 두 개의 출력 신호, 즉 column-in[0] 및 column-in[1]과 관련된다.
- 컬럼이 2차원 어레이의 첫 번째 마킹된 셀을 포함하는지,
- 컬럼이 첫 번째 마킹된 셀을 포함하는 컬럼과 동일한지, 혹은 그것이 상위 어드레스의 것인지.
위에서 도시한 8x8 2차원 어레이와 동일한 예를 이용하여, 7번 컬럼부터 0번 컬럼까지의 관련 신호를 나열하면, column-in 신호(45)는 값 00100000 및 00111111을 포함한다.
CM(206)의 셀의 외부 구조
전술한 data-in, data-out 및 com 신호 이외에도, 도 13 및 14에 도시된 바 와 같이, 이하의 신호들은 심볼 및 마커를 포함하는 요소 셀을 그의 주변 장치와 연결한다.
·data-left-out : N+2 비트 신호(25)는 이전 셀 쪽으로 전파되는 정보를 전달하며, 셀에 저장된 심볼 및 그와 관련된 마커 비트를 전달하는 N+1 비트 left-cell-out 신호로 구성된다.
·left-eq-out(1) : 셀내의 비교기(55)에 의해 생성된 출력 신호(54).
·data-right-out(N+2) : N+2 비트 신호는 다음 셀 쪽으로 전파되는 정보를 전달하며, 셀에 저장된 심볼 및 그와 관련된 마커 비트를 전달하는 N+1 비트 right-cell-out 신호로 구성된다.
·right-eq-out(1) : 셀내의 비교기의 출력 신호(55).
·data-left-in(N+2) : N+2 비트 신호는 이전 셀로부터 수신된 정보를 전달하며, 이전 셀에 저장된 심볼 및 그와 관련된 마커 비트를 전달하는 N+1 비트 left-cell-in 신호(52) 및 이전 셀내의 비교기(55)의 출력을 전달하는 1 비트 신호 left-eq-in(53)으로 구성된다.
·data-right-in(N+2) : 이들 N+2 비트 신호는 다음 셀로부터 수신된 정보를 전달하며, 다음 셀에 저장된 심볼 및 그와 관련된 마커 비트를 전달하는 N+1 비트 right-cell-in 신호(58) 및 다음 셀내의 비교기(55)의 출력인 1 비트 신호 right-eq-in(56)으로 구성된다.
·line-out(1)은 마커의 반전된 값을 생성하는 개방 드레인 출력이다. 그것은, 2차원 어레이의 동일 라인상의 다른 모든 셀들로부터의 모든 line-out 신호(42)와 병렬로 접속되며, X 트랜스코더 회로(39)의 입력들 중 하나가 된다.
·column-out(1)은 1 비트 신호(44)이며, 마킹된 셀을 포함하는 제 1 라인상에만 마커의 반전된 값을 생성하는 개방 드레인 출력이다. 그것은 2차원 어레이의 동일 컬럼에 있는 셀의 모든 column-out 출력과 병렬로 접속되며, Y 트랜스코더 회로(40)의 입력들 중 하나가 된다.
·line-in(2) : line-in[1] 및 line-in[0]은 X 트랜스코더 회로(39)에 의해 생성된 line-in 신호(43)를 형성하며, 이하의 조건을 나타낸다.
- line-in[1] : 셀이 2차원 어레이의 첫 번째 마킹된 셀을 포함하는 라인에 속함.
- line-in[0] : 셀이 2차원 어레이의 첫 번째 마킹된 셀을 포함하는 라인과 동일한 라인 혹은 상위 어드레스를 갖는 라인에 속함.
·column-in(2) : column-in[1] 및 column-in[0]은 column-in 신호(45)를 형성하며, Y 트랜스코더 회로(40)에 의해 생성된다. 그들은 이하의 조건을 나타낸다.
- column-in[1] : 셀이 첫 번째 마킹된 셀을 포함하는 컬럼에 속함.
- column-in[0] : 셀이 첫 번째 마킹된 셀을 포함하는 컬럼으로 시작하는 컬럼에 속함.
·no-eq : 이 개방 드레인 출력(16)은 발명의 상세한 설명 부분에 기술된 cfind 유형의 명령이 셀에서 성공할 때 액티브 로우(low)이다.
·symbol-data(N+1) : 이들 양방향 신호(106)에 의해 셀의 콘텐츠(N 비트 심볼 + 1 비트 마커)가 외부 저장 위치에 기록되거나, 그로부터 판독될 수 있다.
·interrupt(101) : 이 신호는, 마커가 세트되고, 저장된 심볼이 무효 심볼을 나타내거나 소정 셀이 엠프티임을 나타내는, 사전 정의된 고유 이진 패턴인 경우에, 그 셀에 의해 생성된다. 이 신호는 개방 드레인 드라이버에 의해 생성되며, 어레이내의 M 셀에 의해 생성된 모든 M interrupt 신호는 서로 or(논리합)되어, 도 3의 interrupt 신호(101)를 생성한다.
셀의 내부 구조
셀의 내부 구조가 도 14에 도시되며, 이하의 회로를 포함하고 있다.
·REG 회로(60)는 셀에 저장된 값 및 그와 관련된 마커 비트의 값을 포함하는 (N+1) 비트 레지스터이다.
·MUX-1 회로(61)는 c1(65) 및 c2(66)라고 하는 선택 코드에 따라, 수 개의 값들 중 하나가 REG에 저장되도록 하는 N개의 4-입력 멀티플렉서의 집합이다. 멀티플렉서(61)에 대한 가능한 선택은 다음과 같다.
- data-in 신호(10)상의 외부 값,
- symbol-data 신호(106)상의 외부 값,
- left-cell-out 신호(51)가 전달한, 이전 셀로부터의 값,
- right-cell-in 신호(58)가 전달한, 다음 셀로부터의 값, 또는
- 레지스터의 동적 구현을 허용하는, 레지스터 REG(60)에 저장된 값.
·MUX-2 회로(62)는 c3 및 c4라고 하는 선택 코드(67, 68)에 따라, 4 비트 중 1 비트가 REG의 최상위 비트에 저장될 수 있도록 하는 4-입력 멀티플렉서이다. 멀티플렉서(62)에 대한 가능한 선택은 다음과 같다.
- PLA(63)에 의해 생성된 마커,
- symbol-data(106) 신호(106)에서의 마커 비트,
- 신호 left-eq-in(53)가 전달한, 이전 셀로부터의 마커,
- 신호 right-eq-in(56)가 전달한, 다음 셀로부터의 마커,
- 이러한 비트의 동적 구현을 허용하는, 레지스터 REG(60)에 저장된 마커.
·COMP 회로(55)는, data-in 입력 신호(10)상의 심볼이 셀의 N 비트 콘텐츠와 동일한 경우에만, 1비트 출력상에 생성되어, 신호 right-cell-out(59)에 의해 전달되는 1을 생성하는 조합 회로이다.
·symbol-data(N+1) : 이들 신호(106)는 소정의 라인으로부터의 셀의 콘텐츠, 또는 REG내의 CM(206) 셀의 콘텐츠를 외부 저장 엔티티로 전달한다. 전송의 방향은 R/W 신호(112)에 의해 제어된다.
·PLA 회로(63)는 프로그램가능 논리에 의해 구현될 수 있으며, 셀내에서 이용되는 c1, c2, c3, c4, c5, c6, c7 및 c8이라고 하는 명령 비트(65, 66, 67, 68, 69, 107, 109, 111) 및 no-eq 신호(16), column-out 신호(44)의 반전된 값을 생성하는 조합 회로이다. 개방 드레인 인버터(20)는 신호 no-eq(16)를 구동한다. 인버터(70)는 column-out 신호(44)를 구동한다. PLA(63)는 수 개의 입력 신호를 수신하며, 그 신호들은 다음과 같다.
- CM(206)에 의해 수행될 명령의 이진 표현을 전달하는 명령 신호(14)(find, cfind, index 등),
- 레지스터 REG(60)의 값,
- left-eq-in(53) 신호에 의해 운송된, 이전 셀에서의 비교기(55)의 출력,
- right-eq-in(56) 신호에 의해 운송된, 다음 셀에서의 비교기(55)의 출력,
- 신호 no-eq(16),
- X 트랜스코더에 의해 생성된 line-in 신호(43) 및 Y 트랜스코더 회로에 의해 생성된 column-in 신호(45).
PLA(45)는 레지스터(60)가 비사용 또는 무효 셀을 마크하는데 사용되는 사전정의된 심볼을 포함할 때 및 레지스터와 관련된 마커가 세트될 때 활성화되는 interrupt 신호(15)를 생성한다.
내부에 저장된 심볼을 나타내는 레지스터(60)의 N 비트 출력은 신호 c5(69)에 의해 제어된 N개의 3-상태 인버팅 드라이버(71)에 의해 반전되며, 그들은 신호 data-out(11)이 된다. 개방 드레인 인버터(64)는 레지스터 REG(60)에 저장된 마커 비트를 반전하여, 신호 line-out(42)을 생성한다. 개방 드레인 인버터는 신호 no-eq(16)를 생성하며, 이것은 PLA(63)로부터 나온다. 개방 드레인 인버터(70)는 신호 column-out(44)을 생성한다. 이론적으로, 2차원 어레이내의 상이한 셀들로부터의 모든 data-out(11) 및 no-eq(16) 출력은 서로 접속되고, 라인에 속하는 모든 line-out(42) 출력 또한 서로 접속되며, 동일 컬럼상의 셀의 모든 column-out 신호(44) 또한 서로 접속된다.

트랜스코더
도 15는 두 트랜스코더 회로(39, 40)의 구성을 도시한다. X 트랜스코더 회로는 다음과 같은 신호를 수신한다.
·line-out 신호는
Figure 112004005470992-pct00005
비트를 포함하고, 2차원 어레이의 셀의 각 라인으로부터의 이들 신호는 라인상에 마킹된 셀이 존재함을 나타낸다.
·address-high 신호(96)는 log(N)/2 비트를 포함하고, CM(206)으로 공급된 어드레스의 상위 절반을 나타내며, 2차원 어레이내의
Figure 112004005470992-pct00006
라인으로부터 하나를 선택하는데 사용된다.
·5 비트 command 신호(14)는 몇몇 2차 명령, 즉 set-limit, set-limit-address, limited-find, limited-cfind, limited-reverse-find, limited-reverse-cfind, limited-write-all, ram-read, ram-write의 구현을 위해서만 사용된다.
Y 트랜스코더 회로(40)는 다음과 같은 신호를 수신한다.
·셀의 2차원 어레이의 각 컬럼으로부터의 신호이며, 관련된 컬럼상에 마킹된 셀이 발현한 것을 나타내는
Figure 112004005470992-pct00007
비트의 column-outs 신호(44)로서, 이 마킹된 셀은 그것이 속하는 라인의 첫 번째 셀이다.
·소정의 라인을 선택하는데 사용된 어드레스의 하위 절반을 나타내는
Figure 112004005470992-pct00008
비트의 address-low 신호(97).
·이전에 리스트된 2차 명령의 구현을 위해서만 사용되는 5 비트의 command 신호.
두 트랜스코더는 다음과 같은 회로를 포함한다.
·X 트랜스코더(39)내의 어드레스 신호의 상위 절반 또는 Y 트랜스코더내의 어드레스 신호의 하위 절반을 디코딩하는데 사용되는 디코더 DCD(83).
·
Figure 112004005470992-pct00009
2-웨이 멀티플렉서로 구성되며, 선택 신호로서 c6 신호(92)를 사용하는 멀티플렉서 MUX-3 회로(82).
·논리 함수 OR을 위한 접두 네트워크 PN-OR 회로(91).
·PN-OR 신호의 출력을 래치하고, 제한된 동작을 위해 CM(206)의 액티브 부분의 한계를 정하는데 사용되는 LATCH 회로(85). 그것은 로드 명령으로서 c7 신호(93)를 사용한다.
·MUX-4 멀티플렉서 회로(87)는 MUX-3(82)과 동일한 구조를 가지며, 선택 신호로서 c8 신호(94)를 이용한다.
·
Figure 112004005470992-pct00010
의 xor 게이트의 선형 네트워크 XOR-1(86)은 MUX-4 회로(87)에 의한 이진 구성 출력에서의 1의 첫번째 발현을 결정하는데 사용된다.
·X 트랜스코더에서의 line-outs(42) 또는 Y 트랜스코더에서의 column-outs 신호(44)를 인코딩하는 우선 순위 인코더 PE(80)는 인덱스 필드의 상위 절반, 즉 X 트랜스코더내의 index-high(38) 또는 하위 절반, 즉 Y 트랜스코더내의 index-low(46)를 생성한다.
·RPE 우선 순위 인코더(81)는 PE 우선 순위 인코더(80)와 동일한 입력을 역순으로 수신하여, 상위 및 하위 절반 c-index field를 생성한다.
·PLA 회로(84)는 프로그램가능 논리 어레이에 의해 구현될 수 있는 작은 조합 논리 블록이며, command 필드(14)를 디코딩하여, 트랜스코더 회로를 제어하는데 사용되는 c9 비트(92), c10 비트(93), c11 비트(94), c12 비트(95)를 생성한다.
·XOR-2 회로(89)는 p/2 입력 AND 게이트(88)에 공급되는 p/2 비트 값을 생성하고, eq 신호(36)를 생성한다. 이 eq 신호는 인덱스 index-high(98)의 상위 절반과 X 트랜스코더(39)내의 RPE 회로(81)에 의해 생성된 반전 인덱스의 상위 콘텐츠의 비교, 또는 인덱스 index-low(99)의 하위 절반과 Y 트랜스코더(40)내의 RPE 회로(81)에 의해 생성된 반전 인덱스의 하위 콘텐츠의 비교 결과이다.
RAM 제어기
도 16은 RAM 제어기(12)의 구현을 도시하고 있으며, 도 17은 RAM 제어기(12)의 내부 구조를 도시하는 블록도이다. RAM 제어기는 RAM에 저장된 각 라인에 대해 2 비트의 저장을 유지한다. 제 1 비트는 레지스터 AR(208)에 저장되며, AR(208)은 RAM내의 각 라인마다 한 비트씩, L 비트를 포함한다. L 비트의 콘텐츠는 우선 순위 인코더 P-ENC(210)에 공급되며, P-ENC(210)는 1로 세트되는 최소 가중치 비트의 이진 표현을 출력한다. 우선 순위 인코더(210)의 출력은 line-address(201)로써, 다음 CM(206) 판독 또는 기록 동작을 위해 선택될 RAM내의 라인의 어드레스이다. 예를 들어, AR이 00101110을 포함한다면, P-ENC는 line-address상에 010을 출력하는데, 이것은 1로 세트되는 AR내의 최하위 비트의 어드레스이다. 또한, line-address(201)는 멀티플렉서 MUX-7(213)의 0 입력에 공급되며, MUX-7은 적절하게 선 택될 때, line-address 신호의 콘텐츠를 디코더 ADCD(214)에 공급한다. 이 디코더는, 1 액티브 및 L-1 인액티브의 L 출력을 가진다. 액티브 출력은 가중치 또는 어드레스가 P-ENC(210)에 의해 출력되는 AR(208)내의 최하위 1 비트와 동일 가중치를 갖는다. 예를 들어, line-address가 010이면, ADCD(214)는 00000010을 생성하며, 1로 세트된 비트는 가중치 2를 갖는다. X xor 게이트(215)에 의해, ADCD(214)에 의해 출력된 L 신호가 AR(208)에 의해 출력된 L 비트와 xor되어, AR에 저장된 동일 이진 패턴을 생성하지만, AR내의 최하위 1 비트는 0으로 세트된다. 동일한 예를 이용하여, AR이 00101110을 포함한다면, P-ENC는 010을 출력하며, 이것은 ADCD에 공급되어 00000010이 되며, 다시 00101110과 xor되어 00101100을 제공하고, 볼드체 0 비트는 AR의 콘텐츠와 XOR 게이트(215)의 출력 사이의 차이를 나타낸다. XOR 게이트(215)의 출력은 멀티플렉서 MUX-6(209)을 통해 레지스터 AR에 공급되며, 여기서, step-enable 신호(222)가 액티브일 때, 그들은 다음 클럭 사이클에 저장된다. 이 신호는 신호(202)의 com 그룹의 일부이며, CE(205)를 제어하는 외부 처리 엔티티의 제어하에 있다.
AR, P-ENC, MUX-7, ADCD, L XOR 게이트 및 MUX-6의 조합은, AR에 이진 형태로 저장된 번호 K로 시작될 때, 그 합산이 K인 연속적인 2의 멱승(power)을 line-address상에 출력하는 회로를 형성한다. 더욱이, 이 회로는 step-enable 신호의 제어하에, 일정 시간에 각각의 2의 멱승을 생성한다. 모든 1 비트가 AR 레지스터로부터 존재하지 않게 되면, 우선 인코더는 이러한 상태를 검출하여, 더 이상의 라인이 현재 상태에서는 처리될 필요가 없다는 표시로써, 외부 처리 엔티티에 의해 테스트 되는 신호 stop(221)을 활성화한다. 이 장치는 루프에서 이진수 1로 세트된 모든 비트의 연속적인 가중치를 생성하며, 각 가중치를 출력하는데 단지 1 사이클만이 소요된다.
레지스터 AR내의 1을 연속적으로 제거하는 동안, CM(206)에서 라인이 처리되어, 스트링 동작이 수행된다. 이들 동작의 마지막에, CM(206)의 콘텐츠가 다시 라인에 저장될 때, 반전되어 init 신호(224)와 or된 no-flag 신호(15)의 값은 L D-플립 플롭(218) 중 하나인 D-플립 플롭에 기록된다. L의 그룹에서의 선택된 플립 플롭은 RAM내의 라인의 어드레스와 동일하고, 플립 플롭의 선택은, 이하 기술된, ADCD 회로(214)의 출력을 이용함으로써 수행된다. 이들 L 플립 플롭은 동작의 다음 패스에서 처리되어야 할 다음 라인 그룹을 나타내는 1 및 0들의 새로운 패턴을 포함한다.
RAM 제어기의 초기화는 AR의 비트에 1을 저장하는 것을 요구하며, 그러한 방식으로 처리될 필요가 있는 RAM내의 라인만이 1로 세트된 그들의 관련된 AR 비트를 갖는다. 이들 유효 라인은 RAM내의, 인접 블록의 연속적인 어드레스에 저장되며, 블록에서의 최하위 어드레스가 0이 되도록 저장된다. 예를 들어, RAM에서 단지 3 라인만이 유효하다면, AR 레지스터의 최하위 3 비트는 1로 세트되어야 하고, 다른 모든 비트는 0으로 세트된다. 이러한 경우, 유효 라인은 어드레스 0, 1, 2를 가지므로, 최상위 어드레스 라인의 어드레스는 2이다. 이러한 경우, 제어하는 외부 엔티티는 최상위 라인의 어드레스를 limit-address(207) 신호상에서 RAM 제어기에 전송하여, init 신호(224)를 활성화한다. 결과적으로, 멀티플렉서 MUX-7을 통과하는 limit-address 신호상의 log(L) 어드레스는, limit-address의 콘텐츠와 동일한 가중치를 갖는 것을 제외하고는, ADCD에 의해 L 신호로 디코딩되는 동작이 된다.
그 다음, MUX-7의 출력은 그 값이 0이고, 가중치가 그 입력에서의 단지 1 비트의 가중치보다 작은 모든 비트를 1로 변환하는 접두 OR 회로 OR-PN(216)에 공급된다. 예를 들어, OR-PN 회로가 00000100을 수신하면(여기서, 1 비트의 가중치는 2임), 그 출력은 00000111이다. 그 다음, 이들 L 신호는 L OR 게이트(219)를 통과하여, L D-플립 플롭(218)의 D 입력으로 공급된다. L D-플립 플롭(218)은 ACDC 회로에 의해 생성된 L 신호에 의해 개별적으로 인에이블되고, init 신호(224)와 개별적으로 OR된다. 그 다음, 1의 각 출력이 RAM에서의 유효 라인에 대응하는 이들 L 플립 플롭의 콘텐츠이, 멀티플렉서 MUX-6(209)를 제어하는 개시 신호를 활성화함으로써, 레지스터 AR(208)로 로딩된다.
본 발명은 바람직한 실시예를 참조하여 기술되었지만, 당업자라면, 본 발명의 본질적인 영역을 벗어나지 않고서도, 다양한 변경이 가능하고, 구성 요소가 등가물로 대체될 수 있음을 이해할 것이다. 따라서, 본 발명은 개시된 특정 실시예에 한정되지 않고, 특허 청구 범위의 영역에 속하는 모든 실시예를 포함하는 것으로 의도된다.

Claims (43)

  1. 데이터의 선택적인 검사 및 조작을 위한 메모리 엔진에 있어서,
    상기 데이터를 데이터 문자의 스트링으로서 일시 저장하는 메모리 장치와,
    복수의 명령 중 하나를 상기 메모리 장치에 선택적으로 출력하고, 그로부터의 데이터 피드백을 수신하는 제어기―상기 메모리 장치는 상기 제어기에 의해 출력된 상기 명령에 따라 상기 스트링내의 데이터 문자를 검사함―와,
    초당 사전 결정된 수의 클럭 사이클로 이루어지는 클럭 신호를 상기 메모리 장치 및 상기 제어기에 출력하는 클럭 장치―상기 메모리 장치는 상기 클럭 사이클 중 하나내에서 상기 데이터 문자 중 하나를 검사 및 선택적으로 조작함―를 포함하는
    데이터의 선택적인 검사 및 조작을 위한 메모리 엔진.
  2. 제 1 항에 있어서,
    상기 메모리 장치는 관련(associative) 메모리 장치인 데이터의 선택적인 검사 및 조작을 위한 메모리 엔진.
  3. 제 2 항에 있어서,
    상기 관련 메모리 장치는 데이터 버스 및 버퍼 메모리 장치와 전기 통신하는 데이터의 선택적인 검사 및 조작을 위한 메모리 엔진.
  4. 제 3 항에 있어서,
    상기 버퍼 메모리 장치는 복수의 버퍼를 포함하고, 상기 버퍼 각각은 상기 관련 메모리 장치와 동일한 메모리 용량을 갖는 데이터의 선택적인 검사 및 조작을 위한 메모리 엔진.
  5. 제 2 항에 있어서,
    상기 관련 메모리 장치는 동적 메모리 셀 및 정적 메모리 셀 중 하나의 2차원 어레이로서 형성되는 데이터의 선택적인 검사 및 조작을 위한 메모리 엔진.
  6. 제 1 항에 있어서,
    상기 제어기에 의해 출력된 상기 복수의 명령 중 하나는 'find' 명령이고, 그로 인해 상기 데이터 문자의 스트링은 상기 데이터 문자 중 임의의 것이 사전결정된 심볼과 매칭되는지 여부를 결정하기 위해 검사되며, 상기 사전결정된 심볼은 상기 'find' 명령과 관련하여 상기 제어기에 의해 통신되고,
    상기 메모리 장치는 상기 사전결정된 심볼과 매칭되는 모든 상기 데이터 문자의 우측(right)으로 지향되는 모든 상기 데이터 문자를 마크하도록 동작하는 데이터의 선택적인 검사 및 조작을 위한 메모리 엔진.
  7. 제 1 항에 있어서,
    상기 제어기에 의해 출력된 상기 복수의 명령 중 하나는 'reverse-find' 명령이고, 그로 인해 상기 데이터 문자의 스트링은 상기 데이터 문자 중 임의의 것이 사전결정된 심볼과 매칭되는지 여부를 결정하기 위해 검사되며, 상기 사전결정된 심볼은 상기 'reverse-find' 명령과 관련하여 상기 제어기에 의해 통신되고,
    상기 메모리 장치는 상기 사전결정된 심볼과 매칭되는 모든 상기 데이터 문자의 좌측(left)으로 지향되는 모든 상기 데이터 문자를 마크하도록 동작하는 데이터의 선택적인 검사 및 조작을 위한 메모리 엔진.
  8. 제 4 항에 있어서,
    상기 제어기는 데이터 스트링 문자를 상기 버퍼 각각으로 로딩하도록 동작하고,
    상기 버퍼는 상기 데이터 버스를 이용하여 상기 데이터 스트링 문자를 상기 관련 메모리 장치로 순차적으로 전송하고,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'find' 명령이고, 이로써 상기 관련 메모리 장치를 차지하는 상기 데이터 스트링 문자는 상기데이터 문자 중 어느 것이 상기 'find' 명령과 관련되어 상기 제어기에 의해 통신되는 기세트된 제 1 심볼과 일치하는지를 결정하도록 검사되며,
    상기 관련 메모리 장치는 상기 기 설정된 제 1 심볼과 일치하는 상기 데이터 문자 모두의 우측으로 향하는 상기 데이터 문자 모두를 마킹하도록 동작하는 메모리 엔진.
  9. 제 4 항에 있어서,
    상기 제어기는 문자 스트링 데이터를 상기 버퍼 각각으로 로딩하도록 동작하고,
    상기 버퍼는 상기 데이터 버스를 이용하여 상기 데이터 스트링 문자를 상기 관련 메모리 장치에 순차적으로 전송하고,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'reverse-find' 명령이고, 이로써 상기 데이터 스트링 문자는 상기 데이터 문자 중 어느 것이 상기 'reverse-find' 명령과 관련되어 상기 제어기에 의해 통신되는 기 설정된 제 1 심볼과 일치하는지를 결정하도록 조사되며,
    상기 관련 메모리 장치는 상기 기 설정된 제 1 심볼과 일치하는 상기 데이터 문자 모두의 좌측으로 향하는 상기 데이터 문자 모두를 마킹하도록 동작하는 메모 리 엔진.
  10. 제 8 항에 있어서,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'c-find' 명령이고, 이로써 하나의 마킹된 데이터 문자를 포함하는 상기 데이터 스트링 문자만이, 상기 'c-find' 명령과 관련되어 상기 제어기에 의해 통신되는 기 설정된 제 2 심볼과 일치하는 데이터 문자의 존재를 결정하도록 다시 조사되며,
    상기 관련 메모리 장치는 상기 기 설정된 제 2 심볼과 일치하는 상기 데이터 문자 모두의 우측으로 향하는 상기 데이터 문자 모두를 마킹하도록 동작하며, 상기 데이터 문자내의 다른 모든 마크를 리세트하는 메모리 엔진.
  11. 제 9 항에 있어서,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'reverse-cfind' 명령이고, 이로써, 하나의 마킹된 데이터 문자를 포함하는 상기 데이터 스트링 문자만이, 상기 'reverse-cfind' 명령과 관련되어 상기 제어기에 의해 통신되는 기 설정된 제 2 심볼과 일치하는 데이터 문자의 존재를 결정하도록 다시 조사되며,
    상기 관련 메모리 장치는 상기 기 설정된 제 2 심볼과 일치하는 상기 데이터 문자 모두의 좌측으로 향하는 상기 데이터 문자 모두를 마킹하도록 동작하며, 상기 관련된 메모리 장치는 상기 데이터 문자내의 다른 모든 마크를 리세트하는 메모리 엔진.
  12. 제 5 항에 있어서,
    상기 관련 메모리 장치는 상기 2차원 어레이로 상기 메모리 셀의 선형 어드레스를 표현하기 위해 제 1 트랜스코더 회로와 제 2 트랜스코더 회로를 포함하며,
    상기 제 1 트랜스코더 회로는 제 1 래치를 포함하고, 상기 제 2 트랜스코더는 제 2 래치를 포함하고, 상기 제 1 및 제 2 래치는 상기 관련 메모리 장치내의 상기 메모리 셀 중 어느 것이 하나의 마킹된 데이터 문자를 포함하는지를 나타내는 위치 정보를 포함하는 메모리 엔진.
  13. 제 1 항에 있어서,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'delete' 명령이고, 이로써, 하나의 마킹된 데이터 문자의 제 1 발현은 삭제되고, 그들의 마킹 상태를 포함하여 상기 마킹된 데이터의 우측에 있는 상기 데이터 문자의 다른 모든 문자는 좌측으로 시프트되고,
    상기 데이터 스트링 문자는 상기 데이터 문자의 최좌측에서 조사가 시작되는 메모리 엔진.
  14. 제 1 항에 있어서,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'reverse-delete' 명령이고, 이로써, 최좌측의 마킹된 데이터 문자는 삭제되고, 상기 최좌측의 마킹된 데이터 문자의 우측에 있는 상기 데이터 문자의 다른 모든 문자는 좌측으로 시프트되고,
    상기 메모리 장치는 상기 최좌측의 마킹된 데이터 문자의 좌측으로 향하는 데이터 문자를 마킹하는 메모리 엔진.
  15. 제 1 항에 있어서,
    상기 메모리 장치는 하나의 마킹된 데이터 문자의 제 1 발현을 결정하고, 상기 제 1 마킹된 데이터 문자를 제외하고, 상기 제 1 마킹된 데이터 문자의 우측에 있는 상기 데이터 문자 모두의 마킹 상태 및 콘텐츠를 'insert' 명령에 응답하여 우측으로 이동시키고,
    상기 메모리 장치는 상기 'insert' 명령과 관련하여 상기 제 1 마킹된 데이터 문자의 이전 위치를 상기 제어기에 의해 통신되는 기 설정된 심볼로 대체시키고,
    상기 데이터 스트링 문자는 상기 데이터 문자의 최좌측에서 조사가 시작되는 메모리 엔진.
  16. 제 1 항에 있어서,
    상기 메모리 장치는 마킹된 데이터 문자의 제 1 발현을 결정하고, 상기 제 1 마킹된 데이터 문자를 제외하고 상기 제 1 마킹된 데이터 문자의 우측에 있는 상기 데이터 문자 모두의 콘텐츠를 'reverse-insert' 명령에 응답하여, 우측으로 이동시키고,
    상기 메모리 장치는 상기 'reverse-insert' 명령과 관련하여 상기 제 1 마킹된 데이터 문자의 이전 위치를 상기 제어기에 의해 통신되는 기 설정된 심볼로 대체시키고,
    상기 데이터 스트링 문자는 상기 데이터 문자의 최좌측에서 조사가 시작되는 메모리 엔진.
  17. 제 1 항에 있어서,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'next' 명령이고, 이로써, 제 1 마킹된 데이터 문자의 마크는 리세트되고,
    상기 데이터 스트링 문자는 상기 데이터 문자의 최좌측에서 조사가 시작되는 메모리 엔진.
  18. 제 1 항에 있어서,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'write-one' 명령이고, 이로써, 상기 'write-one' 명령과 관련되어 상기 제어기에 의해 통신되는 기 설정된 심볼은 마킹된 데이터 문자의 제 1 발현에 기록되며,
    상기 데이터 스트링 문자는 상기 데이터 문자의 최좌측에서 조사가 시작되며,
    상기 메모리 장치는 상기 제 1 마킹된 데이터 문자를 리세트하고, 상기 제 1 마킹된 데이터 문자의 우측으로 향하는 데이터 문자를 마킹하는 메모리 엔진.
  19. 제 1 항에 있어서,
    상기 제어기에 의해 출력되는 다수의 명령 중 하나는 'write-all' 명령이고, 이로써, 상기 'write-all' 명령과 관련하여 상기 제어기에 의해 통신되는 기 설정된 심볼은 마킹된 데이터 문자의 모든 발현에 기록되며,
    상기 데이터 스트링 문자는 상기 데이터 문자의 최좌측에서 조사가 시작되고,
    상기 메모리 장치는 상기 마킹된 데이터 문자 모두를 리세트하고, 상기 마킹 된 데이터 문자의 우측으로 향하는 모든 데이터 문자를 마킹하는 메모리 엔진.
  20. 제 1 항에 있어서,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'jump' 명령이고, 이로써, 상기 데이터 스트링 문자는 기 설정된 구분 문자(delimiter)와 일치하는 마킹된 데이터 문자의 제 1 발현을 결정하도록 조사되고,
    상기 데이터 스트링 문자는 상기 데이터 문자의 최좌측에서 조사가 시작되는 메모리 엔진.
  21. 제 1 항에 있어서,
    상기 제어기에 의해 출력되는 상기 다수의 명령 중 하나는 'jump' 명령이고, 이로써, 상기 데이터 스트링 문자는 기 설정된 구분 문자와 일치하는 마킹된 문자의 모든 발현을 결정하도록 조사되고,
    상기 데이터 스트링 문자는 상기 데이터 문자의 최좌측에서 조사가 시작되는 메모리 엔진.
  22. 제 20 항에 있어서,
    상기 메모리 장치는 상기 'jump' 명령과 관련하여 상기 기 설정된 구분 문자와 일치하는 상기 제 1 마킹된 데이터 문자를 상기 제어기에 의해 통신되는 기 설정된 심볼로 대체하고,
    상기 메모리 장치는 상기 제 1 마킹된 데이터 문자를 리세트하고,
    상기 리세트된 데이터 문자의 우측에서 인접하는 상기 데이터 문자 중 하나에 마크를 세트하는 메모리 엔진.
  23. 제 1 항에 있어서,
    상기 메모리 장치는 다수의 메모리 셀을 포함하고,
    상기 명령은 상기 메모리 셀 모두에 병렬로 통신되어, 상기 클록 사이클 중 하나의 사이클내에서 상기 메모리 셀 모두의 정정을 가능하게 하는 메모리 엔진.
  24. 데이터 스트링 문자로서 데이터를 저장하는 메모리 장치와, 상기 메모리 장치로 명령을 선택적으로 출력하는 제어기와, 초당 기 설정된 수의 클록 사이클로 구성된 클록 신호를 상기 제어기 및 상기 메모리 장치로 출력하는 클록 장치를 이용하여 데이터를 조사 및 정정하는 방법에 있어서,
    상기 메모리 장치로 상기 데이터를 로딩하는 단계와,
    상기 제어기에 의해 출력되는 상기 명령에 따라서 상기 로딩된 메모리를 조 사하는 단계와,
    상기 제어기에 의해 출력되는 상기 명령에 따라서 상기 데이터를 선택적으로 조작 - 상기 데이터 문자 중 하나의 상기 조사 및 조작은 상기 클록 사이클 중 하나의 사이클내에서 이루어짐 - 하는 단계
    를 포함하는 데이터 조사 및 정정 방법.
  25. 제 24 항에 있어서,
    상기 정적 및 동적 메모리 셀 중 하나의 2차원 어레이를 가진 관련 메모리 장치로서 상기 메모리 장치를 형성하는 단계를 더 포함하는 데이터 조사 및 정정 방법.
  26. 제 24 항에 있어서,
    상기 로딩된 데이터를 조사하여, 'find' 명령과 관련하여 상기 데이터 문자 중 어느 하나가 상기 제어기에 의해 통신되는 제 1 기 설정된 심볼과 일치하는지를 결정하는 단계와,
    상기 로딩된 데이터 문자의 최좌측에서 상기 조사를 시작하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  27. 제 26 항에 있어서,
    상기 로딩된 데이터 중 어느 하나가 상기 제 1 기 설정된 심볼과 일치하는지를 결정하는 단계와,
    상기 제 1 기 설정된 심볼과 일치한다고 결정된 상기 로딩된 데이터 문자 중 어느 하나의 우측으로 향하는 상기 데이터 스트링 문자내의 상기 로딩된 데이터 문자 중 어느 하나에 마크를 세트하는 단계와,
    상기 제 1 기 설정된 심볼과 일치한다고 결정된 상기 로딩된 데이터 문자 중 어느 하나의 우측으로 향하는 상기 로딩된 데이터 문자 중 어느 하나에 세트된 상기 마크를 제외하고 상기 로딩된 데이터 문자에 모든 마크를 리세트하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  28. 제 26 항에 있어서,
    버퍼 장치를 데이터 버스 및 상기 메모리 장치와 전기적으로 통신되도록 정렬시키는 단계 - 상기 버퍼 장치는 각각의 상기 버퍼 장치가 상기 메모리 장치와 동일한 메모리 용량을 가진 다수의 버퍼를 포함함 - 와,
    상기 데이터 버스를 통해 상기 메모리 장치로부터 상기 조사된 데이터 스트링 문자를 제거하는 단계와,
    상기 버퍼 중 하나에 상기 제거된 데이터 스트링 문자를 저장하는 단계와,
    후속해서, 상기 버퍼 모두가 조사될 때까지 상기 버퍼에 저장된 추가의 데이터 스트링 문자를 로딩 및 조사하는 단계 - 상기 추가의 데이터 스트링 문자 각각은 그들 각각의 조사 완료시 상기 버퍼에 저장됨 -
    를 더 포함하는 데이터 조사 및 정정 방법.
  29. 제 28 항에 있어서,
    마킹된 데이터 문자를 포함하는 상기 데이터 스트링 문자 중 어느 하나를 재조사하여, 'c-find' 명령과 관련하여 상기 재조사된 데이터 스트링 문자 중 어느 하나가 상기 제어기에 의해 통신되는 제 2 기 설정된 심볼과 일치하는 데이터 문자를 포함하는지를 결정하는 단계와,
    상기 데이터 문자내의 모든 다른 마크를 리세트하는 동안에, 상기 제 2 기 설정된 심볼과 일치하는 상기 데이터 문자 모두의 우측으로 향하는 상기 데이터 문자 모두를 마킹하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  30. 제 24 항에 있어서,
    상기 로딩된 데이터를 조사하여, 'reverse-find' 명령과 관련하여 상기 데이터 문자 중 어느 하나가 상기 제어기에 의해 통신되는 제 1 기 설정된 심볼과 일치 하는지를 결정하는 단계와,
    상기 로딩된 데이터 문자 중 어느 하나가 상기 제 1 기 설정된 심볼과 일치하는지를 결정하는 단계와,
    상기 제 1 기 설정된 심볼과 일치한다고 결정된 상기 로딩된 데이터 문자 중 어느 하나의 좌측으로 향하는 상기 데이터 스트링 문자내의 상기 로딩된 데이터 문자 중 어느 하나에 마크를 세트하는 단계와,
    상기 제 1 기 설정된 심볼과 일치한다고 결정된 상기 로딩된 데이터 문자 중 어느 하나의 좌측으로 향하는 상기 로딩된 데이터 문자 중 어느 하나에 세트된 상기 마크를 제외하고 상기 로딩된 데이터 문자에 모든 마크를 리세트하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  31. 제 28 항에 있어서,
    마킹된 데이터 문자를 포함하는 상기 데이터 스트링 문자 중 어느 하나를 재조사하여, 'reverse-cfind' 명령과 관련하여 상기 재조사된 데이터 스트링 문자 중 어느 하나가 상기 제어기에 의해 통신되는 제 2 기 설정된 심볼과 일치하는 데이터 문자를 포함하는지를 결정하는 단계와,
    상기 데이터 문자내의 모든 다른 마크를 리세트하는 동안에, 상기 제 2 기 설정된 심볼과 일치하는 상기 데이터 문자 모두의 좌측으로 향하는 상기 데이터 문자 모두를 마킹하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  32. 제 30 항에 있어서,
    버퍼 장치를 데이터 버스 및 상기 메모리 장치와 전기적으로 통신되도록 정렬시키는 단계 - 상기 버퍼 장치는 각각의 상기 버퍼가 상기 메모리 장치와 동일한 메모리 용량을 가진 다수의 버퍼를 포함함 - 와,
    상기 데이터 버스를 통해 상기 메모리 장치로부터 상기 조사된 데이터 스트링 문자를 제거하는 단계와,
    상기 버퍼 중 하나에 상기 제거된 데이터 스트링 문자를 저장하는 단계와,
    후속하여, 상기 버퍼 모두가 조사될 때까지, 상기 버퍼에 저장된 다음의 데이터 스트링 문자를 로딩 및 조사하는 단계 - 상기 추가의 데이터 스트링 문자 각각은 그들의 각각의 조사 완료시에 상기 버퍼에 저장됨 -
    를 더 포함하는 데이터 조사 및 정정 방법.
  33. 제 24 항에 있어서,
    'delete' 명령에 응답하여, 상기 로딩된 데이터내의 마킹된 데이터 문자의 제 1 발현을 삭제하는 단계와,
    그들의 마킹 상태를 포함하여, 상기 마킹된 데이터 문자의 우측에 있는 상기 데이터 문자의 모든 다른 문자를 좌측으로 시프트하는 단계와,
    상기 로딩된 데이터 문자의 최좌측에서 상기 조사를 시작하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  34. 제 24 항에 있어서,
    'reverse-delete' 명령에 응답하여, 상기 로딩된 데이터내의 마킹된 데이터 문자의 제 1 발현을 삭제하는 단계와,
    그들의 마킹된 상태를 포함하여, 상기 마킹된 데이터 문자의 우측으로 향하는 상기 데이터 문자의 모든 다른 문자를 좌측으로 시프트하는 단계와,
    삭제된 상기 마킹된 데이터 문자의 좌측에서 인접하는 데이터 문자를 마킹하는 단계와,
    상기 로딩된 데이터 문자의 최좌측에서 상기 조사를 시작하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  35. 제 24 항에 있어서,
    'insert' 명령에 응답하여, 상기 로딩된 데이터내의 마킹된 데이터 문자의 제 1 발현을 삭제하는 단계와,
    상기 마킹된 데이터 문자를 배제하고, 상기 마킹된 데이터 문자의 우측에 있 는 상기 데이터 문자 모두의 콘텐츠 및 마킹된 상태를 우측으로 시프트하는 단계와,
    상기 제 1 마킹된 데이터 문자의 이전 위치를, 상기 'insert' 명령과 관련하여 상기 제어기에 의해 통신되는 기 설정된 심볼로 대체하는 단계와,
    상기 데이터 문자의 최좌측에서 상기 로딩된 데이터의 조사를 시작하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  36. 제 24 항에 있어서,
    'reverse-insert' 명령에 응답하여, 상기 로딩된 데이터내의 마킹된 데이터 문자의 제 1 발현을 결정하는 단계와,
    상기 제 1 마킹된 데이터 문자를 배제하고, 상기 마킹된 데이터 문자의 우측으로 향하는 상기 데이터 문자 모두의 콘텐츠를 우측으로 시프트하는 단계와,
    상기 'reverse-insert' 명령과 관련하여, 상기 제어기에 의해 통신되는 기 설정된 심볼을 삽입함으로써 상기 제 1 마킹된 데이터 문자의 이전 위치를 대체시키는 단계와,
    상기 삽입된 기 설정된 심볼을 마킹하는 단계와,
    상기 데이터 문자의 최좌측에서 상기 로딩된 데이터 문자의 조사를 시작하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  37. 제 24 항에 있어서,
    'next' 명령에 응답하여, 상기 로딩된 데이터내의 제 1 마킹된 데이터 문자에 마크를 리세트하는 단계와,
    상기 데이터 문자의 최좌측에서 상기 로딩된 데이터의 조사를 시작하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  38. 제 24 항에 있어서,
    'write-one' 명령과 함께 통신되는 기 설정된 심볼을 상기 로딩된 데이터내의 마킹된 데이터 문자의 제 1 발현에 기록하는 단계와,
    상기 제 1 마킹된 데이터 문자를 리세트하고, 상기 제 1 마킹된 데이터 문자의 우측으로 향하는 데이터 문자를 마킹하는 단계와,
    상기 데이터 문자의 최좌측에서 상기 로딩된 데이터의 조사를 시작하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  39. 제 24 항에 있어서,
    'write-all' 명령과 함께 통신되는 기 설정된 심볼을 상기 로딩된 데이터내의 마킹된 데이터 문자의 모든 발현에 기록하는 단계와,
    상기 마킹된 데이터 문자 모두를 리세트하고, 상기 마킹된 데이터 문자 모두의 우측으로 향하는 데이터 문자를 마킹하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  40. 제 24 항에 있어서,
    상기 로딩된 데이터를 조사하여, 상기 제어기에 의해 출력되는 'jump' 명령과 관련하여 기 설정된 구분 문자와 일치하는 마킹된 데이터 문자의 제 1 발현을 결정하는 단계와,
    상기 로딩된 데이터 문자의 최좌측에서 상기 조사를 시작하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  41. 제 40 항에 있어서,
    상기 'jump' 명령과 관련하여, 상기 기 설정된 구분 문자와 일치하는 상기 제 1 마킹된 데이터 문자를 상기 제어기에 의해 통신되는 기 설정된 심볼로 대체하는 단계와,
    상기 제 1 마킹된 데이터 문자를 리세트하는 단계와,
    상기 리세트된 데이터 문자의 우측에서 인접하는 상기 데이터 문자 중 하나에 마크를 세트하는 단계
    를 더 포함하는 데이터 조사 및 정정 방법.
  42. 데이터를 선택적으로 조사 및 조작하는 메모리 엔진에 있어서,
    선택적인 시프트 기능을 가지며 상기 데이터를 데이터 스트링 문자로서 임시 저장하는 관련 메모리 장치와,
    선택적으로 상기 메모리 장치에 다수의 명령 중 하나를 출력하고 상기 메모리 장치로부터 데이터 피드백을 수신하는 제어기 - 상기 메모리 장치는 상기 제어기에 의해 출력되는 상기 명령에 따라서 상기 스트링내의 데이터 문자를 조사함 -
    를 포함하되,
    상기 관련 메모리 장치는 상기 제어기에 의해 출력되는 제 1 명령에 응답하여 상기 데이터 문자 모두를 선택적으로 시프트하고, 상기 관련 메모리 장치는 상기 제어기에 의해 출력되는 제 2 명령에 응답하여 상기 데이터 문자의 일부만을 시프트하는 메모리 엔진.
  43. 제 42 항에 있어서,
    초당 기 설정된 수의 클록 사이클로 구성된 클록 신호를 상기 메모리 장치와 상기 제어기로 출력하는 클록 장치를 더 포함하되,
    상기 메모리 장치는 상기 클록 사이클 중 하나의 사이클내에서 상기 데이터 문자를 조사하고 선택적으로 조작하는 메모리 엔진.
KR1020047002048A 2001-08-10 2002-08-07 메모리 엔진과, 데이터 조사 및 정정 방법 KR100555997B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/928,151 2001-08-10
US09/928,151 US6760821B2 (en) 2001-08-10 2001-08-10 Memory engine for the inspection and manipulation of data
PCT/US2002/025232 WO2003014940A1 (en) 2001-08-10 2002-08-07 A memory engine for the inspection and manipulation of data

Publications (2)

Publication Number Publication Date
KR20040039285A KR20040039285A (ko) 2004-05-10
KR100555997B1 true KR100555997B1 (ko) 2006-03-03

Family

ID=25455804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047002048A KR100555997B1 (ko) 2001-08-10 2002-08-07 메모리 엔진과, 데이터 조사 및 정정 방법

Country Status (6)

Country Link
US (1) US6760821B2 (ko)
EP (1) EP1428127A1 (ko)
JP (1) JP2004538592A (ko)
KR (1) KR100555997B1 (ko)
CN (1) CN1276359C (ko)
WO (1) WO2003014940A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069386B2 (en) * 2001-08-10 2006-06-27 Connex Technology, Inc. Associative memory device
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US6738762B1 (en) * 2001-11-26 2004-05-18 At&T Corp. Multidimensional substring selectivity estimation using set hashing of cross-counts
TWI258646B (en) * 2001-12-27 2006-07-21 Asulab Sa Device and method for managing memory in an electronic watch
US7231383B2 (en) * 2002-05-01 2007-06-12 Lsi Corporation Search engine for large-width data
US7634500B1 (en) 2003-11-03 2009-12-15 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US20060215291A1 (en) * 2005-03-24 2006-09-28 Jaquette Glen A Data string searching
US7567568B2 (en) 2005-05-24 2009-07-28 The Boeing Company Method and apparatus for user identification in computer traffic
US7353332B2 (en) * 2005-10-11 2008-04-01 Integrated Device Technology, Inc. Switching circuit implementing variable string matching
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
US20070189618A1 (en) * 2006-01-10 2007-08-16 Lazar Bivolarski Method and apparatus for processing sub-blocks of multimedia data in parallel processing systems
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US20080059764A1 (en) * 2006-09-01 2008-03-06 Gheorghe Stefan Integral parallel machine
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US7529746B2 (en) * 2006-09-19 2009-05-05 Netlogic Microsystems, Inc. Search circuit having individually selectable search engines
US7783654B1 (en) * 2006-09-19 2010-08-24 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US7624105B2 (en) * 2006-09-19 2009-11-24 Netlogic Microsystems, Inc. Search engine having multiple co-processors for performing inexact pattern search operations
US7539032B2 (en) * 2006-09-19 2009-05-26 Netlogic Microsystems, Inc. Regular expression searching of packet contents using dedicated search circuits
US7644080B2 (en) * 2006-09-19 2010-01-05 Netlogic Microsystems, Inc. Method and apparatus for managing multiple data flows in a content search system
US7539031B2 (en) * 2006-09-19 2009-05-26 Netlogic Microsystems, Inc. Inexact pattern searching using bitmap contained in a bitcheck command
US8862603B1 (en) 2010-11-03 2014-10-14 Netlogic Microsystems, Inc. Minimizing state lists for non-deterministic finite state automatons
CN113741975A (zh) * 2021-09-18 2021-12-03 苏州盛科通信股份有限公司 芯片、随机选取多个数据的方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4575818A (en) 1983-06-07 1986-03-11 Tektronix, Inc. Apparatus for in effect extending the width of an associative memory by serial matching of portions of the search pattern
US5122984A (en) * 1987-01-07 1992-06-16 Bernard Strehler Parallel associative memory system
AU624205B2 (en) * 1989-01-23 1992-06-04 General Electric Capital Corporation Variable length string matcher
US5497488A (en) * 1990-06-12 1996-03-05 Hitachi, Ltd. System for parallel string search with a function-directed parallel collation of a first partition of each string followed by matching of second partitions
US5319762A (en) 1990-09-07 1994-06-07 The Mitre Corporation Associative memory capable of matching a variable indicator in one string of characters with a portion of another string
US5150430A (en) 1991-03-15 1992-09-22 The Board Of Trustees Of The Leland Stanford Junior University Lossless data compression circuit and method
US5373290A (en) * 1991-09-25 1994-12-13 Hewlett-Packard Corporation Apparatus and method for managing multiple dictionaries in content addressable memory based data compression
US5818873A (en) 1992-08-03 1998-10-06 Advanced Hardware Architectures, Inc. Single clock cycle data compressor/decompressor with a string reversal mechanism
US5440753A (en) * 1992-11-13 1995-08-08 Motorola, Inc. Variable length string matcher
JPH07114577A (ja) 1993-07-16 1995-05-02 Internatl Business Mach Corp <Ibm> データ検索装置、データ圧縮装置及び方法
US5602764A (en) 1993-12-22 1997-02-11 Storage Technology Corporation Comparing prioritizing memory for string searching in a data compression system
US5828593A (en) * 1996-07-11 1998-10-27 Northern Telecom Limited Large-capacity content addressable memory

Also Published As

Publication number Publication date
WO2003014940A1 (en) 2003-02-20
CN1554048A (zh) 2004-12-08
US20030037209A1 (en) 2003-02-20
US6760821B2 (en) 2004-07-06
KR20040039285A (ko) 2004-05-10
CN1276359C (zh) 2006-09-20
JP2004538592A (ja) 2004-12-24
EP1428127A1 (en) 2004-06-16

Similar Documents

Publication Publication Date Title
KR100555997B1 (ko) 메모리 엔진과, 데이터 조사 및 정정 방법
US10656948B2 (en) Processor system and method based on instruction read buffer
US10503716B2 (en) Systems and methods for generating bit matrices for hash functions using fast filtering
JP2668438B2 (ja) データ検索装置
US9223720B2 (en) Systems and methods for rapidly generating suitable pairs of hash functions
KR100638703B1 (ko) 데이터 프로세싱 시스템용 셀룰러 엔진
EP0410105A2 (en) A computer architecture for the concurrent execution of sequential programs
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
US9244857B2 (en) Systems and methods for implementing low-latency lookup circuits using multiple hash functions
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
US8190943B2 (en) Systolic merge sorter
TWI300899B (en) Associative memory support for data processing cross reference to related applications
JP2007536696A5 (ko)
US6701461B2 (en) Method and apparatus for testing a cache
US5659733A (en) Sort processing method and apparatus for sorting data blocks using work buffer merge data records while sequentially transferring data records from work buffers
EP0232376B1 (en) Circulating context addressable memory
US20050108290A1 (en) Logic computing system and method
JPH08195089A (ja) 複数の条件を同時に検出するための装置、およびその方法
KR20040007343A (ko) 캐시 메모리 및 그 제어 방법
US6175518B1 (en) Remote register hierarchy accessible using a serial data line
TW201734855A (zh) 基於截斷的確定性有限自動機(dfa)與硬體過濾器匹配的區域/能源複雜的正規表示法樣式
JPH03229381A (ja) データ駆動形計算機
JPH052608A (ja) データ検索装置
Lochovsky DL Lee
JPS62248031A (ja) デ−タ管理方法

Legal Events

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

Payment date: 20130220

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140124

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee