KR940001563B1 - 룰 베이스 시스템 - Google Patents

룰 베이스 시스템 Download PDF

Info

Publication number
KR940001563B1
KR940001563B1 KR1019860000316A KR860000316A KR940001563B1 KR 940001563 B1 KR940001563 B1 KR 940001563B1 KR 1019860000316 A KR1019860000316 A KR 1019860000316A KR 860000316 A KR860000316 A KR 860000316A KR 940001563 B1 KR940001563 B1 KR 940001563B1
Authority
KR
South Korea
Prior art keywords
data
rule
signal line
signal
condition
Prior art date
Application number
KR1019860000316A
Other languages
English (en)
Other versions
KR860006056A (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
Priority claimed from JP60008906A external-priority patent/JPS61168068A/ja
Priority claimed from JP60012079A external-priority patent/JPS61170861A/ja
Priority claimed from JP60224713A external-priority patent/JPS6285332A/ja
Priority claimed from JP60233298A external-priority patent/JPS6293731A/ja
Application filed by 가부시끼가이샤 히다찌세이사꾸쇼, 미다 가쓰시게 filed Critical 가부시끼가이샤 히다찌세이사꾸쇼
Publication of KR860006056A publication Critical patent/KR860006056A/ko
Application granted granted Critical
Publication of KR940001563B1 publication Critical patent/KR940001563B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/32Merging, i.e. combining data contained in ordered sequence on at least two record carriers to produce a single carrier or set of carriers having all the original data in the ordered sequence merging methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S706/00Data processing: artificial intelligence
    • Y10S706/902Application using ai with detail of the ai system
    • Y10S706/903Control
    • Y10S706/906Process plant

Abstract

내용 없음.

Description

룰 베이스 시스템
제1도는, 본 발명의 1실시예를 도시한 설비군 제어 장치의 블럭도.
제2도는, 선 출원에 의한 룰형 시스템의 동작 설명도.
제3도는, 1개의 룰의 처리 내용을 도시한 도면.
제4도는, 어느 5개의 룰이 선 출원의 처리 방식으로 처리되는 상태를 도시한 도면.
제5도는, 본 발명의 방식에 의해서 제4도와 같이 5개의 룰이 처리되는 상태를 도시한 도면.
제6도는, 입출력 신호-내부 코오드 대응 정보 기억부의 상세도.
제7도는, IF-THEN 룰 기동 정보 기억부의 상세도.
제8도는, IF-THEN 룰 정보 기억부의 상세도.
제9도는, 내부 코오드 정보 기억부의 상세도.
제10도는, 수속 정보 기억부의 상세도.
제11도는, 제어부의 기능 블럭도.
제12도는, 제어부의 동작 프로 챠트.
제13도는, 제어 지령 결정부의 기능 블럭과, 각 테이블의 관계를 도시한 도면.
제14도는, 제어 지령 결정부의 동작 프로 챠트.
제15도는, 제어 지령 결정부가 룰의 THEN부를 처리할 때의 상세한 동작 프로 챠트.
제16도는, AND 조건 처리부의 동작 프로 챠트.
제17도는, AND 조건 처리부에 있어서, 생성되는 AND 조건을 만족하는 변수치의 조합 생성의 예를 도시한 도면.
제18도는, 본 발명의 1실시예를 도시한 JOIN 연산 장치의 블럭도.
제19도는, 제1도의 메모리와, CAM의 어드레스 배치도.
제20도는, 룰형 소프트 웨어의 룰 처리의 설명도.
제21도는, 룰 처리에 있어서의 AND 조건 만족 변수치 생성 처리(JOIN 연산)의 설명도.
제22도는, 본 발명의 동작 원리의 설명도.
제23도는, 연산 기억 장치내의 레지스터의 구성도.
제24도∼제29도는, 각각 본 발명의 실시예를 도시한 데이터 프로도.
제30도는, 본 발명에 의한 JOIN 연산 방식의 설명도.
제31도는, 본 발명의 1실시예의 블럭 구성도.
제32도는, 본 장치의 메모리 공간의 설명도.
제33도∼제40도는, 실시예의 동작을 도시한 데이터 프로도.
제41도는, 본 발명에 의한 JOIN 연산 장치의 블럭 구성도.
제42도는, 본 발명의 동작 원리의 설명도.
제43도∼제48도는, 본 발명의 실시예를 도시한 데이터 프로도.
본 발명은, 룰(rule)처리 장치에 관하여, 특히, 룰에서 기술된 제어 논리(制御論理)에 따라 설비군(設備群)에 있어서의, 각 설비의 상태에 따라서 조건을 판정하고, 제어 지령(制御指令)을 결정하는 제어 시스템, 혹은 룰에서 기술된 생산 계획 논리(生産計劃論理)에 따라 부여된 주문 데이터와 재료 데이터에서 주문과 재료를 할부(割付)하는 생산 계획 시스템에 적합한 룰 베이스 시스템(rule base system)에 관한 것이다. FA(Factory Automation)시스템에서는, 제품의 라이프 사이클(life cycle)의 단기화(短期化), 제품의 종류의 다양화에 수반해서, 제조 라인의 변경, 운용(運用)의 변경이 빈번하게 행하여 진다. 이로인해 제어 프로그램의 신속한 개발, 보수가 요구된다.
종래에는, 제어 프로그램을 FORTAN등의 범용 언어(言語)로 개발하는 방법이 취해지고 있었다. 그러나 이 방법에서는 제어 프로그램의 개발, 이해(理解), 변경에 시간이 걸리고, 또 전문의 프로그램 요원이 필요하다는 등의 문제가 있으므로, 상기 요구를 만족하지 못하였다. 그래서, 본 발명자 등은 논리의 기술 이해, 변경이 용이한 「설비군 제어 시스템」(특허 공개공보소 59-205604호)을 제한하였다. 상기 시스템은 룰형 시스템이라고 부르고 있는 것으로서, 논리를 임의의 일본어 문자열(日本語文字列)로 「IF 조건, THEN(결론, 동작)」형의 룰 형식으로 기술하는 것 뿐이고, 프로그램이 작성되는 것은 아니다(이하, IF-THEN 룰, 또는 간단하게 룰이라고 부른다). 이 시스템에 의하면, 프로그램의 개발이 용이하고, 또 논리의 이해와 변경이 우수하다. 상기 제한에서는, 룰의 조건, 결론, 동작(動作) 및 대상(對象)의 상태를 표시하는 문자열 정보를 코오드화해서 취급하는 것에 의해서, 룰의 처리를 고속으로 행할 수가 있다. 이 룰형 시스템은, 자동 창고(自動化倉庫)시스템등의 대규모 FA나 생산 계획으로의 적용이 진보되어 있지만, 시스템의 규모가 커지게 되고, 취급한 상태량(狀態量), 룰 수가 막대하게 되면, 룰 실행 시간이 걸리고 응답성(應答性)에 문제가 발생한다.
종래 시스템에 있어서의 제1의 문제는, 룰을 1개씩 끄집어 내고, IF부에 기술된 전 조건을 동시에 만족하는(AND 조건)수차가 존재하는지 아닌지의 조건 판정(條件判定)을 행하고 있기 때문에, 최종적인 결론을 얻기 위해서는 필요한 룰수의 증가, 혹은 대상 상태의 수가 많아지면, 1개의 룰의 조건 판정에 필요한 시간이 증대하고, 최종적 결론이 얻어질 때 까지의 시간이 길어져 버리는 것이다. 구체적으로는, 대상으로 하고 있는 설비군이 10수대 까지에 대해서는 문제가 없지만, 수 100을 넘는 대상 상태를 취급하는 생산 계획이나, 자동 창고의 선반 결정에 대해서는, 실용상 충분한 처리 속도가 기대될 수 없다. 선 출원의 설비군 제어 시스템은, 룰을 1개씩 끄집어내서 처리하기 때문에 구성이 심플(simple)하고 실현도 용이하지만, 병열처리의 가능한 룰일지라도 시리얼(serial)만으로 처리할 수 없다. 즉, 어느 룰의 결론을 별개의 룰의 조건판정에 사용한다고 하는 관계가 없는 룰끼리, 즉 관계가 없는 룰 상호간은, 어느때에, 어떠한 순서로, 또 동시에 처리를 행하여도 지장이 없지만, 선출원의 방식에서는, 이것들에 대해서도 시리얼로만 처리할 수가 없었다. 따라서, 룰수의 증가나, 대상 상태의 증가에 의한 1룰당의 조건 판정 시간의 증대에 수반해서, 충분한 처리 속도를 확보할 수가 없다. 이것 때문에, 이미 제안된 룰형 시스템에서는, 룰수가 수 100을 넘는 대상, 혹은 상태수가 수 100∼수 1000이 되는 대규모의 대상에 대해서는 방대한 처리 시간이 필요되고 적용이 곤란하였다.
제2의 문제점은, 상기의 AND 조건을 만족하는 변수치의 생성 처리에 있어서, 취입된 변수치를 모두 조합 판정(組合判定)할 필요가 있으므로, 그 처리 시간이 변수치의 수의 적에 비례해서 증대하고, 처리 속도의 위에서 장해로 되는 것이다. 종래의 프로그램에 의한 JOIN 연산의 아루고리즘(algorithm)에 대해서는, 예를 들면 이미 제안된 룰형 시스템이나 문헌「순서 보존 하슈(hash)완수에 의한 고속 조인 아루고리즘(join algorithm) : 정보 처리 논문지, Vol. 25, No.1, pp59∼65 Jan.(1984)」에 기재된 것이 있다. 그러나, 어느 것도 프로그램에 의한 축차 처리(逐次處理)이기 때문에 대량의 데이터에 대한 JOIN 연산이 요구될 경우, 충분한 처리 속도를 기대할 수는 없다. 이것 때문에 IF부에 기술한 조건에 대응하는 대상 상태의 수가 적을 때에는 문제가 없지만, 상태 수가 수 100, 수 1000이 되는 대상에 대해서는, 방대한 처리 시간을 필요로 하는 문제가 있었다.
본 발명의 제1의 목적은, 다수의 룰의 병열 실행( 列實行)을 가능하게 해서 가독성(可讀性), 이해성, 변경성이 높은 논리 기술 수법(論理記述手法)을 다량의 룰, 다량의 상태를 취급할 필요가 있는 대상, 시스템, 고속의 응답이 요구되는 대상 시스템에 대해서도 적용할 수 있도록한 룰 베이스 시스템을 제공하는 데에 있다.
또 본 발명의 제2의 목적은, JOIN 연산을 효율 좋게 실행할 수 있는 룰 베이스 시스템을 제공하는 데에 있다.
상기 제1의 목적을 달성하기 위해서, 상기 룰 운용 수단(運用手段)중의 룰의 AND 조건의 처리를 실행하는 장치를 적어도 2개 마련하고, 그중 1개의 장치에서 임의의 룰의 AND 조건 처리를 실행하고 있는 동안, 별개의 룰의 조건 비교 처리를 실행하고, 또한 다른 장치에서 AND 조건 처리를 실행하고, 룰을 병열처리한다.
상기 제2의 목적을 달성하기 위해서, 어느 1개의 룰중에 기술된 다수의 조건 내용중의 어느 2조와 합치하는 상태 기억부 정보(狀態記憶情報)로 된 2조의 데이터의 집합에 대해서, 그 2조의 조건 내용중의 공통인 항목에 대응하는 수치가 같은 상기 양쪽 데이터의 모든 조합에서 되는 집합 데이터를 작성하는 JOIN 연산에 대해서, 어느쪽이든 한쪽의 데이터를 유지하는 입력 버퍼와, 다른쪽의 데이터를 유지하는 연산 기억 수단과, JOIN 연산의 결과를 유지하는 출력 버퍼와, 양 데이터에서 항목치(項目値)를 의미가 있는쪽의 수치로 치환(置換)해서 1개의 데이터를 작성하는 데이터 중합 수단(重合手段)을 구비하고, 상기 입력 버퍼에서 데이터를 1개씩 끄집어내고, 그 데이터를 검색(檢索)데이터, 상기 공통 항목을 검색 키(Key)로서 상기 연상 기억 수단의 데이터를 연상 검색하고, 끄집어낸 데이터와 검색데이터를 상기 중합된 결과를, 출력 버퍼에 격납한다고 하는 일련의 동작을 반복해서 실행한다.
우선, 본 발명의 원리를 설명한다.
제2도는, 룰형 시스템의 기능 블럭도이고, 어느 룰의 결론을 또한 별개의 룰의 조건 판정에 사용한다고 하는 처리를 순차 반복하고, 최종적으로 룰의 THEN부에 동작(제어 지령)이 기술된 룰의 조건이 만족되고, 제어 지령이 결정된다고 하는 원리로 행하여 진다. 즉 제2도에 있어서, 룰 운용부12는, 룰을 기억하고 있는 룰 기억부 11에서 룰을 1개씩 끄집어내고, 대상의 상태를 기억하고 있는 상태 기억부 13의 내용과, 끄집어낸 룰의 IF부의 조건을 비교하여, 조건이 만족되었는지 아닌지를 판정한다 조건이 만족되면, 끄집어낸 룰의 THEN부의 결론을 상태 기억부 13에 추가하여 간다. 여기서, IF부의 조건판정에서는, IF부에 기억된 하나 하나의 IF의 문장(조건)과 일치하는 문장(상태)이 모두 상태 기억부 13중에 존재하는지 아닌지를 판정하고, 또한 변수(x, y, z 등)에 대해서는 IF부에 기술된 전 조건을 동시에 만족하는(AND 조건)수치가 존재하는지 아닌지를 판정하고, 존재하면 그 수치를 생성한다.
제3도는, 1개의 룰의 처리의 내용을 표시하는 도면이다. 도면에 있어서, 21은 조건 일치 판정 처리(IF부의 하나 하나의 조건과 대상 상태와의 일치 판정을 행하는 처리), 22는 AND 조건 처리(IF부 전체의 AND 조건의 판정 및 AND 조건을 만족하는 변수치의 생성을 행하는 처리), 23은 결론 기억 처리(THEN부의 결론의 기억을 행하는 처리)이고, 이 순서로 처리가 행하여 진다.
제4도는 종래 방식으로 5개의 룰(1)∼(5)가 처리되는 상태를 시계열(時系列)로 도시한 도면이다.
31은 룰 번호이다. 종래의 방식은, 시리얼 처리이므로, 5개의 룰(1)∼(5)의 조건 일치 판정 처리 21, AND 조건 처리 22, 결론 기억 처리 23을 각각 시리얼로 배열해서 처리를 행한다. 이와 같이 종래의 방식에서는, 룰(1)의 조건 일치 판정 처리 21, AND 조건 처리 22를 행하고, 조건이 만족되면, 결론 기억 처리 23을 행한다. 다음에, 룰(2)에 대해서 마찬가지로, 21, 22, 23의 순서로 행하고, 모두 시리얼로 실행한다. 따라서, 1개의 룰 처리 시간의 5배의 시간이 걸리게 된다.
제5도는, 본 발명의 방식에 의해서 5개의 룰이 처리되는 상태를 시계열로 도시한 도면이다.
제5도의 AND 조건 처리 22의 복스(Box)내의 기호Ⅰ, Ⅱ는, AND 조건 처리를 전용으로 행하는 장치의 식별자(識別子)이다. 본 발명에 있어서는, IF부의 AND 조건을 처리하는 장치를 별개로 마련하고, 이 장치에 의해서, 어느 룰의 AND 조건의 처리중, 동시에, 별개의 룰의 조건 일치 판정을 행하고, 다수 룰을 병열로 처리해서, 전체의 처리 속도를 향상시키는 것이다.
본 발명에서는, 제5도에 도시한 바와 같이, 우선 룰(1)에 대해서 조건 일치 판정 처리 21을 행한 후, AND 조건 처리 22를 전용 장치 Ⅰ에서 행한다. 이 기간 즉, 전용 장치 Ⅰ의 처리가 완료할 때 까지의 기간, 순차로 각 룰에 대해서 IF부의 조건 일치 판정 처리 21을 행하고, 별개의 비어 있는 전용 장치 Ⅱ를 사용해서 AND 조건 처리 22를 행한다. 이 처리 기간중에도, 다음의 IF부의 조건 일치 판정 처리 21을 행한다. 이와같이 해서, 전용 장치 Ⅰ과 Ⅱ를 교호로 사용하고 파이프 라인(pipe line)형의 처리를 행한다. 이 경우, AND 조건 처리 22가 조건 일치 판정 처리 21의 꼭 2배가 걸리는 예를 도시하고 있으므로, 룰(1)의 AND 조건 처리 22가 행하여 지고 있는 동안, 룰(2)와 룰(3)의 조건 일치 판정 처리 21이 먼저 행하여지게 된다. 룰(1)을 처리하고 있는 전용 장치 Ⅰ의 처리가 완료하면, 그의 결과에 의해서 AND조건이 만족되면, 결론 기억 처리 23을 행한다. 처리 결과에 의해서 AND 조건이 만족되지 않으면, 또 다음의 룰의 조건 일치 판정 처리 21을 행한다. 이 경우 룰(1)의 AND 조건 처리 22의 완료후, 전용 장치 Ⅰ은 비게 되므로, 다음에 룰(3)의 AND 조건 처리 22에 사용된다. 이와 같이 해서, 어느 룰의 AND 조건 처리 22를 전용 장치에 있어서, 실행중에, 다음의 룰의 처리를 동시에 행하는 것에 의해서, 룰을 병열로 처리하는 것이 가능하게 되고, 최종적인 결론을 얻을 때까지의 처리 시간을 단축할 수가 있다.
제1도는 본 발명의 제1의 목적에 대응한 제1의 실시예를 도시한 설비군 제어 장치의 블럭도이다.
제어 장치는, 기억부 6이, 제어부 602, AND 조건 처리부(Ⅰ)611, 마찬가지로 AND 조건 처리부(Ⅱ) 612, 설비군 603, 기동 신호선(起動信號線)613, 완료 신호선 614, 상태 신호선 604 및 지령 신호선 605로 구성되어 있다. 기억부 601은, 또, 다수의 정보 기억부, 즉 입출력 신호-내부 코오드 대응 정보 기억부 606, IF-THEN 룰 기동 정보 기억부 607, IF-THEN 룰 정보 기억부 608, 내부 코오드 정보 기억부 609 및 수속 정보 기억부 610의 각 에리어(area)를 갖고 있다. 기억부 601은, 내부 코오드화된 IF-THEN 룰, 외부 신호와 내부 코오드의 대응표 등의 데이터를 기억해두는 부분이다. 제어부 602는, 기억부601에 격납되어 있는 정보에 따라서, 설비군 603의 상태를 표시하는 상태 신호를 신호선 604를 거쳐서 취입하고, 제어 지령을 결정하여, 각, 설비 603에 신호선 605를 거쳐서 제어 신호를 발신한다.
제6도는, 제1도에 있어서의 입출력 신호-내부 코오드 대응 정보 기억부 606의 상세한 설명도이고, 제6a도가 입력 신호와 내부 코오드, 제6b도는 내부 코오드와 출력 신호의 각 대응 테이블이다.
이 기억부 606은, 제1도에 도시한 상태 신호선 604, 지령 신호선 605등의 외부 신호와, 내부 처리의 사이의 인터페이스(inter face)를 위한 정보를 격납하여 두는 부분이다. 제6a도에 도시한 입력 신호-내부 코오드 대응 테이블 71은, 상태 신호선 604의 신호를, 제어부 602에서 취급하는 내부 코오드로 변환하기 위한 정보를 격납하여 두는 테이블이고, 상태 신호선 604의 엔트리(entry)어드레스를 격납하는 상태 신호선 엔트리 에리어, 그의 신호선 604에 신호가 발생한 경우에 대응하는 설비 상태를 표시하는 내부 코오드를 격납하여 두는 수치 코오드 에리어 및 파라메타(paramater)부분 에리어로 구성되어 있다. 제어부 602는, 이 테이블 71의 데이터에 따라서 각 상태 신호선 604를 액세스하고, 신호가 발생되어 있으면 대응하는 내부 코오드를 작성한다. 작성된 내부 코오드는, 내부 코오드 정보 기억부 609내에 격납된다. 여기서, 상태 신호선 604의 신호가 온 오프(on, off)의 2치 정보인 경우, 제어부 602는, 테이블 71에 격납되어 있는 내부 코오드를 그대로의 형태로 끄집어내고, 내부 코오드를 작성한 것으로 한다. 예를 들면, 제6a도의 어드레스 B의 내부 코오드가 그의 경우를 표시하고 있다. 상태 신호선 604의 정보가, 바 코오드(bar code)의 호출 정보등의 수치 정보인 경우에는, 테이블에 격납되어 있는 내부 코오드의 파라메타 부분에서 변수(W, X, Y, Z 등)가 지정되어 있는 것에, 그의 정보를 수치로서 기억한 내부 코오드를 작성한다. 예를 들면, 제6a도의 어드레스 A의 내부 코오드가 그의 경우를 표시하고 있다. 즉, 상태 신호선 어드레스 A에 수치 정보 34가 발생되고 있을 경우, 제어부 602는, 내부 코오드 "1<34>"를 작성한다(제9도(a), (b)참조). 내부 코오드"1<34>"은, 예를 들면, 자동화 공장의 워크(work)공급 라인의 선두(先頭)에 워크 No.34의 워크가 발생한 것을 표시하고 있다.
다음에, 제6b도에 있어서는, 내부 코오드-출력 신호 대응 테이블 72는, 제어부 602의 결정된 제어지령을 표시하는 내부 코오드에 따라서, 설비군 603에 지령 신호선 605를 거쳐서 제어 신호를 발신하기 위한 정보를 격납하여 두는 테이블이다. 또 제어 지령을 표시하는 내부 코오드는, 내부 코오드 정보 기억부 609내에 격납되어 있다.
테이블 72는, 제어 지령을 표시하는 내부 코오드를 격납하는 수치 코오드 에리어, 파라메타 부분 에리어 및 그의 지령을 발신하여야 할 지령 신호선 605의 엔트리어드레스를 격납하는 지령 신호선 엔트리 에리어로 구성되어 있다. 제어부 602는, 결정한 제어 지령을 표시하는 내부 코오드와, 이 테이블 72에 격납되어 있는 내부 코오드를 비교하고, 일치한 내부 코오드에 대응하는 지령 신호선 605에 대해서 신호를 발생한다. 그 경우, 이 테이블 72에 격납되어 있는 내부 코오드에 있어서, 파라메타 부분에 변수(W, X, Y, Z 등)가 지정되어 있지 않을때에는, 대응하는 신호선 어드레스 위에 온 오프의 2치 신호를 출력한다. 2치 신호를 출력할 경우로서, 예를 들면, 제6b도의 어드레스 D가 있다. 또, 변수의 지정이 있을 경우에는 결정된 제어 지령을 표시하는 내부 코오드에 있어서의 그의 변수에 대응하는 파라메타의 수치를, 신호선 어드레스 위에 출력한다. 예를 들면, 결정된 제어 지령을 표시하는 내부 코오드가, "9<1><34><1>"일때에는, 신호선 어드레스 C위에 수치 34, 1이 이 순서로 출력된다. 내부 코오드 "9<1><34><1>"의 의미는, 예를 들면, 자동화 공장의 반송 대차1에 워크 No.34의 워크를, 스테이션(station)1에 반송하는 것을 지시하는 제어 지령이다.
제7도는, 제1도의 IF-THEN 룰 기동 정보 기억부 607의 상세한 설명도이고, 제7a도는 룰군 기동조건 테이블, 제7b도는 사용 롤군 번호 격납 에리어를 표시한다.
이 기억부 607은, 발생할 설비군의 상태에 따라서 기동하여야할 일련의 룰을 지정하는 정보를 격납하여두는 부분이다. 여기서, "기동하여야 할"이라는 것은, "제어부 602가 제어 지령을 결정할 때에 사용하여야 할"이라고 하는 의미이다. 예를 들면, 자동화 공장의 제어에 있어서, 워크 공급 라인의 선두에 워크가 발생할 경우에는, 워크를 작업 스테이션에 할부하기 위한 룰군을 기동하고, 대차로의 반송 지령, 작업 스테이션으로의 작업지령을 결정한다. 또, 어느 작업 스테이션에서 작업이 완료한 경우에는, 제품을 불출하기 위한 롤군을 기동하고, 대차로의 제작품 불출 지령을 결정한다. 룰군 기동 조건 테이블 81은, 상술과 같이, 발생하는 설비군 603의 각 상태마다 대응하는 기동하여야할 룰군을 지정하기 위한 정보를 격납하여 두는 테이블이다. 이 테이블 81은, 발생을 감시하여야할 설비 상태에 대응하는 상태 신호선 604의 엔트리 어드레스를 격납하는 상태 신호선 엔트리 에리어, 그의 신호선 604에 신호가 발생하였을 때에, 기동하여야할 룰군의 번호를 지정하는 기동 룰군 번호 에리어로 구성된다. 사용 룰군 번호 격납 에리어 82는, 제어부 602가 제어지령 결정에 사용하여야할 룰군 번호를 기억해 두는 에리어이다. 제어부 602는, 룰군 기동 조건 테이블 81의 테이터에 따라서, 각 상태 신호선 604를 보링(polling)하고 있으며, 신호가 발생한 경우, 그 신호선 604에 대응하는 기동 룰군 번호를, 사용 룰군 번호 격납 에리어 82에 기억하고, 다음의 처리로 이동한다.
제8도는, 제1도의 IF-THEN 룰 정보 기억부 608의 상세한 설명도이고, (a)가 룰군 디레크토리(direc-tory), (b)가 룰 테이블이다. 이 기억부 608은 제어 논리를 기술한 IF-THEN 룰에 관한 정보를 격납하여 두는 부분이다. 본 발명에서는, IF-THEN 룰을 내부 코오드화해서 취급하므로, 이 기억부 608에는 내부 코오드화한 IF-THEN 룰을 격납한다. 룰은, 워크를 작업 스테이션에 할부하기 위한 룰군, 제품을 불출하기 위한 룰군등, 각 룰군마다 구별해서 격납한다.
물론 디레크토리 91은, IF-THEN 룰이 격납되어 있는 룰 테이블 92위의 각 룰군의 선두 위치를 지정하는 룰군 선두 위치 에리어로 구성되어 있다. 룰은, 각 룰군마다, 이 선두 위치에서 최종 위치까지의 사이에 격납된다. 각 룰군의 번호는, 룰군 디레크토리 91의 행의 번호와 대응하고 있다.
룰 테이블 92에 있어서, 각 룰은, IF부, THEN부를 구분해서 그의 내부 코오드를 각각 IF부 에리어, THEN부에 에리어 격납한다. 각 에리어에는, 내부 코오드를 다수조 격납할 수 있다. IF부 에리어는 또 내부 코오드의 수치 코오드를 격납하는 수치 코오드 에리어, 파라메타 부분을 격납하는 파라메타 부분 에리어 및 룰의 처리에 있어서, 각 룰의 IF부의 각 내부 코오드의 조건을 첵크(check)한 것인지를 표시하는 처리완료 조건 플래그 애리어(flag area)(첵크 완료 : 1, 미완료 : 블랭크(blank)로 된다. 또, THEN부 에리어는, 내부 코오드의 수치 코오드를 격납하는 수치 코오드 에리어 및 파라메타 부분을 격납하는 파라메타 부분 에리어에 보태서 또 IF-THEN 룰에 지정한 수속명(手續名)을 격납하는 수속명 에리어로 된다. 또, 각 룰에 대응해서 룰 Type 에리어, 미처리 룰 플래그 에리어가 있다. 룰 Type라는 것은, 최종적으로 제어 지령을 결정하기 위한 룰과, 그외의 룰을 구별하기 위한 정보이고, 룰 Type 에리어에 지정한다. 최종적으로 제어 지령을 결정하는 룰은 1, 그외의 룰은 0을 각각 지정한다. 이 정보는, 제어부 602가 제어 지령의 결정처리를 행하는 데에 맞서서, THEN부의 결론(내부 코오드)를 축차 낮추어갈때에, 어느 결론이 최종적으로 얻어지는 제어 지령을 표시하는지를 구별하기 위해서 사용한다. 또, 처리 완료 룰 플래그 에리어는, 1의 경우, 그의 룰의 처리를 실행 완료인 것을 표시하고, 블랭크의 경우, 미완료인 것을 표시한다. 처리 완료 룰 플래그 에리어, 처리 완료 조건 플래그 에리어는, 제어부 602가 관리한다.
제9도는, 제1도의 내부 코오드 정보 기억부 609의 상세한 설명도이고, (a)는 선두 포인터 테이블(pointer table)과 계속 포인터 테이블을, (b)는 제어 지령 격납 테이블을, (c)는 변수치 일시 격납 테이블Ⅰ, Ⅱ를, (d)는 AND 조건 만족 변수치(條件滿足變數値)격납 테이블 Ⅰ, Ⅱ를, (e)는 병열 처리중 룰 플래그 테이블을, 각각 표시하고 있다.
이 기억부 609는, 취입한 설비군의 상태를 표시하는 내부 코오드와 IF-THEN 룰에 따라서 제어 지령을 결정할때에, 축차 낮아지는 THEN부의 결론(내부 코오드) 및 최종적으로 결정된 제어 지령(내부 코오드), 또한 변수를 포함하는 IF-THEN 룰을 처리할때에 취입하는 변수의 수치, 병열 처리중의 룰에 관한 정보등의 정보를 기억하여 두는 부분이다. 파라메타 부분 격납 테이블 101, 선두 포인터 테이블 102 및 계속 포인터 테이블 103은, 외부에서 취입한 설비군의 상태를 표시하는 내부 코오드 및 IF-THEN 룰의 처리에 있어서, 축차 낮아지는 결론(THEN부에 지정되어 있는 내부 코오드중 최종적으로 결정된 제어 지령을 제어한 것)을 격납하기 위한 워크 테이블 군이다. 파라메타 부분 격납 테이블 101은, 각각의 내부 코오드의 파라메타 부분을 격납하는 테이블이다. 계속 포인터 테이블 103은, 동일 수치 코오드를 기다리는 내부 코오드의 각 파라메타 부분을 결합하는 계속 포인터를 격납하는 테이블이다. 파라메타 부분 격납 테이블 101의 각 행에 대응하는 계속 포인터 테이블 103의 각 행에는, 계속하는 다음의 내부 코오드의 파라메타 부분이 격납되어 있는 파라메타 부분 격납 테이블 101의 행의 위치가 격납되어 있다. 계속하는 파라메타 부분의 최후라는 것은, 계속 포인터 테이블 103에 0을 격납하여 두는 것에 의하여 표시된다.
또, 선두 포인터 테이블 102는, 선두 포인터를 격납하는 테이블이다. 선두 포인터는, 계속 포인터에 의해서 결합된 동일 수치 코오드를 갖는 내부 코오드의 파라메타 부분의 선두를 표시한다. 선두 포인터 테이블 102의 각 행이, 각 수치 코오드에 대응한다. 즉, 수치 코오드의 1이 제1행째, 2는 2행째, 3은 3행째이다. 파라메타 부분 격납 테이블 101에 격납되어 있는 동일 수치 코오드를 가진 일련의 파라메타 부분의 선두행의 위치를, 선두 포인터 테이블 102에 격납한다. 또, 파라메타 부분 격납 테이블 101의 비어 있는 에리어의 선두행을 빈 에리어 선두 포인터 에리어 104에 격납하고, 비어 있는 에리어의 모두를 포인터로 결합하고, 그 포인터 정보를 계속 포인터 테이블 103에 격납하고 빈 에리어 위치를 관리한다.
제9도(b)에 도시한 제어 지령 격납 테이블 105는, 제어부 602에 의해서 최종적으로 결정된 제어 지령을 표시하는 내부 코오드를 격납하는 테이블이다. 이 테이블 105는, 결정된 제어 지령의 내부 코오드의 수치 코오드를 격납하는 수치 코오드 에리어, 파라메타 부분을 격납하는 파라메타 에리어로 된다. 또 제9도(c), (d)의 변수치 일시 격납 테이블(Ⅰ)106, 변수치 일시 격납 테이블(Ⅱ)109, AND 조건 만족 변수치 격납 테이블(Ⅰ)107, AND 조건 만족 격납 테이블(Ⅱ)110은, 변수를 포함하는 IF-THEN 룰의 처리를 행하기 위한 것이다. 2개의 룰은 동시에 병열 처리하기 위해서는, 각각 Ⅰ과 Ⅱ의 2개씩의 테이블이 준비되어 있다. 변수치 일시 격납 테이블(Ⅰ)106과, (Ⅱ)109는, 룰의 IF부에 지정하여 둔 임의의 1개의 내부 코오드와, 워크 테이블군(선두 포인터 테이블 102, 파라메타 부분 격납 테이블 101, 계속 포인터 테이블 103)에 격납되어 있는 내부 코오드의 일치 판정을 행하였을때에, 워크 테이블군에 격납되어 있는 내부 코오드로, 룰의 IF부에 지정해 있는 내부 코오드와 일치하는 내부 코오드의 파라메타 부분의 파라메타 수치를, 룰의 IF부의 내부 코오드의 파라메타 부분의 대응하는 변수의 수치로서 취입한 것을 격납하여 두는 테이블이다.
워크 테이블군에 격납되어 있는 내부 코오드에서, 룰의 IF부에 지정하여둔 내부코오드와, 일치하는지 안하는지는, 내부 코오드의 수치 코오드 및 변수 지정이 있는 파라메타를 제외한 파라메타 부분에서 판정한다. AND 조건 만족 변수치 격납 테이블(Ⅰ)107과 (Ⅱ)110은, 취입한 변수치중 IF부의 AND 조건을 만족하는 변수치를 격납하는 테이블이다. 이들의 테이블중 Ⅰ의 쪽은 병열 처리하고 있는 2개의 룰중의 1번째의 룰 처리에 사용하고, AND 조건 처리부 (Ⅰ)611에 의해서 처리된다. 또 Ⅱ의 쪽은, 제2번째의 룰의 처리에 사용하고, AND 조건 처리부(Ⅱ)612에 의해서 처리된다. 제9도(e)의 병열 처리중 룰 플래그 테이블 108은, 룰의 처리 상태에 관한 정보를 격납하는 것이고, 제1룰 처리중 플래그 에리어, 제2룰 처리중 플래그 에리어는 각각 "1"일 때, AND 조건 처리부 Ⅰ, Ⅱ를 사용해서 룰을 처리중이라는 것을 표시하고, "0"일때 그렇지 않은 것을 표시한다.
제10도는, 제1도의 수속 정보 기억부 610의 상세한 설명도이다.
이 기억부 610은, IF-THEN 룰에 지정한 수속의 본체 및 그의 엔트리 어드레스를 격납하여 두는 부분이다. 수속 엔트리 테이블 111은, 각 수속명을 격납하는 수속명 에리어, 그 수속의 엔트리 어드레스를 격납하는 수속 엔트리 에리어로 된다. 수속 엔트리 테이블 111에 지정한 엔트리 어드레스 위치에, 각각의 수속 112를 격납한다.
제11도는, 제1도의 제어부 602의 기능 블럭도이다.
제어부 602는, 룰군 기동 조건 판정부 121, 설비 상태 내부 코오드 발생부 122, 제어 지령 결정부 123 및 제어 지령 발신부 124로 구성된다. 정보의 흐름에서는 1201이 상태 신호, 1202가 룰군 번호, 1203이 설비상태 내부 코오드, 1204가 제어 지령 내부 코오드, 1205가 지령 신호이다.
제12도는, 제1도의 제어부 602의 동작 프로 챠트이다.
이하, 제12도에 따라서, 제7도에서 제12도까지의 구성을 참조하면서, 제어부 602의 동작을 설명한다. 또, 설명에 있어서, AND 조건 처리부(Ⅰ)611과 (Ⅱ)612의 기동은, 기동 신호선 607의 기동 신호에 의해서 행하여지고, 본 처리부의 동작의 완료는, 완료 신호선 608의 완료 신호에 의해서 알수가 있다.
제어부 602가 동작을 개시하면, 우선 룰군 기동 조건 판정부 121에 의해서 상태 신호선 604의 보링이 개시된다.
즉, 룰군 기동 조건 판정부 121은, 룰군 기동 조건 테이블 81에 격납되어 있는 상태 신호선 엔트리의 신호선을 순차 액세스하고, 신호가 발생되어 있는지 아닌지를 조사한다(복스 131), 신호가 발생되어 있지 않으면, 사이크릭크(cyclic)로 순차 신호선 604의 액세스를 계속한다. 신호가 발생되어 있으면, 룰군 기동 조건 테이블 81에 있어서, 그의 신호선 604에 대응해서 지정되는 기동 룰군 번호 1202를 사용 룰 번호 격납 에리어 82에 셋트하고, 설비 상태 내부 코오드 발생부 122를 기동한다(복스 132). 설비 상태 내부 코오드 발생부 122는, 우선 선두 포인터 에리어 102를 제로 크리아(zero clear)하고 빈 에리어 선두 포인터 에리어 104의 수치를 "1"에 셋트한다. 즉, 포인터를, 파라메타 부분 격납 테이블 101의 선두에 셋트한다. 또 파라메타 부분 격납 테이블의 모든 행을, 제1행째부터 포인터로 결합하도록 계속 포인터 테이블 103을 셋트한다. 즉 워크 테이블군(선두 포인터 테이블 102, 파라메타 부분 격납 테이블 101, 계속 포인터 테이블 103)에, 내부 코오드 정보가 아무것도 격납되어 있지 않은 상태로 한다.
다음에, 입력 신호-내부 코오드 대응 테이블 71에 격납되어 있는 상태 신호선 엔트리의 신호선을 순차로 액세스하고, 신호가 발생되고 있는 신호선에 대해서 입력 신호-내부 코오드 대응 테이블 71에 있어서 그의 신호선에 대응하고 지정되어 있는 내부 코오드(수치 코오드와 파라메타 부분)를 발생시켜(제7도 참조), 워크 테이블군내에 격납하고, 제어 지령 결정부 123을 기동한다(복스 133). 여기서, 발생된 내부 코오드의 워크 테이블 군내로의 격납은, 다음과 같이 해서 행한다. 우선, 발생된 내부 코오드의 수치 코오드의 대응하는 선두 포인터 테이블 102의 행의 포인터에서 더듬기 시작해서, 발생된 내부 코오드의 파라메타 부분과 일치하는 것이 파라메타 부분 격납 테이블 101에 격납되어 있는지, 아닌지를 계속 포인터 테이블 103의 포인터를 더듬어서 조사한다. 일치하는 것이 이미 존재하면, 아무것도 하지 않는다. 또, 존재하지 않으면 더듬어서온 포인터의 최후가 지시하는(계속 포인터가 제로로 되기전의 계속 포인터가 지시하는)파라메타 부분 격납 테이블 101의 행을, 비어있는 에리어의 선두의 행에 결합한다. 즉, 빈 에리어 선두 포인터 에리어 104의 수치를, 그의 행에 대응하는 계속 포인터 테이블 103의 행에 셋트한다. 다음에 비어있는 에리어의 선두의 행에 발생될 내부 코오드의 파라메타 부분을 격납하고, 그의 행을 최후의 행으로 한다. 또, 빈 에리어 선두 포인터 에리어 104를, 다음의 비어 있는 에리어의 행에 셋트한다. 제어 지령 결정부 123은, 후술하는 순서로 제어 지령을 표시하는 내부 코오드를 결정하고, 제어 지령 격납 테이블 105에 격납해서, 제어 지령 발신부 124를 기동한다(복수 134). 또, 설비군의 상태가, IF-THEN 룰에서 기술된 제어 논리의 조건을 만족하고 있지 않으면, 제어 지령 격납 테이블 105에는 아무것도 격납되지 않는다. 제어 지령 발신부 124는, 우선, 제어 지령 격납 테이블 105에 제어 지령 내부 코오드가 격납되어 있는지 아닌지를 조사한다. 아무것도 격납되어 있지 않으면, 아무것도 하지 않고 룰군 기동 조건 판정부 121을 기동하고, 재차 포링을 재개한다(복수 131). 제어 지령 내부 코오드가 격납되어 있으면, 그의 내부 코오드와 내부 코오드-출력 신호 대응 테이블 72에 격납되어 있는 내부 코오드를 비교하고, 일치하는 행의 대응하는 지령 신호선 엔트리의 신호선에 대해서 신호를 발신한다(제7도 참조). 제어 지령 격납 테이블 105에 격납되어 있는 모든 내부 코오드에 대해서 상술의 신호 발신 처리를 행한 후에, 롤군 기동 조건 판정부 121을 기동하고(복스 135), 재차 보링을 재개한다.(복스 132).
제13도는, 제11도의 제어 지령 결정부 123 내부의 기능 블럭과 테이블의 관계를 도시한 도면이다.
제13도에 있어서, 실선은 제어 신호의 흐름, 굵은선은 정보의 흐름을 표시한다. 제어 지령 결정부 123은, 제어 지령 결정 제어부 141, 조건 판정부 142, 수속 기동부 144, 중간 결론 기억부 145, 제어 지령 기억부 146, AND 조건 처리부(Ⅰ)611, (Ⅱ)612로 된다.
제14도 및 제15도는, 제11도의 제어 지령 결정부 123의 동작 프로 챠트이다.
제어 지령 결정부 123이 기동되면 우선, 제어 지령 결정 제어부 141에 제어가 넘어간다. 제어 지령 결정제어부 141은, 그의 다른 기능 블럭을 사용해서 하기와 같이 제어 지령을 결정한다.
제어 지령 결정 제어부 141은, 우선, 제어 지령 격납 테이블 105를 크리어하고(복스 151), 사용 룰군 번호 격납 에리어 82에 격납되어 있는 룰군 번호에 따라, 룰군 디레크토리 91에서 사용하는 룰의 룰 테이블 92내의 선두와, 최종 위치를 구한다(복스 152). 이하의 처리는, 이 선두와 최종 위치의 사이에 룰만에 대해서 행한다.
제어 지령 결정 제어부 141은, THEN부의 내부 코오드를 워크 테이블 군내에 추가하는 새로운 룰이 이제는 없어질때까지, 룰 테이블 92내의 룰 Type0의 모든 룰에 대해서, 이하의 처리를 행한다(복스 153). 새로운 룰이 없어졌을 경우, 또 룰 테이블 92내의 룰 Type1의 모두의 룰에 대해서, 이하의 처리를 행한 후(복스 154), 제어 지령 발신부 124를 기동한다. 제어 지령 결정 제어부 141은 우선, 선택한 사용 룰의 모두에 대해서, 룰 테이블 92의 처리 완료 룰 플래그, 처리 완료 조건 플래그, 병열 처리중 룰 플래그 테이블 108을 블랭크 크리어 및 제로 크리어 한다.(복스 155). 다음에, 미처리 룰(룰 테이블 92)의 처리 완료를 플래그가 블랭크의 룰)이 존재하지 않을때가지, 이하의 처리를 행한다(복스 156). 우선, 병열 처리하는 제1번째의 룰의 처리를 개시한다. 즉, 병열 처리중 룰 플래그 테이블 108의 제1룰 처리중 플래그를 1로 하고, AND 조건 처리부(Ⅰ)611을 사용해서, 룰을 처리하는 것을 선언하고(복스 157), 미처리 룰을 1개 끄집어 내고, 그 룰의 미처리 룰 플래그를 1로 하고, 그 룰의 처리를 개시한다(복스 158). 룰의 처리에서는, 끄집어 낸 룰의 IF부의 내부 코오드 하나 하나에 대해서 처리를 행한다. 즉, 끄집어낸 룰의 IF부의 처리 완료가 아닌(룰 테이블 92의 처리 완료 조건 플래그가 1이 아닌) 내부 코오드를 1개 끄집어내고, 그 처리 완료 조건 플래그를 1로 하고(복스 159), 조선 판정부 142를 콜해서, 그의 내부 코오드와 워크 테이블 군내에 격납되어 있는 내부 코오드의 일치 판정을 행한다(복스 1510). 조건 판정부 142는, IF부의 내부 코오드의 수치 코오드에 대응하는 선두 포인터 테이블 102의 행이 포인터에서 더듬기 시작하여, 순차 계속 포인터 테이블 103의 포인터를 더듬고, 계속 포인터 수치가 0이 될 때까지 IF부의 내부 코오드의 파라메타 부분과 일치하는 것이 파라메타 부분 격납 테이블 101에 격납되어 있는지 아닌지를 조사한다. 일치 판정은, IF부의 내부코오드의 파라메타 부분의 변수 지정의 파라메타부를 제외한 부분에서 행하고, 일치한 경우, 변수 지정이 있는 파라메타부에 대응하는 파라메타 부분 격납 테이블 101내의 파라메타 부분의 파라메타부의 수치를, IF부에 지정해 있는 변수의 수치로서 변수치 일시 격납 테이블(Ⅰ)106에 격납한다. 이 경우, 파라메타 부분 격납 테이블 101내에 IF부의 내부 코오드의 파라메타 부분과 일치하는 것이 발견될 때마다 변수치를 취입하고, 변수치 일시 격납 테이블(Ⅰ)106의 각 행에 순차로 격납하여 간다. 또, IF부의 내부 코오드의 파라메타 부분의 파라메타부에 변수 지정이 없을 경우에는, 특히 변수치를 취입하지 않는다. 이상의 결과, 일치하는 것이 하나도 없을 경우, 제어 지령 결정 제어부 141은, 다음의 룰을 끄집어내고, 재차 조건 판정을 시작한다(복스 1511). 일치하는 것이 하나라도 있으면, 또, 지금 일치 판정을 행한 IF부의 내부 코오드의 파라메타 부분에 변수 지정이 있는 파라메타부가 있으면(복스 1512), AND 조건 처리부(Ⅰ)611을 기동하고, 후술의 순서에 의해서 IF부의 AND 조건을 만족하는 변수치의 조합을 생성한다(복스 1513). 조합의 결과는, AND 조건 만족변 수치격납 테이블(Ⅰ)107에 격납된다. 변수 지정이 있는 파라메타 부분이 없으면, 이하에 기술하는 AND 조건의 처리를 행하지 않는다. 여기서, 제어 지령 결정 제어부 141은, AND 조건 처리부(Ⅰ)611의 처리의 완료를 기다리는 동안에, 병열로 처리하는 제2번째의 룰의 처리를 개시한다(복스 1514). 즉, 병열 처리중 룰 플래그 테이블 108의 제2룰 처리중 플래그 테이블 108의 제2룰 처리중 룰 플래그가 1이 아닌것(제2번째의 룰의 처리가 개시되어 있지 않은 것)을 확인하고(복스 1515), 여기까지 설명한 병열 처리의 제1번째의 룰과 전연 동일하게, 제2번째의 룰의 처리를 진행한다(복스 1516-1522). 제1번째의 룰의 처리와 틀리는 점은 AND 조건 처리부(Ⅰ)611, 변수치 일시 격납 테이블(Ⅰ)106, AND 조건 만족 변수치 격납 테이블(Ⅰ)107에 대신해서, 각각 AND 조건 처리부(Ⅱ)612, 변수치 일시 격납 테이블(Ⅱ)109, AND 조건 만족 변수치 격납 테이블(Ⅱ)110이 사용되는 점뿐이다. AND 조건 처리의 완료는, 복스 1514, 1515, 1523, 1524의 루프(loop)를 통해서 감시된다. 이 루프중에, AND 조건 처리부(Ⅰ)611, (Ⅱ)612의 완료(완료 신호선 608의 완료 신호)를 검출하면 그의 처리부에서 처리중의 룰의 다음에 처리를 계속해서 행한다. 이하에 있어서는, AND 조건 처리부(Ⅰ)611의 완료를 검출한 경우에 대해서 설명한다. AND 조건 처리부(Ⅱ)612의 완료를 검출한 경우도 마찬가지이다(복스 1529-1532). AND 조건 처리의 결과, AND 조건을 만족하는 변수치의 조합이 존재하지 않을때(AND 조건 만족 변수치 격납 테이블(Ⅰ)107에 아무것도 격납되어 있지 않을때)에는, 제어 지령 결정 제어부 141은, 현재 처리하고 있는 룰을 버리고, 다음의 룰을 끄집어내서, 다시 조건 판정을 시작한다(복스 1525). 제어 지령 결정 제어부 141은, 여기까지의 처리를 어느 룰의 IF부에 지정해 있는 모든 내부 코오드에 대해서 행한 후, 후술하는 THEN부의 처리로 이동한다(복스 1526). 룰의 THEN부의 처리가 완료하면, 제어 지령 결정 제어부 141은, 병열 처리중 룰 플래그 테이블 108의 제1룰 처리중 플래그를 제로 크리어하는 것으로, 병열 처리중의 제1룰의 처리가 완료한 것을 선언하고(복스 1528), 재차 AND 조건 처리 완료의 감시 루프(복스 1514, 1515, 1523, 1524)에 들어간다. 또, 이 루프중에서, 룰 처리가 완료되어 있는 것을 검출하면, 재차 다음의 새로운 룰의 처리를 개시시킨다(복스 1515, 1524). 이상의 처리를 계속할 때에, 이제는 미처리의 룰이 없어지고(복스 156), 병열 처리중 룰 플래그 테이블 108에 도시되는 처리중의 룰도 없으면(복스 1534), 완료의 판정(복스 153, 154)에 이동한다. 또, 처리중의 룰이 있을 동안은, 루프(복스 1514, 1515, 1523, 1524)를 계속한다.
다음에, 룰의 THEN부의 처리(제14도의 복스 1527, 1531)를 설명한다.
제15도는, THEN부의 처리의 프로를 도시한 도면이다.
제14도에 도시한 THEN부의 처리, 복스 1527, 1531에 있어서, 복스 1527의 쪽은, AND 조건 만족 변수치 격납 테이블(Ⅰ)107의 정보에 따라서 처리를 행하고, 복스 1531의 쪽은, AND 조건 만족 변수치 격납 테이블(Ⅱ)110의 정보에 따라서 처리를 행하는 점이 틀릴뿐이다. 따라서, 이하에서는 복스 1527의 경우만을 설명한다.
우선, 제어 지령 결정 제어부 141은, 지금 처리하고 있는 룰의 THEN부의 1개의 내부 코오드를 끄집어 낸다. 룰 테이블 92에 있어서, 그의 내부 코오드에 대해서 수속명이 지정해 있을 경우, 제어 지령 결정 제어부 141은, 수속 기동부 144를 콜해서 지정 수속을 기동한다(복스 15272). 수속명이 지정되어 있지 않을 경우에는 수속 기동부 144는 콜되지 않는다(복스 15271). 수속 기동부 144는, 내부 코오드에 대해서 지정되어 있었던 수속명의 수속의 엔트리 어드레스를 수속 엔트리 테이블 111에서 찾아내고, 그의 어드레스의 수속을 AND 조건 만족 변수치 격납 테이블(Ⅰ)107을 인수(引數)로서 콜한다. 수속내에서는, AND 조건 만족 변수치 격납 테이블(Ⅰ)107의 수치를 임의로 변경할 수가 있다.
다음에, 제어 지령 결정 제어부 141은, 지금 처리하고 있는 룰의 Type(룰 테이블 92내의 룰 Type)를 조사하고, Type가 0인 경우, 중간 결론 기억부 145를 콜하고, 지금 처리하고 있는 룰의 THEN부의 끄집어낸 1개의 내부 코오드를 워크 테이블군내에 격납한다(복스 15273). Type가 1의 경우, 제어 지령 기억부 146을 콜하고, 지금 처리하고 있는 룰의 THEN부의 끄집어낸 1개의 내부 코오드를, 제어 지령 격납 테이블 105에 격납한다(복스 15274). 제어 지령 결정 제어부 141은 여기까지의 처리를 THEN부에 지정해 있는 모든 내부 코오드에 대해서 반복한다(복스 15275). 중간 결론 기억부 145는, 우선, 격납하고저 하는 내부 코오드에 있어서, 파라메타 부분에 변수 지정이 있는 파라메타부가 있을 경우, 그의 파라메타부의 내용을 AND 조건 만족 변수치 격납 테이블(Ⅰ)107에 격납되어 있는 어느행의 대응 하는 변수치와 치환한 내부 코오드를 생성한다. 변수 지정이 있는 파라메타부가 없을 경우는, 격납하고저 하는 내부 코오드를 그대로 사용한다. 다음에, 중간 결론 기억부 145는, 생성한 내부 코오드를 워크 테이블군에 격납한다. 이 격납의 방법은 상술의 설비 상태 내부 코오드 발생부 122가, 발생된 내부 코오드를 워크 테이블 군내에 격납하는 경우와 동일한 방법으로 행한다. 이 경우, 상술의 방법과 마찬가지로, 격납하고저 하는 내부 코오드가, 이미 워크 테이블군내에 격납되어 있을때에는 그의 내부 코오드를 새로이 격납하는 일은 없다. 또, 이상의 처리는, AND 조건 만족 변수치 격납 테이블(Ⅰ)107의 변수치가 격납되어 있는 모든 행에 대해서 반복한다. 제어 지령 기억부 146은, 중간 결론 기억부 145와 마찬가지로 우선 기억하여야 할 내부 코오드를 생성한다.
다음에, 그 내부 코오드를 제어 지령 격납 테이블 105의 선두에서 순차적으로 격납하여 간다. 이 경우, 격납하고저 하는 내부 코오드가 이미 제어 지령 격납 테이블 105내에 존재하면, 그 내부 코오드는 새로이 기억하지 않는다. 또 중간 결론 기억부 145와 마찬가지로, AND 조건 만족 변수치 격납 테이블(Ⅰ)107에 변수치가 격납되어 있는 모든 행에 대하여 이상의 처리를 반복한다.
최후로, AND 조건 처리부 606의 동작을 설명한다.
제16도는, AND 조건 처리부 606의 동작 프로 챠트이다. AND 조건 처리부 Ⅰ과 Ⅱ의 처리 내용의 차이는, 처리하는 테이블이 변수치 일시 격납 테이블(Ⅰ)106인가 (Ⅱ)109, AND 조건 만족 변수치 격납 테이블(Ⅰ)107인가, (Ⅱ)110인가의 차이며 처리 내용은 마찬가지이기 때문에 다음에서는 특히 구별하여 설명하지 않는다. AND 조건 처리부 606은, 기동 신호선 607에 기동 신호에 의하여 동작을 개시한다 이 처리부 606은 IF부가 있는 하나의 내부 코오드와 워크 테이블 군에 격납되어 있는 내부 코오드와의 일치 판정을 새로이 행하였을때에 받아들인 변수의 수치에 조합(변수치 일시 격납 테이블(Ⅰ)106에 격납되어 있다)과, 지금까지 일치 판정을 끝낸 IF부에, 내부 코오드에 있어서, AND 조건을 만족하고 있는 변수의 수치의 조합, 새로이 일치 판정을 행한 내부 코오드를 포함한 AND 조건을 만족하는 변수의 수치의 조합을 작성한다(재차 AND 조건 만족 변수치 격납 테이블의(Ⅰ)107에 격납한다). 즉, 제16도에 표시한 바와 같이 변수치 일시 격납 테이블(Ⅰ)106의 각행과 AND 조건만족 변수치 격납 테이블(Ⅰ)107에 각행의 모든 조합에 대하여서, AND 조건을 만족하는가 아닌가를 판정하여(복스 161), 만족하면 새로이 AND 조건을 만족하는 변수치의 조합을 작성하여, 기억하여 놓고(복스 162), 최후로 기억하여 놓은 새로운 변수치에 조합을 재차 AND 조건 만족 변수치 격납 테이블(Ⅰ)107에 격납한다(복스 163). 여기서 AND 조건을 만족할때라고 하는 것은 변수치 일시 격납 테이블(Ⅰ)106측과 AND 조건 만족 변수치 격납 테이블(Ⅰ)107측에서, 같은 변수명의 변수에 있어서 수치가 일치하던가, 또는 한쪽의 변수가 수치를 가지지 않은(즉, 블랭크가 들어가 있다) 경우이다. 또 새로운 AND 조건도 만족하는 조합은, 변수치 일시 격납 테이블(Ⅰ)106의 행과 AND 조건 만족 변수치 격납 테이블(Ⅰ)107행으로, AND 조건을 만족하는 1조의 조합에 있어서, 변수치에 일치하는 변수는 그에 일치하는 수치로, 또 한쪽이 블랭크의 변수는 수치를 가진측의 변수의 수치에 고치는 것에 의해서 작성된다.
제17도는, AND 조건 만족 변수 조합에 생성예를 표시하는 도면이다. (a)는 변수치 일시 격납 테이블(Ⅰ)106, (b)와 (c)는 AND 조건 만족 변수치 격납 테이블(Ⅰ)107이다.
이 예에서는, 변수치 일시 격납 테이블(Ⅰ)106의 1행째 변수치(W=a, X=블랭크, Y=b, Z=블랭크)와 AND 조건 만족 변수치 격납 테이블(Ⅰ)107의 1행째의 변수치(W=블랭크, X=e, Y=b, Z=블랭크)는, AND 조건을 만족하여, 새로이 AND 조건을 만족하는 변수치의 조합W=a, X=e, Y=b, Z=블랭크가, AND 조건 만족 변수치 격납 테이블(Ⅰ)107의 1행째에 생성되어 있다.
이와 같이 해서, 본 실시예에서는 IF-THEN 룰을 사용하여 간단히 각종 제어 논리를 기술할 수 가 있고, 이것에 따라서 내부 코오드화한 정보를 기억부 601의 테이블에 격납하는 것으로서, 간단히 각종 제어논리의 조건 판별 제어를 실시할 수가 있다. 그리고 또, 제어 대상의 변화, 제어 방식의 변화에 따른 조건판별 제어의 내용 변경에도 IF-THEN 룰을 변경하는 것에 의해서 간단히 대처할 수 있다. 그리고 또, 본 실시예에서는, AND 조건 처리를 제어부 602와, 별도 장치에 의해서 실행하고 그 사이에 다른 룰의 처리를 제어 장치 602로 진행시킨 것에 의하여, 다수의 룰을 동시에 병열로 처리할 수가 있다. 이것에 의하여, 어떤 설비 상태의 발생에서 제어 지령이 결정되ㅇ, 발신되기 까지의 처리 시간이 종래에 비하여, 단축되기 때문에, 고속이 제어 응답이 요구되는 제어 대상의 제어에 대하여서도 사용할 수가 있다. 또 단위 시간당의 처리할 수 있는 룰의 수 대상의 상태수가 증가하여 룰의 수 상태수가 많은 큰 규모의 대상에 대하여서도 적용이 가능하다.
그리고 실시예에서는, 제14도에 도시하는 것과 같이, 복스 1514, 1515, 1523, 1524의 루프에 의한 소위 보링방식으로, AND 조건 처리부 606의 처리 완료를 감시하고 있으나, 완료 신호선 608의 신호를 끼어들기 신호로 하고, 끼어들기에 의해 AND 조건 처리부 606의 처리 완료를 기다리는 방법도 있다. 또, 실시예에서는 AND 조건 처리부 606을 2대 사용하고 있으나, 3대 이상이라도 제14도의 복스 1514, 1515, 1523, 1524의 감시 루프를 같은 형식으로 증가하는 것만으로 동일하게 처리할 수 있다. 이것은 끼어들기 방식에 의해서도 동일하다. 다음에 제2의 목적에 대응한 제2의 실시예를 설명한다.
제20도는 제2도의 장치에 있어서, 룰의 파라메타부에 변수가 기술되어 있을 경우의 처리의 상세 도면이다.
룰 기억부 11의 안에는, 지름 룰 운용부 12가 처리되어 있는(끄집어 낸다) 1개의 룰만을 도시하고 있다. 룰 운용부 12는, 우선 룰의 IF부의 최초의 IF의 문자열"(A<X><Y>)"와 상태 기억부 13에 격납되어 있는 문자열과의 일치 판정을 행한다. 이때의 일치 판정은 문자열의 파라메타부를 제외한 부분 즉"(A)"로 행한다. 일치하는 문자열이 상태 기억부 13중에 존재하면 일치하는 문자열중의 파라메타부의 수치를 IF의 문자열중의 대응하는 파라메타부에 기술하고 있는 변수의 수치로서 워크 테이블 21로 취입한다(①). 또한 룰운용부 12는, 다음의 IF의 문자열"(B<Z><Y>)"에 대해서 동일한 처리를 행하여 상태 기억부 13의 문자열의 파라메타부의 수치를 IF부의 문자열의 변수치로서 다른 워크 테이블 22에 취입한다(②). 그후, 양 워크 테이블 21, 22에 취입된 변수치를 조합하여, AND 조건을 만족하는 변수치를 생성하여(룰의 IF부의 조건은 AND 조건으로 취급한다), 다른 워크 테이블 23에 격납한다(③). IF부의 문자열이 3개 이상 존재하는 경우 또한 다음의 IF부의 문자열이 3개 이상 존재하는 경우 또한 다음의 IF부의 문자열에 대해서 변수치를 취입하고(④), 취입한 변수치와 이제까지 생성한 AND 조건을 만족하는 변수치(이 경우, 워크 테이블 23에 격납되어 있는 것)를 조합하고, 방금 취입한 변수치도 포함한 후에 AND 조건을 만족하는 변수치를 생성하여, 워크 테이블에 격납한다(⑤). 이 처리는 3번째 이상의 IF의 문자열 모두에 대해서 반복된다. 그후, 최종적으로 AND 조건을 만족하는 변수치가 존재하면, 그 수치를 THEN부의 문자열에 대응하는 변수로 기억한 것을, 새로이 상태 기억부 13에 보태서 기억한다(⑥).
제21도는 공지의 AND 조건 만족 변수치 생성 처리(JOIN 연산)의 설명도이다.
제21도에서는 제21도의 워크 테이블 21과 22의 변수치에서 AND 조건을 만족하는 변수치를 생성하고, 워크 테이블 23에 격납하여가는 도중의 상태를 표시하고 있다. AND 조건을 만족하는 변수치의 생성 처리는 1개의 워크 테이블이 있는 1행과 다른 1개의 워크 테이블이 있는 1행에 있어서, 공통변수(2개의 테이블에서 함께 수치가 취입된 변수)의 수치가 일치하는 행의 조합을 모두 찾아내어, 각각의 조합에 대해 공통 변수의 수치는 그대로, 다른 변수는 수치를 가진 쪽의 변수의 수치로한 새로운 변수치를 생성하는 것(이것을 행데이터의 중합이라고 한다)이다. 예를들면 제21도의 예에서는 워크 테이블 21의 제1행째와, 워크 테이블22의 제2행째에 있어서, 공통 변수 Y의 수치가 모두 "a"로 일치하고, 여기에서 새로운 변수치로서 워크테이블 23의 제1행째의 X=34, Y=a, Z=β가 생성되어 있다. 이 처리는, 소위 테이블 데이터의 JOIN 연산이고, 종래는 프로그램에 의해서 실행되고 있는 것이 일반적이다.
이미 제안된 룰형 시스템에서도, 제21도에 도시한 것과 같이 워크 테이블 21과 22의 각 행의 모든 조합을 끄집어내어(복스 31), 이에 대해서 차례로 공통 변수의 수치가 일치하는가 아닌가를 판정하여(복스 32), 일치하면 새로운 변수치를 생성하고(복스 33), 다른 워크 테이블 23에 셋트하는 방법을 이용하고 있다.
제22도는 본 발명의 동작 원리를 도시한 도면이다.
이미 제안된 룰형 시스템에 있어서의 AND 조건 만족 변수치 생성 처리의 JOIN 연산은, 프로그램에 의해 실현되고 있으므로, 처리를 축차적으로만 실행할 수 없고 제21도에 도시한 것과 같이, 2개의 워크 테이블의 각 행을 차례로 조합하여 공통 변수의 수치를 비교하여, 수치가 같은 행의 페어를 찾아내고 있다. 즉, AND 조건을 만족하는 변수치의 조합을 축차 검색하는 것에 의해 찾아내는 방식이고, 처리에 시간이 너무 걸린다. 이에 대해서 본 발명은 격납되어 있는 모든 데이터에 대해서 동시에 비교 겸색을 행할 수가 있는 연상 기억 장치(일반으로 Content Addressable Memory로 부르고 있으므로 이하 CAM 이라고 한다)를 이용하여, AND 조건을 만족하는 변수치의 조합의 검색을 고속으로 행하는 것이다.
제22도에 있어서, 우선, JOIN 연산을 행하여야할 워크 테이블의 한쪽을 통상의 기억 장치 41에 또 다른 한쪽을 1개의 CAM42에 각각 격납한다. 또한 JOIN 연산의 결과의 테이블 테이터는, 별도의 CAM43에 격납한다. 동작은 다음과 같다. 즉 통상의 기억 장치 41에서 테이블 데이터를 1행씩 끄집어내어, 이것을 CAM42의 검색 데이터로 한다(그리고 이때 공통 변수 Y 이외의 테이터 X, Z는 마스크한다). CAM42에서는, 비교부 44에 의해 CAM42내의 테이블 데이터의 모든 행에 대해 데이터의 비교 처리를 동시에 행한다. 검색 데이터와 공통 데이터의 수치가 일치한 CAM42내의 테이블의 행은 1개씩 끄집어 내어 행 데이터의 중합용 전용 회로 45에서, 제21도에 있어서의 복스 33과 같은 처리로 행하여 검색 데이터와 중합되고 다른 CAM43에 차례로 격납된다.
본 장치에서는 CAM을 2개 준비하는 것에 의해, 룰형 소프트 웨어의 룰에 있어서, IF부의 조건을 기술한 문자열이 3개 이상 있고, 방금 생성한 AND 조건을 만족하는 변수치와, 또 다음의 IF의 조건에 대해 취입한 새로운 변수치를 조합, 재차 JOIN 처리를 반복하지 않으면 안되는 경우에 새로운 변수치를 기억장치 41에 취입하여 CAM42, 43의 역할을 적절히 전환하는 것에 의해서 JOIN 연산을 데이터의 전송을 행하지 않고, 연속해서 실행할 수가 있다. 이로 인해 룰형 소프트 웨어의 룰의 처리를 효율적으로 실행하는 것이 가능하게 된다.
제18도는 본 발명에 따른 JOIN 연산 장치의 1실시예의 블럭도면이다.
제18도에 있어서 내부 데이터 버스 504 및 내부 어드레스 버스 505는 각각 본 장치 내부에 데이터 신호용의 버스 라인, 어드레스 신호용의 버스 라인이다. 한편 외부 데이터 버스 506, 외부 어드레스 버스 507은, 각각 본 장치 내부에 메모리 501, CAMⅠ502, CAMⅡ503, 기타 플래그, 레지스터등을 외부에서 액세스하기 위한 데이터 신호용의 버스 라인이나, 본 장치에서는 외부 액세스 모오드와 내부 동작 모오드의 2개가 있다. 외부 액세스 모오드는, 외부 어드레스 버스 507에 외부에서 어드레스를 지정하고, 외부 데이터 버스 506위의 데이터를 본 장치 내부에 기억하는 것, 혹은 본 장치 내부의 데이터를 외부 데이터 버스 506상에 호출할 수가 있는 모오드이고, 내부 동작 모오드는 제22도에 도시한 원리에 따라서 자동적으로 JOIN 연산을 실행하는 모오드이다. 모오드의 절환은 모오드 플래그 512에 의해서 지정된다. 즉 모오드 플래그 "0"일때에는 외부 액세스 모오드, 모오드 플래그 "1"일때는 내부 동작 모오드를 표시한다. 모오드 플래그 "0"일 때에는 외부 액세스 모오드, 모오드 플래그 "1"일때는 내부 동작 모오드를 표시한다. 모오드 플래그 512는, 신호선 5002의 랫치 신호에 의하여 내부 데이터 버스 504의 신호를 신호선 5003을 통하여서 랫치하는 것에 의하여 "1"에 셋트되어, 신호선 5004의 리셋트 신호에 의하여 "0"에 리셋트된다. 또 모오드 플래그 상태는, 신호선 5001에 송출된다. 통상, 모오드 플래그는 "0"의 상태에 있고, 외부 액세스 모오드로 되어 있다.
버스 절환 제어부 508은, 모오드 플래그 512의 상태를 표시하는 신호선 5001의 신호에 따라서 외브액세스 모오드시에는 외부 데이터 버스 506, 외부 어드레스 버스 507을 각각 내부 데이터 버스 504, 내부 어드레스 버스 505에 결합하여 내부 동작 모오드시에는 이것을 떼어내고, 내부 어드레스 발생시 509의 어드레스 신호선 5006을 내부 어드레스 버스 505에 결합하는 동작을 행한다.
내부 어드레스 발생부 509는, 내부 동작 모오드시, 메모리 501, CAMⅠ502, CAMⅡ503의 데이터를 호출기억하는 어드레스를 발생하는 부분이다. 이 내부 어드레스 발생부 509는 신호선 5005위에 메모리 501, CAMⅠ502, CAMⅡ503내의 레지스터, 메모리 셀에 어느것이던 하나를 지정하는 제어 신호가 동작 제어부 517에서 발생되면, 이들의 신호에 각각 대응하는 어드레스를 발생하여 신호선 5006상에 송출한다. 어드레스의 발생은 메모리 501, CAMⅠ502의 메모리 셀 CAMⅡ503의 메모리 셀에 대해서는 어드레스 공간의 선두에서 차례로 액세스하는 것과 같이 행한다.
제19도는 제18도의 메모리와 2개의 CAM의 어드레스 관계를 표시하는 도면이다.
제19도에 표시하는 바와 같이 메모리 501, CAMⅠ502의 메모리 셀 CAMⅡ503의 메모리 셀의 액세스를 지정할때마다 다음에 발생되는 어드레스는 각각 필요한 만큼 인크리멘트 되어 있다. 또 CAMⅠ502, CAMⅡ503내의 레지스터류에 대해서는, 각각에 할당되어 있는 어드레스를 발생한다. 또 신호선 5007의 리셋트 신호에 의하여 메모리 501, CAMⅠ502, CAMⅡ503의 메모리 셀에 대한 발생 어드레스는 메모리 공간의 선두에 리셋트된다.
메모리 501은 제22도에 표시한 바와 같이 JOIN 연산을 행하는 한쪽의 워크 테이블을 격납하기 위한 것이다. 어드레스 신호선 5008 위의 어드레스 신호의 지정하는 메모리내의 데이터를 제어 신호선 5010 위의 제어 신호에 따라서 데이터 신호선 5009를 통하여 액세스할 수 있다. 또, 메모리내의 데이터량 레지스터 513은, 메모리 501내에 격납한 워크 테이블내에 실제로 데이터가 격납되어 있는 행수를 표시한 것이다. 이 레지스터는, 신호선 5011 위의 랫치 신호에 의하여, 내부 데이터 버스 504의 데이터를 신호선 5012를 통하여 랫치하는 것에 의하여 셋트된다. 또, 이 내용은 신호선 5013위에 송출된다.
CAMⅠ502, CAMⅡ503은 제22도에 표시한 바와 같이 JOIN 연산을 행하는 다른쪽에 워크 테이블 및 JOIN 연산을 행하는 결과의 워크 테이블에 격납하기 위한 것이다. CAMⅠ502, CAMⅡ503은, 통상의 메모리 501과 마찬가지로 어드레스 신호선 5014, 데이터 신호선 5015, 제어 신호선 5016을 사용하여 액세스 됨과 동시에, 리셋트 신호선 5017, 검색 신호선 5018, 검색 결과 신호선 5019에 의하여 연상 검색 기능이 콘트롤 된다.
제23도는, CAM내의 각 레지스터의 배치 도면이다. CAM의 연상 겸색 기능을 제23도에 의하여 설명한다.
제23도에 있어서 메모리 셀 63에는, 연상 겸색되어야 할 데이터가 격납된다. 또, 검색 데이터 레지스터 61에는 검색하여야 할 데이터가 격납된다 마스크 데이터 레지스터 62는 검색 데이터 61의 데이터중, 검색시에 고려하지 않은 부분의 마스크를 지정하는 것이다. 마스크 데이터 레지스터 62에서 "0"이 격납되어 있는 부분에 대응하는 검색 데이터 레지스터 61의 데이터는 마스크되어 검색시, 데이터 일치의 비교 대상으로는 되지 않는다("1"이 격납되어 있는 부분만의 비교 대상으로 된다). 이들의 레지스터 61, 62, 메모리 셀 63은 통상의 메모리와 마찬가지로, 신호선 5014, 5015, 5016을 사용하여 액세스 된다. 이들의 레지스터 61, 62 메모리 63에 데이터를 격납한 후, 검색 신호선 5018을 온하는 것에 의하여, 연상 검색이 행하여진다. 즉, 검색 데이터 레지스터 61과 메모리 셀 63내의 데이터중, 마스크 데이터 레지스터 62로 "1"이 지정되어 있는 부분의 데이터의 일치 비교가, 메모리 셀 63내의 모든 데이터가 동시에 행하여져, 일치한 데이터의 메모리 셀과 63의 행에 대응하는 검색 결과 플래그 64에 "1"이 된다. 검색 결과 플래그 64에 1개라도 "1"이 되면, 이것은 제18도의 검색 결과 신호선 5019 위에 표시되어, 외부에 전달된다. 또, 1개라도 "1"이 안되면 신호선 5019에는 검색 결과가 없는 것이 표시된다. 또 검색 결과 플래그 64에서 "1"이 되는 것의 최초의 행의 메모리 셀 63내의 데이터가 데이터 신호선 5015에 호출된다. 다음에 다시 검색 신호선 5018이 온되면, 검색 결과 플래그 64에서 2번째의 "1"이 되어 있는 행의 메모리 셀 63내의 데이터가, 데이터 신호선 5015에 송출되어 1번째의 플래그는 지워진다. 그리고 또 리셋트 신호선 5017을 온하는 것에 의하여 모든 메모리 셀 63의 내용이 크리어된다.
CAMⅠ502, CAMⅡ503의 중 어느것인가를 JOIN 연산을 행하는 워크 테이블에 어느것인가를 JOIN 연산결과를 격납하는 워크 테이블에 각각 사용하는 가는 테이블 지정 플래그 511에 의하여 지정된다. 이 플래그가 "1"때에, CAMⅠ502를 JOIN 연산을 행하는 워크 테이블로서, CAMⅡ503을 JOIN 연산의 결과를 격납하는 워크 테이블로서 각각 사용한다. "0"일때에는, 그의 역으로 된다. 테이블 지정 플래그 511은, 신호선 5020의 랫치 신호에 의하여, 내부 데이터 버스 504의 신호를 신호선 5021을 통하여 랫치하는 것에 의하여 셋트된다. 또 그의 내용은 신호선 5022에 송출된다.
외부 액세스 제어부 510은, 지금까지 기술한 메모리 501, CAMⅠ502, CAMⅡ503, 모오드 플래그 512, 테이블 지정 플래그 511, 메모리내의 데이터량 레지스터 513 및 다음에 기술하는 CAM내의데이터량 카운터 5171을 외부에서 액세스하기 위한 제어를 행하는 부분이다. 이 외부 액세스 제어부 510에 있어서, 외부 어드레스 버스 507위의 신호가 데코우더되어, 상기 어느것인가 액세스하는가가 결정되어, 신호선 5023의 리이드/라이크 신호에 따라서, 액세스 대상에 제어 신호, 랫치 신호를 송출한다. 또 JOIN 연산의 완료시 모오드 플래그가 512가 온에서 오프로 변경되었을 때) 외부에 대해 JOIN 연산의 종료를 표시하는 끼어들기 신호를 신호선 5024위에 송출한다.
검색 레지스터 514는, 메모리 501내에 격납되어 있는 워크 테이블의 1행의 데이터를 끄집어내어서 격납하는 레지스터, 검색 결과 레지스터 515는 CAMⅠ502, 혹은 CAMⅡ503을, 이의 레지스터 내용과 같은 데이터를 검색 데이터로서 연장 검색할 때에, 일치한 검색 결과 데이터를 CAM에서 끄집어내어서 격납하는 레지스터이다. 이들의 레지스터는 신호선 5025위의 랫치 신호에 의하여, 내부 데이터 버스 504의 신호를 신호선 5026을 통하여 랫치하는 것에 의하여 셋트된다. 그의 내용은, 각각의 신호선 5027, 5028에 송출된다. 또 검색 데이터 레지스터 514에는, 신호선 50282롤 온하는 것에 의하여 그 내용을 신호선 50281을 통하여 내부데이터 버스 504위에 송출할 수 있다.
데이터 중합기 516은, 제5도에서 설명한 바와같이 데이터의 중합의 연산을 행하는 부분이다. 신호선 5027, 5028의 신호를 중합시켜, 신호선 5029의 타이밍 신호에 의하여 중합된 결과의 신호를 신호선 5030위에 송출한다.
동작 제어부 517은, 내부 동작 모오드시, 지금까지 기술한 각부의 동작타이밍을 제어하고 JOIN 연산을 진행시키는 부분이다. 모오드 플래그 512, 테이블 플래그 511의 상태, 메모리내 데이터량 레지스터 513의 내용 CAMⅠ502, CAMⅡ503, 연산 검색의 결과(검색 결과 신호선 5019의 상태)에 따라서, 적당히, 다른 부분에 신호를 발생하는 것에 의하여 제어를 행한다. 또 동작 제어부 517은 내부에 CAM내 데이터량 카운터 5171을 갖고, JOIN 연산의 결과의 데이터량을 카운터한다. 이 카운터 5171에는 JOIN 연산 결과를 격납하는 워크 테이블에 실제로 데이터의 격납되어 있는 행수가 표시된다. 이 카운터 5171의 내용은 외부 액세스 모오드시에 외부 어드레스 버스 507에 이 카운터 5171에 할당된 어드레스를 지정하고 리이드 신호를 신호선 5023에 발생시키는 것에 의하여 호출이 가능한다. 즉, 이 상기 리이드 신호에 의하여, 외부 액세스 제어부 510은 신호선 5172에 호출 신호를 발생시켜, 신호선 5173을 거쳐서 카운터 5171의 내용을 데이터 버스 506에 호출할 수가 있다.
리셋트부 518은 이 JOIN 연산 장치의 초기 상태를 셋트하는 부분과 외부의 리셋트 신호선 5031의 리셋트 신호에 의하여 모오드 플래그 512, CAMⅠ502, CAMⅡ503을 리셋트하는 신호를 발생시킨다.
제24도∼제29도는, 본 발명의 동작시의 데이터 프로 도면이다. 다음 제18도, 제19도, 제23도 및 제24도∼제29도를 참조하면서 본 실시예의 동작을 설명한다.
제24도∼제29도에 있어서의 기호, 번호는 제18도, 제19도와 같다. JOIN 연산의 시작에 앞서, 사용자는 우선 신호선 5031에 리셋트 신호를 보내고, 본 장치의 초기 상태를 셋트한다. 리셋트 신호에 의하여 리셋트부 518은, 내부 리셋트 신호를 신호선 5017, 5004에 발생시켜 CAMⅠ502, CAMⅡ503의 내부 레지스터 61, 62, 메모리셀 63, 플래그 264를 크리어하여 모오드 플래스 512를 "0"에 셋트한다.(제24도의 ①). 모오드 플래그 512가 "0"에 셋트되는 것에 의하여 버스 절환 제어부 508은 외부 데이터 버스 506과 내부 데이터 버스 504 및, 외부 어드레스 버스 507과 내부 어드레스 버스 505를 결합하여 외부에서 데이터를 셋트할 수 있는 상태로 한다. 다음에 사용자는 JOIN 연산을 행하여야 할 2개의 워크 테이블 중, 한쪽의 워크 테이블의 데이터를 CAMⅠ502의메모리 셀 63에 셋트한다(제24도의 ②). 다음에서는 CAMⅠ502에 JOIN 연산을 행하여야할 데이터를 셋트하고, CAMⅡ503에 JOIN 연산의 결과의 데이터를 셋트할 때의 경우에 대해 설명한다. CAMⅠ502의 메모리 셀 63의 데이터의 셋트의 제어는, 외부 액세스 제어부 501에 의해서 행하여 진다. 사용자는 외부 데이터 버스 506위에 데이터를 셋트하고, 또 데이터를 격납하여야 할 CAMⅠ502의 메모리 셀 63에 할당된 어드레스를 외브 어드레스 버스에 송출하고, 라이트 신호를 신호선 5023에 발신한다. 데이터 및 어드레스는 내부 데이터 버스 504 및 내부 어드레스 버스 505에 전달되어, CAMⅠ502의 신호선 5015, 5014에 전달된다. 외부 액세스 제어부 510은, CAMⅠ502의 액세스 제어신호를 CAMⅠ502의 신호선 5016에 대하여 발생시켜, 데이터를 CAMⅠ502의 메모리 셀 63에 격납한다. 마찬가지로 하여, CAMⅡ503, 메모리 501에 대하여서도 외부 액세스 제어부 510에 의하여 액세스하여 데이터를 격납한다. 사용자는 또, JOIN 연산을 행하여야 할 나머지 한쪽의 데이터를 메모리 501에 셋트한다(제24도의 ③). 동시에 메모리 501에 셋트한 데이터의 행수를 메모리내 데이터량 레지스터 513에 셋트한다.(제24도의 ④). 이 레지스터 513에의 셋트는 메모리 501, CAMⅠ502, CAMⅡ503에의 셋트와 마찬가지로, 외부 액세스 제어부 510에 의하여 행해진다. 즉, 셋트하여야할 데이터를 외부 데이터 버스 506에 송출하는 것에 의하여 데이터는 내부 데이터 버스 504에 전달된다. 그리고, 또 메모리내 데이터량 레지스터 513에 할당되어 있는 어드레스를 외부 어드레스 버스 507에 셋트하고, 신호선 5023에 라이트 신호를 발신하는 것에 의하여 외부 액세스 제어부 510은 메모리내 데이터량 레지스터 513의 신호선 5011위에 랫티 신호를 발생하여 내부 데이터 버스 504위의 데이터를 신호선 5012를 거쳐서 취입한다. 또 테이블 지정 플래그 511 : 모오드 플래그 512에 대한 외부에서의 셋트도, 마찬가지로 하여 행하여진다. 사용자는 이들의 데이터를 셋트한 후, JOIN 하여야할 2조의 데이터의 공통 변수치 이외의 변수(제21도에 있어서의 X, Z 참조)를 마스크하는 데이터를, CAMⅠ502의 마스크 데이터 레지스터 62에 격납하여(제25도의 ⑤), JOIN 연산을 행하여야 할 데이터가 격납되어 있는 쪽의 CAM(여기에서는 CAMⅠ502)를, 메모리 501의 JOIN 연산 상EO로서 테이블 지정 플래그 511에 지정하여(제25도의 ⑥, 또 모오드 플래그 512를 "1"에 셋트하여 JOIN 연산을 개시시킨다(제25도의 ⑦). 모오드 플래그 512에 "1"이 셋트되면, 버스 전환 제어부 508은 외부 데이터 버스 506과 내부 데이터 버스 504 : 외부 어드레스 버스 507과 내부 어드레스 버스 505를 떼어놓고, 내부 어드레스 버스 505에 신호선 5006을 결합하여 내부 어드레스 발생부 509에서 발생한 어드레스 신호를 송출한다. 동작 제어부 517은 신호선 5001의 신호가 "1"(내부 동작 모오드)로 되는 것에 의하여 JOIN 연산의 제어 동작을 개시한다. 동작 제어부 517은, 우선 리셋트 신호를 신호선 5007에 발생시켜 내부 어드레스 발생부 509를 셋트한다. (또 리셋트의 내용은 상술한 내부 어드레스 발생부 509의 설명을 참조). 그후 동작 제어부 517은 제22도에서 설명한 동작 원리에 따라서 JOIN 연산을 실행한다. 즉 메모리 501내에 격납되어 있는 워크 테이블 데이터를 선두에서 1행씩 차례로 끄집어내고, 다음의 처리를 메모리내 데이터량 레지스터 513에 지정된 회수만큼 반복한다. 동작 제어부 517은 우선 내부의 CAM내 데이터량 레지스터 5171을 제로 크리어한다. 다음에 신호선 5005에 메모리 501을 지정하는 제어 신호를 발신하여, 내부 어드레스 발생부 509에 메모리 501을 액세스하기 위한 어드레스를 발생시킨다(어드레스 발생 방법은 상술의 내부 어드레스 발생부 509 설명 참조), 그후 신호선 5010에 메모리 리이드의 제어 신호를 발생시켜, 메모리 501에 격납되어 있는 워크 테이블 데이터의 1행의 내용을 내부 데이터 버스 504위에 호출한다. 호출된 데이터는, 검색 데이터 레지스터 514의 신호선 5025에 랫치 신호를 발생하는 것에 의하여 신호선 5025를 거쳐서 검색 데이터 레지스트 514에 랫치된다.(제26도의 ⑧). 다음의 동작 제어부 517은, 신호선 50282에 데이터 송출 신호를 발생하여 검색 데이터 레지스터 514의 내용을 신호선 50281을 거쳐서 재차 내부 데이터 버스 504위에 송출한다. 송출된 데이터는 CAMⅠ502내의 검색 데이터 레지스터 61에 호출된다. 즉 동작 제어부 517은 CAMⅠ502의 검색 데이터 레지스터 61의 어드레스를 발생시켜, CAMⅠ502의신호선 5016에 라이트 신호를 발신하는 것에 의하여 CAMⅠ502내에 데이터를 취입한다.(제26도의 ⑨). 이하, 메모리 501, CAMⅠ502, CAMⅡ503, 그의 기타의 레지스터 액세스 순서는 상술한 것과 같기 때문에 설명을 생략한다. 동작 제어부 517은, CAMⅠ502의 검색 데이터 레지스터 61에 데이터를 격납한 후, CAMⅠ502의 신호선 5018에 검색 신호를 발생하여 연상 검색을 행한다. 동작 제어부 517은 CAMⅠ502의 검색 결과 신호(신호선 5019)가 오프로 되기까지의 다음 동작을 반복한다. JOIN 연산 결과를 CAMⅡ503에 격납한다.
즉, 검색 신호(신호선 5018)를 차례를 온하여서 검색 결과 데이터를 내부 데이터 버스 504위에 송출하여 검색 결과 레지스터 515에 랫치한다(제27도의 ⑩). 그의 후, 검색 데이터 레지스터 514의 내용과 검색 결과 레지스터 515의 내용을 데이터 중합기 516으로 중합하고, 신호선 5029에 송출 신호를 발신하는 것에 의하여 신호선 5030을 거쳐서 데이터 중합 결과를 내부 데이터 버스 504에 송출한다. 송출된 데이터는 CAMⅡ503의 메모리 셀 63의 선두에서 차례로 격납된다(제27도의 ⑪). 또, 격납 어드레스는 내부 어드레스 발생부 509가 상술한 순서에 의하여 발생된다. 또, 데이터 격납시 CAM내 데이터량 카운터 5171을 카운 엎한다. 지금까지의 동작을 메모리내 데이터량 레지스터 513에 지정된 회수만큼 반복하면, 동작 제어부 517은 리셋트 신호를 CAMⅠ502의 신호선 5017, 신호선 5004에 발생하여, CAMⅠ502를 크리어하여 모오드 플래그 512를 "0"에 리세트한다.(제28도 참조). 이것에 의하여, 재차 이 장치의 내부를 외부에서 액세스하는 것이 가능하게 된다. 또 JOIN 연산의 완료는 모오드 플래그 512가 "1"에서 "0"에 변화한 시점에서 외부 액세스 제어부 510이 끼어들기 신호를 신호선 5024를 발진하는 것에 의하여 통지된다. 그대로 JOIN 연산의 결과를 끄집어낼 때에는 외부에서 테이블 지정 플래그 511에서 지정하는 내용으로 결정되는 CAMⅡ503의 메모리 셀 63의 내용을, CAM 데이터량 카운터 5171에 표시된 행수(行數)만큼 호출하면 좋다. 외부에서의 호출은 상술한 바와같이 외부 액세스 제어부 510에 의하여 제어된다. 또, 룰형 소프트웨어에 있어서의 룰의 IF부에 조건이 3개 이상 지정되어 있고, 재차 JOIN 연산을 시행하지 않으면 안될 때에는 3개째 이상의 IF에 대해서 취입된 워크 테이블 데이터를 메모리 501에 셋트하여(제29도의 ⑫), 메모리내 데이터량 레지스터 513에 그의 행수(제29도에서는 4)를 세트한 후(제29도의 ⑬), 마스크 데이터를 지금까지의 JOIN 연산 결과의 남아 있는 CAM(여기에서는 CAM503)에 셋트하여(제29도의 ⑭), 이의 CAM을 JOIN 연산 상대로 지정하여(제29도의 ⑮), JOIN 연산을 개시시키면 좋다.
이와 같이 종래의 룰형 시스템에서는 차례로 검색하는 것에 의하여 공통 변수치가 같은 워크 테이블의 행의 조합을 검색하고 있는데 대하여서 본 실시예에서는 CAM의 병열 검색 기능을 이용하는 것에 의하여 크게 처리속도를 향상시킬 수가 있다. 특히 종래에 있어서는 처리 시간이 JOIN 연산을 행하여야할 2개의 워크 테이블 데이터에 격납되어 있는 데이터량(행수)의 곱에 비례하여 증대하고 있는데 대하여 본 실시예에서 는 한쪽의 테이블의 데이터량만이 대략 비례하는 것이 되므로, 대상 상태의 량의 증가에 대하여 처리 시간이 상승적으로 증대하는 일은 없다. 종래의 룰형 소프트 웨어의 데이터를 기본으로 하여 시산(試算)한 결과, 예를들면 M68000 마이크로 컴퓨터를 0.5mSec/룰로 되어 이 수치는 종래의
Figure kpo00001
의 처리 시간이다. 또, 본 실시예에서는 CAM을 2개 구비하는 것에 의하여 연속하여 JOIN 연산을 행할 필요가 있을 때에도 데이터의 전송을 수반하는 일이 없이 효율적으로 처리를 실행할 수 있다.
또, 본 실시예에서는 리레쇼날 데이터 베이스(relational data base)와 같은 데이터 사이의 집합적 연산을 수반하는 시스템에 대하여서도 유효하다.
다음에, 제2의 실시예의 변형예로서 룰을 사용하는 가독석 이해성 및 변경 용이성이 높은 논리 기술 방식을 다량의 상태량을 취급하는 필요가 있는 대상에도 적용가능하게 하기 위하여, 대용량의 워크의 JOIN연산을 시행할 수 있는 실시예를 설명한다.
본 실시예에서는 AND 조건을 취하기 위한 2개의 워크 테이블과 그 결과를 격납하는 1개의 테이블을 3개의 통상의 메모리에 격납하여 다량의 데이터에 대해서는 그의 테이블을 분할처리하는 것에 의하여 비교적 소규모의 CAM을 효율좋게 이용하여, AND 처리를 실행하는 것을 가능하게 한다. 다음의 본 장치의 동작의 원리를 제30도를 이용하여 설명한다.
제30도에 있어서 워크 테이블 50에, CAM내의 메모리 셀 55의 용량을 초과하는 데이터가 취입되었을 때에는 워크 분할처리를 행한다. 제1호째의 분할처리는 CAM53내의 메모리 셀 55에 들어간 만큼의 데이터를 워크 테이블 50에서 끄집어내어 메모리 셀 55내에 송출한다. 다음의 워크 테이블 51의 제1호째의 검색 데이터를 CAM53내의 검색 데이터 레지스터 56에 송출하여, CAM53을 동작시켜, 일치시킨 데이터를 행 데이터 중합기 54를 통하여 테이블 52에 격납한다. 다음에 워크 테이블 51에서 제2행째의 데이터를 검색 레지스터 56에 송출하여 CAM54를 작동시켜, 그 결과를 테이블 52에 격납한다. 이 동작을 제 n회째의 검색까지 반복하여 CAM53을 작동시킨다. 다음에 2회째의 분할처리는 워크 테이블 50에 남아있는 제2회째의 분할처리 데이터를 CAM53내의 메모리 셀 55에 새로이 송출하여 n개의 검색 데이터에 대해서는 CAM53을 작동시켜, 테이블 52에 결과를 격납한다. 마찬가지로 하여, 워크 테이블 50의 데이터가 없어질 때까지 분할 처리를, t회 반복한다. 이상의 데이터 처리방식에 의하여, 대용량 워크 데이터가 호출되었을 때에도 비교적 적은 용량의 CAM으로 JOIN 연산을 할 수 있는 것이 가능하게 된다.
본 발명의 장치에 의하여 JOIN 연산을 행하는 데이터량이 m, n행이라고 하면, 처리시간은 연산 장치를 사용하지 않을 때에는 m×n에, 2개의 CAM을 사용한 종래의 연산 장치를 사용할 때에는 m+n, 본 발명의 연산 장치를 사용할 때에는 평균 분할처리 회수를 α로 하여 αm+2n에, 각각 비례하는 것으로 된다. 본 발명의 연산 장치는 2개의 CAM을 사용한 것보다 처리 속도가 늦어지지만 JOIN 연산에 의하여서 변동하는 데이터의 양을 알면 워크 테이블로서 사용한 통상의 메모리의 용량과 CAM의 용량을 결정하는 것에 의하여 비교적 적은 용량의 CAM를 사용하여 CAM의 사용 효율이 좋은 JOIN연산 장치가 실현된다.
상술의 원리에 따르는 실시예를 도면을 사용하여 설명한다.
제31도는 본 발명에 의한 JOIN 연산 장치의 다른 실시예의 블럭 구성도이다.
제31도에 있어서, 내부 데이터 버스 504 및 내부 어드레스 버스 505는 각각 본 장치 내부의 데이터 신호용의 버스 라인 : 어드레스 신호용의 버스 라인이다. 또, 외부 데이터 버스 506, 외부 어드레스 버스 507은 각각 본 장치 내부의 메모리Ⅰ 50110, 메모리Ⅱ 50120, 메모리Ⅲ 50130, CAM502, 기타의 블럭 레지스터등을 외부에서 액세스하기 위한 데이터 신호, 어드레스 신호용의 버스 라인이다.
본 장치에는, 외부 어드레스 507에 외부에서 어드레스를 지정하여 외부 데이터 버스 506위의 데이터를 본 장치의 내부에 기억한다. 혹은 본 장치 내부의 데이터를 외부 데이터 버스 506위에 호출할 수가 있는 외부 액세스 모오드와, 제4도에 표시한 처리방식에 따라서 대용량의 워크를 분할하여 자동적으로 JOIN 연산을 실행하는 내부 동작 모오드등이 있다. 모오드의 전환은 모오드 플래그 512에 의해서 지정된다. 모오드 플래그 "0"시에는 외부 액세스 모오드 "1"시는 내부 동작 모오드를 표시하고 있다. 모오드 플래그 512는 신호선 5002의 랫치 신호에 의햐여 내부 데이터 버스 504의 신호를 신호선 5003을 통해 랫치하는 것에 의하여 "1"에 셋트되어, 신호선 5004의 리셋트 신호에 의하여 셋트된다. 또 모오드 플래그의 상태는 신호선 5001에 송출된다. 통상 모오드 플래그는 "0"의 상태에 있고, 외부 액세스 모오드로 되어 있다.
버스 전환 제어부 508은 모오드 플래그 512의 상태를 표시하는 신호선 5001의 신호에 따라서 외부 액세스 모오드시에는 외부 데이터 버스 506, 외부 어드레스 버스 507을 각각 내부 데이터 버스 504, 내부 어드레스버스 505에 결합하여; 내부 동작 모오드시는 이들을 분리하여 내부 어드레스 발생부 509의 어드레스 신호선 5006을 내부 어드레스 버스 505에 결합하는 동작을 행한다.
내부 어드레스 발생부 509는 내부 동작 모오드시 메모리Ⅰ 50110, 메모리Ⅱ 50120, 메모리Ⅲ 50130, CAM502의 데이터를 호출하는 어드레스를 발생하는 부분이다. 메모리Ⅰ 50110, 메모리Ⅱ 50120, 메모리Ⅲ 50130, CAM502내 레지스터 메모리 셀에 어느 것인가 하나를 지정하는 제어 신호를 신호선 5005에 동작 제어부 517이 발생하면 각각 거기에 대응하는 어드레스를 발생시켜, 신호선 5006위에 송출한다. 어드레스 발생은 메모리Ⅰ 50110. 메모리Ⅱ 50120. 메모리Ⅲ 50130, CAM의 메모리 셀에 대하여서는 어드레스 공간에 선두에서 차례로 액세스하는 것과 같이 행하여 진다. 즉, 제32도에 표시한 것과 같이, 메모리Ⅰ 50110. 메모리Ⅱ 50120, 메모리Ⅲ 50130, CAMⅠ502의 액세스를 지정할 때마다 다음에 발생하는 어드레스는 각각 필요한 량 인크리멘트되어 있다. 또, CAM502내의 레지스터에 대해서는 각각에 할당되어 있는 어드레스를 발생한다. 또, 신호선 5007의 리셋트 신호에 의하여, 메모리Ⅰ 50110, 메모리Ⅱ 50120, 메모리Ⅲ 50130, CAM502의 메모리 셀에 대한 발생 어드레스는 메모리 공간의 선두에 리셋트된다.
메모리 셀Ⅰ 50110은 제30도에 표시한 것과 같이 JOIN 연산을 행하는 한쪽의 워크 테이블 51을 격납하기 위한 것이다. 어드레스 신호선 50081위의 어드레스 신호가 지시하는 메모리내의 데이터를 제어 신호선50101위의 제어 신호에 따라서 데이터 신호선 50091을 통해, 액세스된다. 또, 메모리내 데이터량 레지스터 51310은, 메모리Ⅰ 50110내에 격납한 워크 테이블 51에 실제로 데이터가 격납되어 있는 행수를 표시한 것이다. 본 레지스터는 내부 데이터 버스 504의 데이터를 신호선 50111위의 랫치 신호에 의하여 신호선 50121을 통하여 랫치하는 것에 의하여 셋트된다. 또, 그 내용은 신호선 50131위에 송출된다.
메모리Ⅱ 50120, 메모리Ⅲ 50130은 제4도에 표시한 것과 같이 JOIN 연산을 행하는 또, 한쪽의 워크 테이블 50 및 JOIN 연산을 행하는 결과의 워크 테이블 52를 격납하기 위한 것이고, 메모리Ⅰ 50110과 마찬가지로 내부 데이터 버스 504의 데이터를 신호선 50092, 50093을 통하여 액세스된다. 또, 신호선 50082, 50102, 50112, 50083, 50103, 50113은 메모리Ⅰ 50110일 때와 마찬가지이다. 또 메모리내 데이터 레지스터 51320, 51330은 레지스터 51310과 마찬가지로 메모리Ⅱ 50120, 메모리Ⅲ 50130에 격납되어 있는 행수를 표시한다. 또 신호선 50122, 50132, 50123, 50133의 의미는 메모리내 데이터 레지스터 51320일 때와 마찬가지이다.
CAM502는, 어드레스 신호선 5014, 데이터 신호선 5015, 제어 신호선 5016을 사용하여 액세스됨과 동시에, 리셋트 신호선 5017, 검색 신호선 5018, 검색 결과 신호선 5019에 의하여 연상 검색 기능은 콘트롤된다. CAM의 연상 검색 기능은 제23도에 설명한 것과 같다.
제23도의 레지스터 61, 62, 메모리 63은 통상의 메모리와 마찬가지로 신호선 5014, 5015, 5016을 사용하여 액세스된다. 상기 레지스터, 메모리 셀에 데이터를 격납한 후, 검색 신호선 5018을 온하는 것에 의하여 연상 검색이 행하여 진다. 즉, 검색 데이터 래지스터 61과 메모리 셀 63내의 데이터중 마스크 데이터 레지스터 62로 "1"이 지정되어 있는 부분의 일치 비교가 메모리 셀 63내의 모든 데이터가 동시에 행하여져, 일치한 데이터의 메모리 셀 63의 행에 대응하는 검색 결과 플래그 64에 "1"이 된다 검색 결과 플래그 64에 1개라도 "1"이 되면 그것은 검색 결과 신호선 5019상에 표시되고 외부에 전달된다. 1개라도 "1"이 되지 않으면 신호선 5019에는 검색 결과가 없는 것이 표시된다. 또 검색 결과 플래그 64에서 "1"로 되어 있는 최초의 행의 메모리 셀 63내의 데이터가 데이터 신호선 5015에 송출된다. 다음에 재차 검색 신호선 5018이 온되면 검색 결과 플래그 64로 2번째에 "1"이 되어 있는 행의 메모리 셀 63내의 데이터가 데이터 신호선 5015에 송출되어 1번째의 플래그는 꺼져 버린다. 또, 리셋트 신호 5017을 온하는 것에 의하여 모든 메모리 셀의 내용은 크리어된다.
메모리Ⅱ 50120, 메모리Ⅲ 50130중 어느 것인가를 JOIN 연산을 행하는 워크 테이블 50용에, 어느 것인가를 JOIN 연산의 결과를 격납하는 워크 테이블 52용에 사용하는 가는 테이블 지정 플래그 511에 의하여서 지정된다. 본 플래그가 "1"일 때, 메모리Ⅱ 50120을 JOIN 연산을 행하는 워크 테이블 50으로서 메모리Ⅲ 50130을 JOIN 연산의 결과를 격납하는 워크 테이블 52로서 사용한다. "0"일 때에는 그 역으로 된다. 테이블 지정 플래그 511은 신호선 5020의 랫치 신호에 의하여 , 내부 데이터 버스 504의 신호를 신호선 5021을 통하여 랫치하는 것에 의하여 셋트된다. 또, 그의 내용은 신호선 5022에 송출된다.
전송 완료 플래그 5120은 분할하여 JOIN 연산 처리가 행하여 지는 워크 테이블 50(메모리Ⅱ 50120 또는 메모리Ⅲ 50130)의 모든 데이터가 CAM502내에 셋트된 것인가를 지정한다. 본 플래그가 "0"일 때는 워크 테이블에 미처리의 데이터가 남겨져 있는 것을 표시한다. "1"일 때는 워크 테이블의 모든 데이터를 CAM502내에 분할하여 셋트한 것을 표시한다. 전송 완료 플래그 5120은 동작 제어부 517의 랫치 신호 5123에 의해 신호선 5121에 의하여 셋트되어 그 내용은 신호선 5121에 의하여 동작 제어부에 송출된다. 본 플래그는 동작 제어부 517이, 모든 플래그 512를 "0"에 셋트(외부 동작 모오드)하기 전에 신호선 5121을 통하여 "0"에 셋트된다.
외부 액세스 제어부 510은 지금까지 설명한 메모리Ⅰ 50110, 메모리Ⅱ 50120, 메모리Ⅲ 50130, CAM502, 모오드 플래그 512, 테이블 지정 플래스 511, 메모리내 데이터량 레지스터 5130, 51320, 51330을 외부에서 액세스하기 위한 제어를 행하는 부분이다. 본 부분에 있어서 어드레스 버스 507위의 신호가 데코우더되어, 상기의 어느 것인가를 액세스하는 것이 결정되어, 신호선 5023의 리이드/라이트 신호에 따라 액세스 대상에 제어 신호, 랫치 신호를 송출한다. 또 외부 액세스 제어부 510은 JOIN 연산의 종료시(모오드 플래그 512가 온에서 오프로 변경되었을 때) 외부에 대해, JOIN 연산의 종료를 표시하는 끼어들기 신호를 신호선 5024상에 송출한다.
검색 데이터 레지스터 514는 메모리 Ⅰ 50110내에 격납되어 있는 워크 테이블의 일행의 데이터를 끄집어내어 격납하는 레지스터이다. 검색 결과 레지스터 515는, 검색 데이터 레지스터 514의 데이터와 CAM502내의 메모리 셀의 데이터를 연상 검색하여 일치한 데이터를 격납한다. 또 검색 데이터 레지스터 514와 검색 결과 데이터 레지스터 515의 데이터는 데이터 중합기에 5028, 5027을 통하여 송출된다. 이들의 레지스터는 신호선 5025상의 랫치 신호에 의하여, 내부 데이터 버스 504의 신호를 신호선 5026을 통하여 랫치하는 것에 의하여 셋트된다. 그의 내용은 각각 신호선 5027, 5028에 송출된다. 또 검색 데이터 레지스터 514에는 신호는 50282를 온하는 것에 의하여 그 내용을 신호선 50281을 통하여, 내부 데이터 버스 504위에 송출할 수 있다.
데이터 중합기 516은 검색 데이터 레지스터 514와 검색 결과 레지스터 515의 데이터의 중합을 행하는 부분이다. 신호선 5027, 5028의 신호를 중합시켜 신호선 5029의 타이밍 신호에 의하여 중합된 결과의 신호를 신호선 5030위에 송출한다.
동작 제어부 517은 내부 동작 모오드시, 지금까지, 설명한 각부의 동작 타이밍을 제어하여, JOIN 연산을 진행시키는 부분이다. 모오드 플래그 512, 테이블 플래그 511의 상태, 메모리내 데이터량 레지스터 51310, 51320, 51330의 내용, CAM 502의 연상 겸색의 결과(검색 결과 신호선 5019의 상태), 전송 완료 플래그 5120의 상태에 따라서 적당히, 다른 각부의 신호를 발신하여 제어를 행한다. 또, 동작 제어부 517은 내부에 메모리내 데이터량 카운터 5171을 가지며, JOIN 연산의 결과의 데이터량을 카운터한다. 본 카운터는 JOIN 연산 결과를 격납하는 워크 테이블 52에 격납되어 있는 데이터의 행수를 표시한다. 본 카운터 내용은 외부 액세스 카운터 모우드시에 외부 어드레스 버스 507에 본 레지스터에 할당된 어드레스를 지정하여, 리이드 신호를 신호선 5023에 발생하는 것에 의하여 외부 액세스 제어부 510이 호출신호를 신호선 5172에 발생시켜, 신호선 5173을 통하여 외부 데이터 버스 506에 호출할 수가 있다.
처리 데이터량 카운터 5132는 제30도에 표시한 분할처리를 할 때에 사용되는 것이다. 메모리Ⅱ 50120 혹은 메모리Ⅲ 50130의 데이터가 CAM502 내의 메모리 셀 63에 전송될 때마다 카운터 엎된다. 또 메모리내 데이터량 레지스터 51320 혹은 51330의 내용보다 본 카운터가 크게 되었을 때 동작 제어부 517은 전송 완료 플래그 5120은 "1"(전송 완료)에 셋트한다.
리셋트 518은 본 JOIN 연산 장치의 초기 상태를 셋트하는 부분이고, 외부의 리셋트 신호선 5031의 리셋트 신호에 의하여 모오드 플래그 512, CAM502, 전송 완료 플래그 5120을 셋트하는 신호를 발생시킨다.
다음에 본 실시예의 동작을 제33도에서 제40도를 사용하여 설명한다. 제33도에서 제40도는 본 실시예의 동작시의 데이터 프로를 표시하는 도면이다. 도면중, 번호는 제23, 30, 31도를 참조하면 된다. JOIN 연산을 개시하기 전에 사용자는 우선 신호선 5031에 리셋트 신호를 보내고 본 장치의 초기 상태를 셋트한다. 리셋트 신호에 의하여 리셋트부 518은 내부 리셋트 신호를 신호선 5017, 5004, 5123에 발생시켜 CAM502 내부의 메모리 셀 63, 플래그 64를 크리어하여 모오드 플래그 512를 "0"에 셋트(제33도 ①, 이하 단지 ②와 같이 표현한다)한다. 또, 전송 완료 플래그 5120을 "0"에 셋트한다. 모오드 플래그 512가 "0"에 셋트되는 것으로서, 버스 전환 제어부 508은, 외부 데이터 버스 506과 내부 데이터 버스 504 및 외부 어드레스 버스 507과 내부 어드레스 버스 505를 결합하여 외부에서 데이터를 셋트할 수 있는 상태로 한다. 다음에 사용자는 JOIN 연산을 행하는 2개의 워크 테이블을 메모리Ⅰ 50110, 메모리Ⅱ 50120에 셋트한다(②, ③). 이하 메모리 50120에 JOIN 연산을 행하는 데이터를 셋트하여 메모리Ⅲ 50130에 JOIN 연산의 결과의 데이터를 셋트할 때에 대해서 설명한다. 사용자는 JOIN 연산을 행하여야할 데이터를 셋트할 때에, 메모리Ⅰ 50110, 메모리Ⅱ 50120에 셋트한 행수를 메모리내 데이터량 레지스터 51310, 51320에 셋트(④, ⑤)한다. 본 레지스터에의 셋트는 외부 액세스 제어부 510에 의하여 행해진다. 즉, 셋트하여야할 데이터를 외부 데이터 버스 506에 송출하여, 데이터는 내부 데이터 버스 504에 전달된다. 그리고, 또 메모리내 데이터량 레지스터 51310, 51320에 할당되어 있는 어드레스를 외부 어드레스 버스 507에 셋트하여, 라이트 신호를 신호선 5023에 발신하는 것으로서 외부 액세스 제어부 510이 메모리Ⅰ 50110과 메모리Ⅱ 50120의 메모리내 데이터량 레지스터 51310, 51320의 신호선 50111, 50112위에 랫치 신호를 발생하여 내부 데이터 버스 위의 데이터를 신호선 50121, 50122를 통하여 취입한다.
그리고 또, 테이블 지정 플래그 511, 모오드 플래그 512의 외부에서의 셋트도 마찬가지이다. 사용자는, 이상의 것을 셋트한 후, JOIN 연산을 하여야할 2개조의 공통 변수치(제22도의 설명 참조)이외를 마스크하는 데이터를 CAM 502의 마스크 데이터 레지스터 62에 격납하여(제34도의 ⑥, 이하 제33도를 약함) JOIN 연산을 행하여야할 데이터의 격납 되어 있는 쪽의 메모리(이때의 메모리Ⅱ 50120)를 메모리Ⅰ 50110의 JOIN연산 상태로서 테이블 지정 플래그 511에 지정하여(⑦), 모오드 플래그 512를 "1"로 하여, 내부 동작 모오드를 한다. 모오드 플래그 512에 "1"이 셋트되는 것으로, 버스 전환 제어부 508은, 외부 데이터 버스 506과 내부 데이터 버스 504, 외부 어드레스 버스 507과 내부 어드레스 버스 505를 분리하여 내부 어드레스 505에 내부 어드레스 발생부 509가 발생되는 어드레스 신호의 신호선 5006을 결합한다. 동작 제어부 517은 신호선 5061의 신호가 "1"(내부 동작 모오드 ⑧)로 되는 것으로 JOIN연산을 제어하는 동작을 개시한다. 동작 제어부 517은 우선, 리셋트 신호를 신호선 5007에 발생시켜 내부 어드레스 발생부 509를 리셋트한다(리셋트의 내용은 상술 내부 어드레스 발생부의 설명을 참조).
다음에 메모리Ⅱ 50120에 셋트된 데이터를 CAM 내의 메모리 셀에 셋트하기 위하여 동작제어부 517은 메모리내 데이터량 레지스터 51320고 사전에 사용자에 의하여 지정된 메모리 셀 63의 용량(메모리 셀의 행수)를 비교하여 메모리Ⅱ 50120에서(CAM 50120내의 메모리 셀에 셋트하는 데이터의 행수(메모리 Ⅱ50120의 데이터의 행수 CAM 520의 메모리 셀 63의 행수가 적은쪽)을 결정한다.
그리고 동작 제어부 517은 신호선 50141을 통하여 CAM502내의 메모리 셀 63의 어드레스를 송출하여, 또 내부 어드레스 발생부 509에 메모리Ⅱ 50120의 어드레스를 발생시킨 위에서 메모리 Ⅱ에서 내부 데이터 버스를 통하여 CAM 내의 메모리 셀에, JOIN연산을 행하는 1개의 워크 데이터를 분할하여 셋트(제33도의 ⑨)한다. 또, 동작 제어부 517내의 처리 카운터 5132는 메모리 50120에 의하여 CAM 502내의 메모리 셀에 셋트된 행수를 카운터 엎한다(제35의 ⑩). 동작제어부 517은 처리 데이터량 카운터 5132의 내용(CAM502내에서 처리되는 메모리Ⅱ 50120내의 워크 데이터 행수)과 메모리내 데이터량 레지스터 51320의 내용을 신호선 50131을 통하여 비교하고, 일치하였을때는 신호선 5121을 통하여 전송 완료 플래그를 "1"에 셋트하여, 일치하지 않을때(즉, 메모리 Ⅱ내에 JOIN연산을 하여야 할 데이터가 남아 있을때)에는 "0"을 셋트한다. 그후, 동작 제어부 517은 제30도의 순서에 따라서 JOIN연산을 실시한다.
즉, 메모리Ⅰ 50110내에 격납되어 있는 워크 테이블 51의 데이터를 선두에서 1행씩 순차로 끄집어 내어, 그의 데이터에 대해 다음의 처리를 메모리내의 데이터량 레지스터 51310에 지정된 회수를 반복한다. 동작제어부 517은, 우선 내부의 메모리내 데이터량 카운터 5171을 제로 크리어한다. 다음에 신호선 5005에 메모리Ⅰ 50110을 지정하는 신호를 발신하여 내부 어드레스 발생부 509에 메모리Ⅰ 50110을 액세스하기 위한 어드레스를 발생시킨다(어드레스 발생 방법은 상술의 내부 어드레스 발생부 509의 설명 참조). 그 다음, 신호선 50101에 메모리 리이드의 제어 신호를 발생시켜 메모리Ⅰ 50110에 격납되어 있는 워크 테이블 데이터의 1행의 내용을 내부 데이터 버스 위에 호출한다. 호출된 데이터는 검색 데이터 레지스터 514의 신호선 5025에 랫치 신호를 발생하는 것으로, 신호선 5026을 통하여 검색 데이터 레지스터 514에 랫치된다(제36도의 ⑪). 그후 동작 제어부 517은, 신호선 50282에 데이터 송출 신호를 발신하여 검색 데이터 레지스터 514의 내용을 신호선 50281을 통하여, 재차 내부 데이터 버스 504위에 송출한다. 송출된 데이터는 CAM 502내의 검색 데이터 레지스터 61에 호출된다. 즉, 동작 제어부 517은 CAM 502의 검색 데이터 레지스터 61을 지정하는 신호를 신호선 5005에 발신하여 내부 어드레스 발생부 509에 CAM 502의 검색 데이터 레지스터 61의 어드레스를 발생시켜, CAM 502의 신호선 5016에 라이트 신호를 발신하는 것으로서 CAM 502내에 받아들인다(제36도의 ⑫).
이상 메모리Ⅰ 50110, 메모리Ⅱ 50120, 메모리Ⅲ 50130, CAM 502, 그 이외의 레지스터 액세스 순서는 마찬가지이므로 기술을 생략한다. 동작 제어부 517은 CAM 502의 검색 데이터 레지스터 61에 데이터를 격납한 후, CAM 502에 신호선 5018에 검색 신호를 발신하여 연상 검색을 행하게 한다(제37도의 ⑬, 이하 제37도를 약함). 동작 제어부 517은 CAM의 검색 결과 신호(신호선 5019)가 오프로 되기 까지에 다음을 반복하여 JOIN 연산 결과를 메모리Ⅲ 50130에 격납한다. 즉 검색신호(신호선 5018)를 차례로 온하여 검색결과를 내부 데이터 버스 504위에 송출하여 검색 결과 레지스터 515에 랫치한다(⑭). 그후 검색 데이터 레지스터 514의내용과 검색 결과 레지스터 515의 내용을, 데이터 중합기 516으로 중합시켜(⑮), 신호선 5029에 송출 신호를 발신하는 것으로서 신호선 5030을 통하여 데이터의 중합 결과를 내부 데이터 버스 504에 송출한다. 송출된 데이터는 메모리 Ⅲ 50130의 선두에서 차례로 격납된다(
Figure kpo00002
).
그리고 또, 격납 어드레스는 내부 어드레스 발생부 509가 상술한 순서로 발생시킨다. 또, 데이터 격납시, 메모리내 데이터량 카운터 5171을 카운터 엎한다(
Figure kpo00003
).
지금까지의 동작을 검색 결과 신호(신호선 5019)가 오프로 되기까지 반복한다. 다음에 동작 제어부 517은 신호선 5121을 통하여, 전송 플래그의 내용이 "0"(메모리 Ⅱ50120내에 JOIN연산하여야할 분할된 미처리의 데이터가 남아 있는 상태)이면, 신호선 5017을 통하여 CAM 502에 리셋트 신호를 보내고 CAM502내의 메모리 셀 63, 결과 검색 플래그 64를 크리어한다(제38도의
Figure kpo00004
, 이하 제38도를 약함), 다음의 미처리의 데이터 전송을 행한다. 처리 데이터량 카운터 5132의 내용이 메모리내 레지스터 51320의 수치보다 적으면 동작 제어부는 처리 데이터량 카운터를 카운터 엎(
Figure kpo00005
)하여, 그의 내용을 메모리 Ⅱ 50120의 어드레스로 하고, 내부 어드레스 발생부 509에 의하여 내부 어드레스 버스 505에 송출한다. 이것에 대하여, CAM 502내의 메모리 셀 63의 어드레스는 동작 제어부 517이 신호선 50141을 통하여 CAM 502내에 송출된다. 메모리 셀 63의 어드레스는 메모리 셀 63의 선두에서 차례로 지정된다. 전송되는 데이터는 메모리 Ⅱ 50120에서 신호선 50092를 통하여 내부 데이터 버스 504에 송출되어, 신호선 5015를 통하여 CAM 502내의 메모리 셀 63에 데이터가 송출된다. 이와 같이하여 데이터의 전송이 행하여져, CAM 502내의 메모리 셀 63이 데이터로 채워진 경우던가 처리 데이터량 카운터 5132의내용이 메모리내 레지스터 51320의 내용(메모리Ⅱ 50120의 데이터량)보다 크게 되었을 경우에 전송이 정지된다. 그리고 후자의 경우에는 동작 제어부 517은 신호선 5121을 통하여 전송 완료 플래그 512를 "1"(전송 완료)에 셋트한다(
Figure kpo00006
). CAM 502내의 메모리 셀 63에 데이터가 셋트되었으면, 제30도의 데이터 처리 방식에 따라서 동작 제어부 517은 JOIN 연산을 재차 실시하여, 결과를 메모리 Ⅲ 50130에 격납한다(제39도).
상기와 같이 하여 제38도, 제39도의 동작을 동작 제어부가 전송 완료 플래그를 "1"에 셋트할때까지 반복하여, 메모리 Ⅱ 50120의 모든 워크 데이터의 처리를 완료하였으면, 동작 제어부 517은, 리셋트 신호를 CAM 502의 신호선 5017, 신호선 5004에 발생시켜, CAM502 및 모오드 플래그 512를 크리어한다(제40도
Figure kpo00007
, 이하 제15도를 약함). 이것에 의하여 재차 본 장치내를 외부에서 액세스하는 것이 가능하게 된다. JOIN 연산의 완료는 모오드 플래그 512가 "1"에서 "0"을 변화한 시점에서 외부 액세스 제어부 510이 끼어들기 신호를 신호선 5024에 발신하는 것으로서 통지된다. 그대로 연산 결과를 끄집어낼때에는 외부에서 테이블 지정 플래그 511이 표시한 메모리 Ⅲ 50130의 내용을 메모리내 데이터량 카운터 5171을 표시하는 행수만큼 호출하면 좋다. 외부에서의 호출은 상술한 바와 같이 외부 액세스 제어부 510에서 제어된다. 또 룰형 소프트에 있어서의 룰의 IF부에 조건이 3개 이상 지정되어, 재차 JOIN 연산을 시행하지 않으면 안되는 경우는, 3개째 이상의 IF문에 대해서 외부에서 받아들이는 워크 테이블 51의 데이터를 제34도의 ②, ④와 마찬가지로 사용자가 외부 액세스 제어부 510을 사용하여 메모리Ⅰ 50110에 셋트한다(제40도의
Figure kpo00008
, 이하 제40도를 약함). 또, 메모리내 데이터량 레지스터 51310 (
Figure kpo00009
) 및 CAM 502내의 마스크 데이터 레지스터 62에 각각 메모리내 데이터량, 마스크 데이터를 셋트한다. 그리고, 지정 플래그 512를 전환하여 가는 ("1",→"0", "0"→"1")것(
Figure kpo00010
)에 의하여 전회의 JOIN 연산결과를 격납한 테이블 52를 JOIN 연산을 행하는 테이블 51에 전환하여, 제34도∼제39도의 동작을 반복한다. 이것에 의하여 3개 이상의 IF문으로 표시되는 JOIN 연산을 행할 수가 있다.
본 실시예에서는 대용량의 워크 테이블을 제30도와 같이 분할 처리하는 것에 의하여, 비교적 소용량의 연상 기억 장치에서도 그의 병열 검색 기능을 이용할 수가 있다.
다음의 제2의 실시예의 변형예를 설명한다.
본 실시예에서는 JOIN 연산을 하는 2개의 워크 테이블과 같이 CAM위에 놓고, 2개의 워크 테이블중, 변수치의 격납되어 있는 행수가 적은 워크 테이블을 검색 데이터로 하는 것의 의하여 비교 처리의 회수를 항상 최소로 하여 JOIN 연산을 고속으로 행한다.
구체적으로는 제42도에 표시된 바와 같이 JOIN 연산을 행하는 2개의 워크 테이블 및 데이터량을 각각 CAM41, CAM42 데이터량 레지스터 48, 데이터량 레지스터 49에 격납한다. 그리고, 또 JOIN 연산의 결과의 테이블 데이터는 CAM43에, 그의 데이터량은 데이터량 레지스터 50에 격납한다. 동작은 다음과 같다. 2개의 데이터량 레지스터 48, 49의 내용을 비교하여, 데이터량이 적은 워크 테이블이 격납되어 있는 CAM에서 검색 데이터를 1행씩 끄집어 낸다(이때에, 공통 변수 Y이외의 데이터 X, Z는 마스크한다). 또, 데이터량이 동일할때에는, CAM41에서 검색 데이터를 끄집어낸다. 제42도의 예에서는 CAM41에서 검색 데이터를 끄집어낸다. CAM42에서는 비교부 55에 의하여 CAM42내의 테이블 데이터의 모든 행에 대해 데이터의 비교 처리를 동시에 행한다. 검색 데이터와 공통 데이터 수치가 일치한 CAM42내의 테이블의 행은 1개씩 끄집어내어, 행 데이터 중합용 전용 회로 49에 의하여 검색 데이터와 중합되어서, 별도의 CAM43에 차례로 격납된다.
이때, 데이터량 레지스터 50은, CAM43에 격납된 데이터 수를 기억하여 놓는다. 본 장치에서는 CAM을 3개 사용하는 것으로 룰 시스템 룰에 있어서, IF부의 조건을 기술한 문자열이 3개 이상이고, 생성한 AND 조건을 만족하는 변수치와 또, 다음의 IF조건에 대해서 취입한 새로운 변수치를 조합시켜, 재차 JOIN처리를 반복하지 않으면 아니될 경우에는 새로운 변수치를 CAM41에 취입하여 CAM42와 CAM43의 역할을 적당히 변환하는 것으로서, JOIN연산을 데이터의 전송을 행하는 일없이 연속하여 실행하는 것이 가능하게 된다. 또, 각각의 CAM내에 격납되어 있는 데이터량을 기억하는 것에 의하여, JOIN연산을 행할 때 항상 데이터량이 적은 쪽에서 검색 데이터를 끄집어낼 수가 있어, 비교 처리의 회수를 항상 최소로 하는 것이 가능하다. 이상의 것에서 룰형 소프트의 룰의 처리를 효율적으로 시행하는 것이 가능하게 된다.
제41도는 본 발명에 의한 JOIN연산 장치의 또 다른 실시예의 블럭 구성도이다.
제41도에 있어서, 내부 데이터 버스 504 및 내부 어드레스 버스 505는 각각 본 장치내의 데이터 신호용의 버스 라인, 어드레스 신호용의 버스 라인이다. 한편 외부 데이터 버스 506, 외부 어드레스 버스 507은, 각각 본 장치 내부의 CAMⅠ501, CAMⅡ502, CAMⅢ503, 기타 플래그, 레지스터 등을 외부에서 액세스하기 위한 데이터 신호용의 버스 라인이다. 본 장치에서는, 외부 액세스 모오드와 내부 동작 모오드의 2개가 있다. 외부 액세스 모오드는 외부 어드레스 버스 507에 외부에서 어드레스를 지정하여, 외부 데이터 버스 506위의 데이터를 본 장치 내부에 기억하는 것, 혹은 본 장치내의 데이터를 외부 데이터 버스 506위에 호출할 수 있는 모오드이며, 내부 동작 모오드는 제42도에 표시한 원리에 따라서 자동적으로 JOIN 연산을 실행하는 모오드이다. 모오드의 전환은, 모오드 플래그 512에 의하여 지정된다. 즉 모오드 플래그 "0"일때에는 외부 액세스 모오드, 모오드 플래그 "1"일때에는 내부 동작 모오드를 표시한다. 모오드 플래그 512는, 신호선 5002의 랫치 신호에 의하여 내부 데이터 버스 504의 신호를 신호선 5003을 통해 랫치하는 것에 의하여 "1"에 셋트되고 신호선 5004의 리셋트 신호에 의하여 "0"에 리셋트된다. 또, 모오드 플래그의 상태는 신호선 5001에 송출된다. 통상 모오드 플래그는 "0"의 상태에 있고, 외부 액세스 모오드로 되어 있다.
버스 전환 제어부 508은 모오드 플래그 512의 상태를 표시하는 신호선 5001의신호에 따라서 외부 액세스 모오드시에는 외부 데이터 버스 506, 외부 어드레스 버스 507을 각각 내부 데이터 버스 504, 내부 어드레스 버스 505에 결합하고, 내부 동작 모오드시에는 이것을 절리하여, 내부 어드레스 발생시 509의 어드레스 신호선 5006을 내부 어드레스 버스 505에 결합하는 동작을 행한다.
내부 어드레스 발생부 509는, 내부 동작 모오드시, CAMⅠ501, CAMⅡ502, CAMⅢ503에 데이터를 호출기억하는 어드레스를 발생하는 부분이다. 이 내부 어드레스 발생부 509는 신호선 5005위에 CAMⅠ501, CAMⅡ502, CAMⅢ503내의 레지스터, 메모리 셀의 어느것인가 하나를 지정하는 제어 신호를 동작 제어부 517이 발생하면 이들의 신호에 각각 대응하는 어드레스를 발생하여 신호선 5006위에 송출한다. 어드레스 발생은 CAMⅠ501의 메모리셀 , CAMⅡ502의 메모리 셀, CAMⅢ503의 메모리 셀에 대하여서는, 어드레스 공간의 선두에서 차례로 액세스하는 것과 같이 행해진다. 상술의 제19도는 제41도의 3개의 CAM의 어드레스의 관계를 표시하는 도면이다. 제19도에 표시하는 바와 같이, CAMⅠ501의 메모리셀, CAMⅡ502의 메모리셀, CAMⅢ503의 메모리 셀의 액세스를 지정할때마다 다음에 발생되는 어드레스는, 각각 필요량만큼 인크리멘트되어 있다.
또, CAMⅠ501, CAMⅡ502, CAMⅢ503내의 레지스터류에 관하여서는, 각각 거기에 할당된 어드레스를 발생한다. 또한 신호선 5007의 리셋트 신호에 의하여, CAMⅠ501, CAMⅡ502, CAMⅢ503의 메모리 셀에 대한 발생 어드레스는, 메모리 공간의 선두에 리셋트된다. CAMⅠ501은, 제42도에 표시된 바와 같이 JOIN 연산을 하는 한쪽의 워크 테이블을 격납하기 위한 것이며, CAMⅡ502, CAMⅢ503은, 제42에 표시한 바와 같이, JOIN 연산을 하는 다른쪽의 워크 테이블 및 JOIN 연산을 한 결과의 워크 테이블을 격납하기 위한 것이다. CAMⅠ501, CAMⅡ502, CAMⅢ503은 어드레스 신호 5014위의 어드레스 신호의 지정하는 CAM내 메모리 셀 데이터를 제어신호 5016위의 제어신호에 따라서 데이터 신호선 5015를 통하여 액세스되는 동시에 리셋트 신호선 5017, 검색 신호선 5018, 검색 결과 신호선 5019에 의하여 연상 검색 기능이 콘트롤된다. CAM내의 각 레지스터의 배치와 CAM연상 검색 기능은 제23도에 의하여 설명한 바와 같다. 제23도의 레지스터 61, 62, 메모리 셀 63은 통상의 메모리와 같이, 신호선 5014, 5015, 5016을 써서 액세스된다. 이들 레지스터 61, 62, 메모리 셀 63에 데이터를 격납한 후, 검색 신호선 5018을 온하는 것에 의해, 연상 검색이 이루어진다. 즉 검색 데이터 레지스터 61과 메모리 셀 63내의 데이터중, 마스크 데이터 레지스터 62에서 "1"이 지정되어 있는 부분의 데이터의 일치 비교가, 메모리 셀 63내의 전 데이터 동시에 이루어져 일치한 데이터의 메모리 셀 63의 행에 대응하는 검색 결과 플래그 64에 "1"이 된다. 검색 결과 플래그 64에 하나라도 "1"이 되면 그것은 검색 결과 신호선 5019상에 표시되어, 외부에 전하여진다.
또한 하나도 "1"이 나오지 않으면, 신호선 5019는 검색 결과가 없는 것이 표시된다. 또한 검색 결과 플래그 64에서 "1"이 되는 최초의 행의 메모리 셀 63내의 데이터가, 데이터 신호선 5015에 송출된다. 다음에 다시 검색 신호선 5018이 온되면 검색 결과 플래그 64에서 두번째로 "1"이 나온 행의 메모리 셀 63내의 데이터가 데이터 신호선 5015에 송출되어, 첫 번째 플래그는 소실된다. 또한 리셋트 신호선 5017을 온하는 것에 의하여 전 메모리 셀 63의 내용이 크리어된다.
CAMⅡ502, CAMⅢ503중 어떤 것을 JOIN연산을 하는 워크 테이블에 어떤쪽을 JOIN연산 결과를 격납하는 워크 테이블에 각각 사용하는 지는, 테이블 지정 플래그 511에 의하여 지정된다. 이 플래그가 "1"일 때 CAMⅡ502를 JOIN연산을 하는 워크 테이블로 하고 CAMⅢ503을 JOIN연산의 결과를 격납하는 워크 테이블로서 각각 사용한다. "0"일때는 그 역으로 된다. 테이블 지정 플래그 511은, 신호선 5020의 랫치 신호에 의해 내부 데이터 버스 504의 신호를 신호선 5021을 통하여 랫치하는 것으로 세트된다. 또한 그 내용은 신호선 5022에 송출된다.
외부 액세스 제어부 510은, 지금까지 기술한 CAMⅠ501, CAMⅡ502, CAMⅢ503, 모오드 플래그 512, 테이블 지정 플래그 511, CAMⅠ내 데이터량 레지스터 521, CAMⅡ내 데이터량 레지스터 522, CAMⅢ내 데이터량 레지스터 523, 마스크 데이터 레지스터 524를 외부에서 액세스하기 위한 제어를 하는 부분이다. 이 외부 액세스 제어부 510에 있어서, 외부 어드레스 버스 507위의 신호가 데코우드되어, 상기의 어느것을 액세스하는지가 결정되어, 신호선 5023의 리이드/라이트 신호에 따라서, 액세스 대상에 제어신호, 랫치 신호를 송출한다. 또한 JOIN연산의 완료시(모오드 플래그 512가 온에서 오프에 변하였을 때), 외부에 대하여 JOIN연산 완료를 지시하는 끼어들기 신호를 신호선 5024위에 송출한다. 마스크 데이터 레지스터 524는, 외부 어드레스 버스 507에 이 레지스터 524에 할당된 어드레스를 지정하여, 라이트 신호를 신호선 5023에 발생시키므로서 기억하는 것이 가능하다. 즉 상기 라이트 신호에 의하여 외부 액세스 제어부 510은 신호선 5033에 기억 신호를 발생시켜 신호선 5034를 거쳐서 외부 데이터 버스 506의 내용을 레지스터에 기억할 수가 있다. 또한 레지스터의 내용은, 신호선 5035의 호출 신호에 의하여, 내부 버스 504에 송출된다.
검색 데이터 레지스터 514는, JOIN연산을 하는 2개의 워크 테이블에서 데이터량의 적은 CAM에 격납되어 있는 워크 테이블의 1행의 데이터를 끄집어내어 격납하는 레지스터, 검색 결과 레지스터 515는, JOIN 연산을 행하는 2개의 워크 테이블로서 데이터량의 많은 CAM을 이 레지스터의 내용과 같은 데이터를 검색 데이터로 하여 연상 검색할때에, 일치한 검색 결과 데이터를 CAM에서 끄집어내어 격납하는 레지스터이다. 이 레지스터는, 신호선 5025위의 랫치 신호에 의하여 내부 데이터 버스 504의 신호를 신호선 5026을 통하여 랫치하는 것에 의하여 셋트된다. 그 내용은, 각각 신호선 5027, 5028에 송출된다. 또 검색 데이터 레지스터 514에서는 신호선 50282를 온하므로서 그 내용을 신호선 50281을 통하여 내부 데이터 버스 504위에 송출할 수 있다. CAMⅠ내의 데이터량 레지스터 521, CAMⅡ내의 데이터량 레지스터 522, CAMⅢ내의 데이터량 레지스터 523은, 각각 CAM내에 격납한 워크 테이블내에 실제로 데이터가 격납되어 있는 행수를 표시하는 것이다. 이들 레지스터 521, 522, 523은 외부 액세스 모오드시에 외부 어드레스 버스 507에 각각의 레지스터에 할당된 어드레스를 지정하고 라이트 신호를 신호선 5023에 발생시키므로서 기억이 가능하다. 즉, 상기 라이트 신호에 의하여, 외부 액세스 제어부 510은 신호선 5011에 기억 신호를 발생시켜, 신호선 5012를 거쳐서 외부 데이터 버스 506의 내용을 레지스터에 기억할 수 있게 된다. 같은 방법으로 상기 신호선을 거쳐서 레지스터의 내용을 외부 데이터 버스 506에 호출할 수도 있다. 또 이들 레지스터에는 JOIN연산 결과의 데이터량이 신호선 5032를 거쳐서 격납된다. 또한 레지스터의 내용은 신호선 5013위에 송출된다.
데이터 중합기 516은 데이터 중합의 연산을 하는 부분이다. 신호선 5027, 5028의 신호를 중합하여, 신호선 5029의 타이밍 신호에 의하여 중합된 결과의 신호를 신호선 5030위에 송출한다.
동작 제어부 517은, 내부 동작 모오드시, 지금까지 기술한 각부의 동작 타이밍을 제어하고, JOIN 연산을 진행시키는 부분이다. 모오드 플래그 512, 테이블 지정 플래그 511의 상태, CAM내 데이터량 레지스터 521, 522, 523, CAMⅠ501, CAMⅡ502, CAMⅢ503, 연상 검색의 결과(검색 결과 신호선 5019의 상태)에 따라서, 적의 다른 부분에 신호를 발신하는 것에 의하여 제어를 행한다. 리셋트부 518은, 이 JOIN 연상 장치의 초기 상태를 셋트하는 부분이고 외부의 리셋트 신호선 5031의 리셋트 신호에 의하여, 모오드 플래그 512, CAMⅠ501, CAMⅡ502, CAMⅢ503을 리셋트하는 신호를 발생시킨다.
제43도∼제48도는 실시예의 동작시의 데이터 프로도이다. 이하 제41도, 제19도, 제23도 및 제43도∼제48도를 참조하면서, 본 실시예의 동작을 설명한다. 제43도∼제48도에 있어서 기호, 번호는 제19도, 제41도와 같다.
JOIN 연산의 개시에 앞서서, 사용자는 우선 신호선 5031에 리셋트 신호를 보내고, 본 장치의 초기 상태를 셋트한다. 리셋트 신호에 의하여, 리셋트부 518은, 내부 리셋트 신호를 신호선 5017, 5004에 발생시켜, CAMⅠ501, CAMⅡ502, CAMⅢ503의 내부의 레지스터 61, 62, 메모리 셀 63, 플래그 64를 크리어하고 모오드 플래그 512를 "0"에 셋트한다(제43도의 ①). 모오드 플래그 512가 "0"에 셋트된 것에 의하여, 버스 전환 제어부 508은 외부 데이터 버스 506과 내부 데이터 버스 504 및 외부 어드레스 버스 507과 내부 어드레스 버스 505를 결합하여, 외부에서 데이터를 셋트할 수 있는 상태로 한다. 다음에 사용자는 JOIN 연산을 행할 2개의 워크 테이블중에서, 한쪽의 워크 테이블의 데이터를 CAMⅡ502의 메모리 셀 63에 셋트한다(제43도의 ②, 이하 제43도를 약한다).
이하에서는 CAMⅡ502에 JOIN 연산을 하여야할 데이터를 셋트하고, CAMⅢ503에 JOIN 연산의 결과의 데이터를 셋트하는 경우에 대하여 설명한다. CAMⅡ502의 메모리 셀 63에의 데이터의 셋트의 제어는, 외부 액세스 제어부 510에 의하여 이루어진다. 사용자는 외부 데이터 버스 506위에 데이터를 셋트하고, 또한 데이터를 격납하여야 할 CAMⅡ502의 메모리 셀 63에 할당된 어드레스를 외부 어드레스 버스 507에 송출하고, 라이트 신호를 신호선 5023에 발신한다. 데이터와 어드레스는 내부 데이터 버스 504와 내부 어드레스 버스 505에 전달되어 CAMⅡ502의 신호선 5015, 5014에 전달된다. 외부 액세스 제어부 510은, CAMⅡ502의 액세스 제어 신호를 CAMⅡ5021의 신호선 5016에 대하여 발생시켜, 데이터를 CAMⅡ502의 메모리 셀 63에 격납한다. 동시에 CAMⅡ502의 셋트한 행수를 CAMⅡ내 데이터량 레지스터 522에 셋트한다(③).
이 레지스터 522으로의 셋트는 CAMⅡ502로의 셋트와 같이 외부 액세스 제어부 510에 의하여 이루어진다. 즉 셋트하여야할 데이터를 외부 데이터 버스 506에 송출하는 것에 의하여, 데이터는 내부 데이터 버스 504에 전달된다. 또한 CAMⅡ내 데이터량 레지스터 522에 할당되어 있는 어드레스를 외브 어드레스 버스 507에 셋트하고, 신호선 5023에 라이트 신호를 발신하는 것에 의하여, 외부 액세스 제어부 510은 메모리내 데이터량 레지스터 513의 신호선 5011위에 랫치 신호를 발생하고, 내부 데이터 버스 504위의 데이터를 신호선 5012를 거쳐서 취입한다. 같은 방법으로, CAMⅠ501, CAMⅢ503, CAMⅠ내 데이터량 레지스터 521, CAMⅢ내 데이터량 레지스터 523, 데이블 지정 플래그 511, 모오드 플래그 512, 마스크 데이터 레지스터 524에 대하여서도, 외부 액세스 제어부 510에 의하여 액세스하여 데이터가 격납된다.
사용자는 또한 JOIN 연산을 행하여야할 나머지의 한쪽의 데이터와 그 행수를 각각 CAMⅠ501, CAMⅠ내 데이터량 레지스터 524에 각각 셋트한다(④와 ⑤). 사용자는, 이들 데이터를 셋트한 후, JOIN하여야할 2조의 데이터의 공통 변수치 이외의 변수(제22도에 있어서 X, Z를 참조)를 마스크하는 데이터를 마스크 데이터 레지스터 524에 격납하고(제44도의 ⑥, 이하 제44도를 약한다), JOIN 연산을 행하여야할 데이터가 격납되어 있는 쪽의 CAM(여기에서는 CAMⅡ502)를, CAMⅠ501의 JOIN 연산 상대로서 테이블지정 플래그 511에 지정하고(⑦), 또한 모오드 플래그 512를 "1"에 셋트하고, JOIN 연산을 개시시킨다(⑧). 모오드 플래스 512에 "1"이 셋트되면, 버스 전환 제어부 508은, 외부 데이터 버스 506과 내부 데이터 버스 504, 외부 어드레스 버스 507과 내부 어드레스 버스 505를 짤라 분리하고, 내부 어드레스 버스 505에 신호선 5006을 결합하고, 내부 어드레스 발생부 509에서 발생한 어드레스 신호를 송출한다.
동작 제어부 517은, 신호선 5001의 신호가 "1"(내부 동작 모오드로 되는 것에 의하여, JOIN 연산의 제어 동작을 개시한다. 동작 제어부 517은, 우선 리셋트 신호선 5007에 발생시키고, 내부 어드레스 발생부 509를 리셋트한다(또한, 리셋트의 내용은, 상술한 내부 어드레스 발생부 509의 설명을 참조). 그후 동작 제어부 517은, 제44도에서 설명한 동작 원리에 따라 JOIN 연산을 실행한다.
이하에서는, JOIN 연산은 행하는 데이터가 CAMⅠ501, CAMⅡ502에 셋트되어 있고, CAMⅠ501에 셋트되어 있는 데이터량이 CAMⅡ502에 셋트되어 있는 데이터량보다도 적은 경우에 대하여 설명한다. 우선 동작 제어부 517은, 신호선 5013을 거쳐서 CAMⅠ501내 데이터량 레지스터의 CAMⅡ502내 데이터량 레지스터의 내용을 취입하여, 그리고 그 내용을 비교하여 데이터량이 내용을 취입하여, 그리고 그 내용을 비교하여 데이터량이 많은쪽의 CAM 내의 마스크 데이터 레지스터 62에, 마스크 데이터 레지스터 524의 내용을 기억한다. 즉 동작 제어부 517은 신호선 5035에 데이터 송출 신호를 발생시키고, 마스크 데이터 레지스터 524의 내용은 신호선 5034를 거쳐서 내부 데이터 버스 504에 송출한다. 그리고 CAMⅡ502의 마스크 데이터 레지스터 62의 어드레스를 발생시키고, CAMⅡ502의 신호선 5016에 라이트 신호를 발신하는 것에 의해, CAMⅡ내에 데이터를 취입한다(제45도의 ⑨).
다음에, 데이터량이 적은쪽의 CAM, 즉 CAMⅠ501내에 격납되어 있는 워크 테이블 데이터를 선두에서 1행씩 순차로 끄집어내어, 다음의 처리를 CAMⅠ내 데이터량 레지스터521에 지정된 회수만큼 반복한다.
동작 제어부 517은, 우선 CAMⅢ내 데이터량 레지스터 522를 제로 크리어 한다. 다음에 신호선 5005에 CAMⅠ501의 메모리 셀 63을 지정하는 제어 신호를 발신하고, 내부 어드레스 발생부 509에 CAMⅠ 501의 메모리 셀 63은 액세스 하기 위한 어드레스를 발생시킨다(또한 어드레스의 발생 방법은, 상술한 내부 어드레스 발생부 509의 설명 참조). 그후, 신호선 5010에 메모리 리이드의 제어신호를 발생시켜, CAMⅠ501의 메모리 셀 63에 격납되어 있는 워크 테이블 데이터의 1행의 내용은 내부 데이터 버스 504위에 호출한다. 호출된 데이터는 검색 데이터 레지스터 514의 신호선 5025에 랫치 신호를 발신하는 것에 의해서 신호선 5025를 거쳐서 검색 데이터 레지스터 514에 랫치된다(제45도의 ⑩).
다음에 동작 제어부 517은, 신호선 50282에 데이터 송출 신호를 발생하고, 검색 데이터 레지스터 514의 내용을 신호선 50281을 거쳐서 다시 내부 데이터 버스 504위에 송출한다. 송출된 데이터는 CAMⅡ502내의 검색 레지스터 61에 호출된다. 즉, 동작 제어부 517은, CAMⅡ502의 검색 데이터 레지스터 61의 어드레스를 발생시키고, CAMⅡ502의 신호선 5016에 라이트 신호를 발생하는 것에 의하여, CAMⅡ502내에 데이터를 취입한다(제45도의 ⑪).
이하 CAMⅡ502, CAMⅢ503, 기타의 레지스터의 액세스 순서는, 상술과 같기 때문에 설명을 생략한다. 동작 제어부 517은, CAMⅡ502의 검색 데이터 레지스터 61에 데이터를 격납한 후, CAMⅡ502의 신호선 5018에 검색 신호를 발생하고, 연상 검색을 시킨다. 동작 제어부 517은 CAMⅡ502의 검색 결과 신호(신호선 5019)가 오프가 될때까지, 이하의 동작을 반복하고, JOIN 연산 결과를 CAMⅡ503에 격납하여 간다. 즉 검색 신호(신호선 5018)을 순차 온으로 하고 검색 결과 데이터를 내부 데이터 버스 504위에 송출하고, 검색 결과 레지스터 515에 랫치한다.(제46도의 ⑫). 그후 검색 데이터 레지스터 514의 내용과, 검색 결과 레지스터 515의 내용을 데이터 중합기 516으로 중합하여, 신호선 5029에 송출 신호를 발신하는 것에 의하여 신호선 5030을 거쳐서 데이터 중합 결과를 내부 데이터 버스 504에 송출한다. 송출된 데이터는 CAMⅡ503의 메모리 셀 63의 선두에서 순차로 격납된다(제46도의 ⑬). 또한, 격납 어드레스는 내부 어드레스 발생부 509가 상술한 순서에 의하여 발생시킨다. 또한, 데이터 격납시, CAMⅡ내 데이터량 레지스터 521의 수치를 신호선 5032의 의해서 카운트 엎한다. 여기까지의 동작을 CAMⅠ내 데이터량 레지스터 521에 지정된 회수만큼 반복하면 동작 제어부 517은 리셋트 신호를 CAMⅡ502의 신호선 5017, 신호선 5004에 발생하고 CAMⅡ502를 크리어하여 모오드 플래그 512를 "0"에 리셋트한다(제47도 참조). 이것으로, 다시 이 장치의 내부를 외부에서 액세스하는 것이 가능하게 된다. 또한 JOIN 연산 완료는 모오드 플래그 512가 "1"에서 "0"으로 변화한 시점에서 외부 액세스 제어부 510이 끼어들기 신호를 신호선 5024에 발신하는 것에 의해서 통지된다. 이대로 JOIN 연산의 결과를 끄집어내는 경우는, 외부에서 테이블 지정 플래그 511에서 지정한 내용으로 결정되는 CAMⅢ503의 메모리 셀 63의 내용을, CAMⅢ내 데이터량 레지스터 522에 지시도는 행수분만큼 호출하면 된다.
외부에서의 호출은 상술과 같이 외부 액세스 제어부 510에 의하여 제어된다. 또 룰형 소프트웨어에 있어서 롤의 IF부에 조건이 3개 이상 지정되어 있고, 또한 JOIN 연산을 실행하지 않으면 안될 경우는, 3변째 이상의 IF에 대하여 취입된 워크 테이블 데이터를 CAMⅠ501에 셋트하고(제48도의 ⑭, 이하 제48도를 약함) CAMⅠ내 데이터량 레지스터 521에 그 행수(④)를 셋트한 후(⑮), 마스크 데이터 를 마스크 데이터 레지스터 524에 셋트하고(
Figure kpo00011
), 그 CAM을 JOIN 연산 상대로 지정하고(
Figure kpo00012
), JOIN 연산을 개시시키면 된다.
이상 기술한 것과 같이, 본 실시예에 의하면 JOIN 연산을 행할때에 데이터량이 적은 테이블 데이터에서 검색 데이터를 끄집어내는 것에 의해서 항상, 비교 처리의 회수를 최소로 하는 것이 가능하게 되고, 룰의 처리 속도를 향상할 수 있다.
이상, 설명한 바와 같이, 본 발명에 의하면
1. IF-THEN룰의 처리에 있어서 AND 조건 처리의 실행중에, 동시에 별개의 룰의 처리를 실행할 수 있으며, 다수의 룰의 병열 실행이 가능하므로, 룰형 시스템에 있어서 룰 개시부터 최종적 결론을 얻을때까지 소요 시간은 단축시킬 수 있다.
2. 연상 기억 장치의 병열 검색 기능에 의하여, 2개의 테이블 데이터에서 데이터의 일치하는 행을 그속으로 찾아낼 수 있으므로, 테이블 데이터의 JOIN 연산을 고속으로 실행할 수가 있다.
3. 연상 기억 장치의 병열 검색 기능과 2개의 워크 테이블중 1개의 데이터 테이블을 분할하여 연상 기억 장치에 데이터를 기억 시키는 것에 의해서, 고속 또한 대용량의 워크 데이터를 처리할 수 있다.
4. JOIN 연산을 하는 2조의 테이블 데이터를 양쪽다 CAM위에 갖고, 2개의 CAM중 데이터량이 적은쪽의 CAM에서 검색 데이터를 끄집어내는 고로, 비교 처리의 회수를 최소한으로 줄일 수가 있고 룰의 처리를 고속으로 실행할 수 있다.
따라서, 룰형 시스템에 있어서, 변수가 있는 룰의 처리 속도를 대폭 향상시키고 룰을 사용하는 가독성, 이해성, 변경성의 높은 논리 기술 수법을, 다량의 상태를 취급할 필요가 있는 대상 시스템 및 고속 응답을 요구하는 대상 시스템에 적용할 수 있다.

Claims (9)

  1. 조사될 설비군의 조건과 상기 조건이 일치된다면 상기 설비군에 부여될 제어지령을 기술하는 결론으로 구성되는 룰을 격납하는 룰 기억수단, 설비군의 상태와 상기 룰에 의해 결론된 내용을 격납하는 상태기억수단, 상기 상태기억수단에 격납된 데이터와 상기 룰 기억수단에 격납된 조건의 비교처리를 실행하며, 상기 조건에 일치하는 룰의 결론을 격납하고, 상기 결론에 따라 원하는 처리를 결정하는 룰 운용수단과 상기 룰의 JOIN 연산처리를 실행하는 실행수단을 포함하는 룰베이스 멀티프로세서 시스템에 있어서, 파이프라인 방식으로 룰의 JOIN 연산처리를 실행하기 위한 다수개의 JOIN 연산실행수단을 구비한 상기 실행 수단, 룰에 기술된 하나의 조건에 부합하는 상태 데이터로 조합된 한조의 데이터를 래치하는 적어도 하나의 버퍼를 구비하는 각각의 상기 다수개의 JOIN 연산실행수단, 동일한 룰에 기술된 다른 조건에 부합하는 상태 데이터로 조합된 다른 한조의 데이터를 래치하는 연상기억수단, 상기 한조의 데이터와 다른 한조의 데이터의 결합의 전체로 조합된 한조의 데이터를 발생시키고, 상기 하나의 조건과 상기 다른 조건의 공통항목에 대응하는 동일한 값을 갖은 데이터 연산의 JOIN 결과를 래치하여 출력시키는 출력버퍼, 하나의 데이터를 발생시키도록 상기 한조의 데이터와 상기 다른 한조의 데이터에 있는 데이터 항목값을 의미있는 값으로 치환하는 데이터중합수단, 검색데이터로서 상기 적어도 하나의 버퍼와 검색기로서 상기 공통 항목에서 순차로 끄집어낸 데이터를 사용하여 상기 연상기억수단에서의 데이터를 검색하는 검색수단과 상기 검색수단의 검색처리에서 상기 검색의 결합된 결과와 상기 중합수단에 의해 결합된 검색데이터를 상기 출력버퍼에 격납하는 연산을 반복해서 직렬연산으로 실행하는 제어수단을 포함하는 룰 베이스 멀티프로세서시스템.
  2. 특허청구의 범위 제1항에 있어서, 상기 단수개의 JOIN 연산실행수단은 상기 데이터와 상기 조건을 비할 때 모든 조건이 룰에서 일치되는지 안되는지를 결정하는 판단처리를 실행하는 룰 베이스 멀티프로세서시스템.
  3. 특허청구의범위 제1항에 있어서, 상기 다수개의 JOIN 연산실행수단은 파이프라인방법으로 룰의 상기 JOIN 연산처리를 실행하고, 상기 룰중 임의의 하나인 JOIN 연산처리가 상기 실행수단의 하나에 의해 실행되며, 다른 룰의 조건에서 상기 상태기억수단에 격납된 데이터의 비교처리 및 상기 다른 룰의 JOIN 연산처리는 상기 룰운용수단과 다른 상기 다수개의 JOIN 연산실행수단에 의해 순차로 실행되며, 하나의 JOIN 연산 처리는 병렬로 상기 룰을 처리하도록 또다른 상기 다수개의 JOIN 연산실행수단에 의해 실행되는 룰멀티프로세서시스템.
  4. 특허청구의 범위 제1항에 있어서, 상기 제어수단은 연상기능을 갖는 상기 출력버퍼와 상기 연상기억수단을 전환하면서 적어도 2개의 JOIN 연산을 연속적으로 실행하는 룰베이스 멀티프로세서시스템.
  5. 특허청구의 범위 제1항에 있어서, 상기 적어도 하나의 버퍼는 2개조의 상기 데이터중 하나를 래치하는 제1의 입력버퍼 및 상기 다른쪽 조의 데이터를 래치하는 제2의 입력버퍼를 구비하며, 상기 연상기억수단은 상기 제1의 입력버퍼의 데이터를 분할하여 마련된 분할 데이터를 순차로 래치하며, 상기 검색수단은 상기 검색데이터로서 상기 제2의 입력 버퍼에 래치된 데이터를 사용하여 상기 연상기억수단에 래치된 분할 데이터를 연상 검색하는 룰베이스 멀티프로세서시스템.
  6. 특허청구의 범위 제5항에 있어서, 상기 제어수단은 상기 출력버퍼와 상기 제1의 입력버퍼를 전환하면서 연속적으로 JOIN 연산을 실행하는 룰베이스 멀티프로세서시스템.
  7. 특허청구의 범위 제1항에 있어서, 상기 입력버퍼는 상기 2개조의 데이터중 데이터 양이 적은 조를 래치하는 제2의 연상기억 수단을 구비하며, 상기 검색수단은 상기 검색데이터로서 상기 제2의 연상기억수단에 래치된 데이터를 사용하여 상기 연상수단에 의해 래치된 데이터를 연상 검색하는 룰베이스 멀티프로세서시스템.
  8. 특허청구의 범위 제6항에 있어서, 상기 제어수단은 연상기억기능을 갖는 상기 출력버퍼와 상기 연상기억수단을 전환하면서 연속적으로 JOIN 연산을 실행하는 룰베이스 멀티프로세서시스템.
  9. 특허청구의 범위 제1항에 있어서, 상기 데이터중합 수단은 상기 적어도 하나의 버퍼에 래치된 데이터와 상기 출력버퍼에 래치된 상기 상태 데이터를 사용하여 상기 연상기억수단에 래치된 데이터를 검색하는 룰 베이스멀티프로세서시스템.
KR1019860000316A 1985-01-21 1986-01-20 룰 베이스 시스템 KR940001563B1 (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP60-8906 1985-01-21
JP60008906A JPS61168068A (ja) 1985-01-21 1985-01-21 ル−ル処理方式
JP60012079A JPS61170861A (ja) 1985-01-25 1985-01-25 ル−ル型システムの演算装置
JP60-12079 1985-01-25
JP60-224713 1985-10-11
JP60224713A JPS6285332A (ja) 1985-10-11 1985-10-11 ル−ル型システムの演算方式
JP60233298A JPS6293731A (ja) 1985-10-21 1985-10-21 ル−ル型システムの演算方式
JP60-233298 1985-10-21

Publications (2)

Publication Number Publication Date
KR860006056A KR860006056A (ko) 1986-08-16
KR940001563B1 true KR940001563B1 (ko) 1994-02-24

Family

ID=27455045

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019860000316A KR940001563B1 (ko) 1985-01-21 1986-01-20 룰 베이스 시스템

Country Status (2)

Country Link
US (1) US4901229A (ko)
KR (1) KR940001563B1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414865A (en) * 1985-09-17 1995-05-09 Beran; James T. Self-programming with limited sequential memory capacity
KR930007749B1 (ko) * 1988-05-25 1993-08-18 마쯔시다덴기산교 가부시기가이샤 제품생산 계획형 추론장치
JP2668438B2 (ja) * 1989-04-21 1997-10-27 三菱電機株式会社 データ検索装置
JPH07104871B2 (ja) * 1989-08-31 1995-11-13 三菱電機株式会社 リレーショナル・データベースにおけるジョイン処理方式
US5195173A (en) * 1989-12-29 1993-03-16 Ail Systems, Inc. Integrated multi-visual expert system maintenance advisor
US5241648A (en) * 1990-02-13 1993-08-31 International Business Machines Corporation Hybrid technique for joining tables
US5259066A (en) * 1990-04-16 1993-11-02 Schmidt Richard Q Associative program control
US5083265A (en) * 1990-04-17 1992-01-21 President And Fellows Of Harvard College Bulk-synchronous parallel computer
US5604899A (en) * 1990-05-21 1997-02-18 Financial Systems Technology Pty. Ltd. Data relationships processor with unlimited expansion capability
US5604841A (en) * 1990-07-06 1997-02-18 United Technologies Corporation Hierarchical restructuring generic test templates and reusable value spaces for machine failure isolation using qualitative physics
US5138694A (en) * 1991-06-28 1992-08-11 United Technologies Corporation Parallel processing qualitative reasoning system
US5297280A (en) * 1991-08-07 1994-03-22 Occam Research Corporation Automatically retrieving queried data by extracting query dimensions and modifying the dimensions if an extract match does not occur
JPH0695879A (ja) * 1992-05-05 1994-04-08 Internatl Business Mach Corp <Ibm> コンピュータシステム
WO1994019741A2 (en) * 1993-02-25 1994-09-01 Reticular Systems, Inc. Real-time rule based processing system
US5522014A (en) * 1994-04-26 1996-05-28 United Technologies Corporation Intergrated qualitative/quantitative reasoning with enhanced core predictions and extended test procedures for machine failure isolation using qualitative physics
US5537644A (en) * 1994-04-26 1996-07-16 United Technologies Corporation Machine failure isolation in multiple machine configurations using qualitative physics
US5659731A (en) * 1995-06-19 1997-08-19 Dun & Bradstreet, Inc. Method for rating a match for a given entity found in a list of entities
AU691447B1 (en) * 1997-07-23 1998-05-14 Dun & Bradstreet, Inc. Method for rating a match for a given entity found in a list of entities
US8775147B1 (en) * 2006-05-31 2014-07-08 The Mathworks, Inc. Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
JP4915779B2 (ja) * 2006-06-02 2012-04-11 株式会社メガチップス 装置間の接続方式および接続装置
US20090216639A1 (en) * 2008-02-25 2009-08-27 Mark Joseph Kapczynski Advertising selection and display based on electronic profile information

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4357678A (en) * 1979-12-26 1982-11-02 International Business Machines Corporation Programmable sequential logic array mechanism
US4514826A (en) * 1981-05-18 1985-04-30 Tokyo Shibaura Denki Kabushiki Kaisha Relational algebra engine
JPS583031A (ja) * 1981-06-30 1983-01-08 Fujitsu Ltd リレ−シヨナル・モデルにおけるジヨイン演算処理方式
JPH0650442B2 (ja) * 1983-03-09 1994-06-29 株式会社日立製作所 設備群制御方法およびシステム
JPH0736123B2 (ja) * 1983-05-09 1995-04-19 株式会社日立製作所 設備群制御方法
US4656603A (en) * 1984-03-01 1987-04-07 The Cadware Group, Ltd. Schematic diagram generating system using library of general purpose interactively selectable graphic primitives to create special applications icons
JPS619729A (ja) * 1984-06-26 1986-01-17 Toshiba Corp 推論システム
US4675829A (en) * 1984-07-27 1987-06-23 Intellicorp Corporation Method and apparatus for building knowledge-based systems
JPS6140643A (ja) * 1984-07-31 1986-02-26 Hitachi Ltd システムの資源割当て制御方式
US4644479A (en) * 1984-07-31 1987-02-17 Westinghouse Electric Corp. Diagnostic apparatus
US4642782A (en) * 1984-07-31 1987-02-10 Westinghouse Electric Corp. Rule based diagnostic system with dynamic alteration capability
US4754410A (en) * 1986-02-06 1988-06-28 Westinghouse Electric Corp. Automated rule based process control method with feedback and apparatus therefor

Also Published As

Publication number Publication date
KR860006056A (ko) 1986-08-16
US4901229A (en) 1990-02-13

Similar Documents

Publication Publication Date Title
KR940001563B1 (ko) 룰 베이스 시스템
JPH0736123B2 (ja) 設備群制御方法
EP0510452B1 (en) A knowledge base management system for an information reasoning apparatus
US4628435A (en) Facilities control method
US5471677A (en) Data retrieval using user evaluation of data presented to construct interference rules and calculate range of inputs needed for desired output and to formulate retrieval queries
Cardoso et al. Possibilistic petri nets
JPH0285927A (ja) 記憶装置
Paul et al. On alternation II: A graph theoretic approach to determinism versus nondeterminism
Hamada et al. Hybridizing a genetic algorithm with rule-based reasoning for production planning
Loveland Theorem-provers combining model elimination and resolution
JPS6314378B2 (ko)
US5047951A (en) Inference processor using meta knowledge
US20040034443A1 (en) Numerical controller
JPS62117035A (ja) ル−ル処理装置
JPS61168068A (ja) ル−ル処理方式
JPH0736124B2 (ja) 設備群制御方法
JP2515719B2 (ja) 設備群制御方法
CN106570172A (zh) 一种基于流处理的模式更新方法
JPS63631A (ja) ル−ル処理方式
JP3128257B2 (ja) 図形情報処理装置
JPS61177547A (ja) ル−ル処理方式
JPS61133405A (ja) ル−ル処理方式
Osaki Intelligential industrial management
JPS61136162A (ja) 設備群制御方式
JPH03185523A (ja) 推論結果予報型エキスパートシステム

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee