KR20100126690A - 널-종료 문자열 동작을 가속화하는 방법 - Google Patents

널-종료 문자열 동작을 가속화하는 방법 Download PDF

Info

Publication number
KR20100126690A
KR20100126690A KR1020107018313A KR20107018313A KR20100126690A KR 20100126690 A KR20100126690 A KR 20100126690A KR 1020107018313 A KR1020107018313 A KR 1020107018313A KR 20107018313 A KR20107018313 A KR 20107018313A KR 20100126690 A KR20100126690 A KR 20100126690A
Authority
KR
South Korea
Prior art keywords
register
byte
value
register value
bit
Prior art date
Application number
KR1020107018313A
Other languages
English (en)
Inventor
메이안 모두길
Original Assignee
샌드브리지 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌드브리지 테크놀로지스, 인코포레이티드 filed Critical 샌드브리지 테크놀로지스, 인코포레이티드
Publication of KR20100126690A publication Critical patent/KR20100126690A/ko

Links

Images

Classifications

    • 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/02Comparing digital values
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

제 1 및 제 2 레지스터 값을 판독하고 비교하는 방법이 제공된다. 여기서 각각의 레지스터 값은 2 바이트 이상의 사이즈를 가진다. 제 3 레지스터는, (1) 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일하거나(또는 택일적으로, 동일하지 않은) 경우에 또는 (2) 제 1 레지스터 값 내의 하나의 바이트가 제로인 경우에 일치 결과를 나타낸다. 다음으로, 제 4 레지스터 값은 (1) 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하면(또는 택일적으로 동일하지 않으면), 매칭 바이트의 수(count)로, 또는 (2) 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않으면(또는 택일적으로 동일하면), 0과 n-1 사이의 숫자를 포함하는 값의 범위 외의 숫자로, 설정된다. n 값은 상기 제 1 및 제 2 레지스터 값 내의 바이트의 수에 대응하는 정수이다.

Description

널-종료 문자열 동작을 가속화하는 방법{METHOD TO ACCELERATE NULL-TERMINATED STRING OPERATIONS}
본 발명이 속하는 분야의 기술자가 분명히 이해할 수 있는 바와 같이, 일부 프로그램 언어(C 및 C++ 포함)는 널-종료 바이트 문자열(null-terminated byte string)을 생성한다. 본 발명은 표준 문자열 함수의 처리를 가속화하기 위한 명령 패밀리를 제안함으로써 C 및 C++ 프로그래밍 언어의 이러한 특성을 이용한다.
본 발명이 속하는 분야의 기술자가 분명히 이해할 수 있는 바와 같이, C 및 C++ 프로그래밍 언어는 널 종료된 표준 문자열(string)을 생성한다. 널-종료된 바이트 문자열은 문자열의 종료(말단)가 0 바이트로 표시되는 문자열이다.
문자열 처리시, 특정한 키 커널(kernel)의 성능은 전체 애플리케이션의 성능을 결정할 수 있다. 이러한 함수는 일반적으로 표준 라이브라리(구체적으로, 다음과 같은 ISO C 표준의 섹션 7.21:(1) sterlen 함수 (2) strcmp 함수 (3) strcpy 함수 및 (4) strchr 함수)에 정의된 함수이다.
이러함 함수 중 임의의 하나를 실행하는 것은 상당한 양의 프로세서 시간을 요할 수 있다.
따라서, 이 기술분야에서는 프로세싱 시간을 줄이는 데 도움이 되는 방법이 필요하다.
본 발명은 소정을 명령에 대한 전체 프로세싱 시간을 줄이는 둘 이상의 방법을 제공한다.
구체적으로, 본 발명은 많은 언어들 중에, C 및 C++ 프로그래밍 언어에 의해 생성된 선택된 바이트 문자열의 널-종료에 적어도 부분적으로 근거한다.
본 발명은 널-종료 문자열 대문에 이러한 함수의 처리의 가속화를 가능하게 하는 최소한의 세트의 명령을 제안한다. 다르게 설명하면, 본 발명의 일 측면은 널-종료 문자열의 존재를 인식하고 이를 인용한다. 그러한 과정에서, 본 발명은 처리 속도 및 효율을 증가시킨다.
본 발명을 위해 제안된 한 세트의 명령에서, 본 발명은 제 1 및 제 2 레지수터 값을 포함하는 방법을 제공하며, 이들 모두는 길이 면에서 2 바이트 이상이다. 이러한 방법에서, 제 1 및 제 2 레지스터 값은 동일한 바이트 수를 가진다. 결과적으로, 제 1 레지스터 값의 바이트와 제 2 레지스터 값의 바이트를 비교한 후에, 이 방법은 (1) 제 1 레지스터 값 내의 하나의 바이트가 제 2 레지스터 갓 내의 대응하는 바이트와 동일한 경우 또는 (2) 제 1 레지스터 값 내의 바이트가 0인 경우에, 일치 결과(match)를 나타내기 위해 제 3 레지스터를 설정한다. 즉. 또한, 이 방법은 (1) 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응 바이트와 동일한 경우에, 매칭 바이트의 카운트(count) 또는 (2) 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일한 경우에, 0과 n-1 사이의 수를 포함하는 값의 범위 외의 수(number). 분명하게 이해할 수 있는 바와 같이, n은 제 1 및 제 2 레지스터 값 내의 바이트의 수에 대응하는 정수이다.
이러한 방법에 대한 택일적인 예에서, 본 발명은 또한 제 1 및 제 2 레지스터 값(모두가 길이 면에서 2 바이트 이상임)이 판독되는 방법을 제공한다. 첫 번째 경우에와 같이, 제 1 및 제 2 레지스터 값은 동일한 길이인 것으로 가정한다. 제 1 레지스터 값의 바이트가 제 2 레지스터 값의 바이트와 비교되었다. 제 3 레지스터는 (1) 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일한 경우 또는 (2) 제 1 레지스터 값 내의 바이트가 제로(0)인 경우에 일치 결과(match)를 나타내도록 설정된다. 제 4 레지스터 값은 (1) 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응 바이트와 동일하지 않은 경우에, 매칭 바이트의 수로 또는 (2) 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응 바이트와 동일한 경우에, 0과 n-1 사이의 수를 포함하는 수의 범위 외의 수로 설정된다. 이전에서와 같이, n은 제 1 및 제 2 레지스터 중 어느 하나 내의 바이트의 수에 대응하는 정수이다.
또한 본 발명은, 프로세서가 빅 엔디안인 경우에, 최상위 바이트에서 최바이트까지 비교될 제 1 레지스터 값과 제 2 레지스터 값의 바이트를 제공한다.
본 발명의 다른 측면에서는, 프로세서가 리틀 엔디안인 역우에, 최상위 바이트에서 최하위 바이트까지 비교될 제 1 레지스터 및 제 2 레지스터 값의 바이트가 제공된다.
본 발명의 일 측면에서, 제 3 레지스터에 관하여, 일 비트를 가지는 조건 플하위 래그 레지스터로 제 3 레지스터가 제공된다.
본 발명은 일 비트 이상을 가지는 조건 레지스터인 제 3 레지스터를 추가로 제공한다. 이 경우에, 제 3 레지스터의 수 비트 중 하나의 비트가 일치 결과(match)를 나타내도록 설정될 수 있다.
본 발명의 또 다른 측면에서, 제 3 레지스터가 수 비트를 포함하는 조건 레지스터일 수 있다. 이러한 변형예에서, 제 3 레지스터는 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일한지 또는, 제 1 레지스터 값 내의 제 1 바이트가 0인지 여부에 따라 다른 값을 유지할 수 있다.
제 4 레지스터 값에 관하여, 본 발명은 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 값이 -1로 설정되도록 한다.
본 발명의 또 다른 측면에서, 제 3 및 제 4 레지스터 값은 동시에 설정될 수 있다.
본 발명의 하나의 추가 측면에서, 둘 이상의 별개의 레지스터가 이 방법을 실행하기 위한 프로세서와 함께 동작한다.
본 발명의 또 다른 측면에서, 프로세서는 사전 지정된 바이트 바운더리로 시작하는 레지스터로 로딩될 수 있다.
다른 변형예에서, 제 1 레지스터 값의 바이트들은 제 2 레지스터 값의 최하위 바이트와만 비교된다.
또 다른 변형예에서, 본 발명은 일치 결과가 표시되지 않으면, 제 3 레지스터를 변경하는 단계를 포함한다.
본 발명의 다른 측면에서, 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터 일 수 있으며, 이는 일치 결과(match)가 표시될 때 설정될 수 있다. 선택적으로, 일치 결과가 표시되지 않으면 이 비트가 소거될 수 있다.
본 발명의 일 측면에서, 제 3 레지스터가 일 비트(일치 결과가 표시될 때 소거될 수 있음)를 가지는 조건 플래그 레지스터인 방법이 제공된다. 택일적으로 이 비트는 일치 결과가 표시될 때 설정될 수 있다.
본 발명의 다른 측면에서, 제 3 레지스터는 복수의 비트를 가지는 조건 레지스터일 수 있다. 복수의 레지스터 비트 중 하나가, 일치 결과가 표시될 대 설정되거나, 또는 이 비트는 일치 결과가 표시되지 않을 때 소거될 수 있다.
본 발명의 다른 측면에서, 제 3 레지스터는 수 비트를 가지는 조건 레지스터일 수 있다. 택일적으로, 일치 결과가 표시되지 않은 때, 비트가 설정될 수 있다.
본 발명의 또 다른 추가 측면에서, 이하의 설명이 분명히 이해될 것이다.
본 발명이 온전히 이해되고 실질적인 효과를 내기 위해, 본 발명의 바람직한 실시예(이에 제한되는 것은 아님)를 첨부된 도면을 참조하여, 이하에서 설명한다.
도 1은 본 발명의 방법에 따른 일 실시예의 제 1 부분이다.
도 2는 도 1에 도시된 방법에 따른 제 1 실시예의 제 2 부분이다.
도 3은 본 발명의 방법에 따른 제 2 실시예의 제 1 부분이다.
도 4는 도 1에 도시된 방법에 따른 제 2 실시예의 제 2 부분이다.
이하에서, 첨부된 도면 및 실시예와 함께 본 발명을 상세히 설명한다. 상술한 본 발명의 실시예들은 단지 예시와 설명을 위한 것일 뿐이며, 본 발명을 설명된 형태로 한정하려는 것이 아니다. 따라서, 다양한 변화 및 변경을 할 수 있음은 본 발명이 속하는 분야의 당업자에게 자명하다. 또한, 이 명세서의 상세한 설명이 본 발명의 범위를 제한하는 것은 아니다. 본 발명의 범위는 첨부된 청구항에 의해서 정의된다.
본 발명을 설명하기 위해, 수 개의 가정이 이루어진다. 먼저, 프로세서 내의 명령이 레지스터 및 조건 플래그나 비트를 동시에 설정할 수 있는 것으로 가정한다. 두 번째로, 프로세서 내의 명령은 2 이상의 별개의 레지스터를 판독할 수 있는 것으로 가정한다. 셋째로, 프로세서는 멀티-바이트 레지스터(가령 32 비트 레지스터)를 포함하는 것으로 가정한다. 네 째로, 프로세서가 임의 바이트 바운더리에서 시작하는 레지스터로 로드될 수 있는 것으로 가정할 수 있다. 이러한 네 번째 가정은 본 발명의 구현에 반드시 필요한 것은 아니다. 그러나, 이러한 네 번째 가정은 이하에서 명확히 설명될 것과 같이 본 발명에 대한 설명을 매우 간단하게 한다.
본 발명에 관하여, 두 개의 명령이 제안된다. 제 1 명령은 ffzbe 명령이라 한다. 제 2 명령은 ffzbn 명령이라 한다. "ffzbe"라 문자는 "find first zero or byte equal"을 의도한다. 문자 "ffzbn"은 "find first zero or byte not-equal"이라는 것을 의미한다. 물론, 이러한 명령에 대한 명칭의 선택이 본 발명에 있어 핵심적인 것은 아니다. 임의의 다른 명칭이 본 발명의 범위를 벗어나지 않는 한 선택될 수 있다.
ffzbe 명령
ffzbe 명령은 다음의 동작을 포함한다. (1) 두 개의 레지스터 값(RA 및 RB) 가 판독된다, (2) 레지스터 값(RT) 및 조건 비트/플래그가 기록된다, (3) 바이트(RA 및 RB)가 최상위 비트(MSB)로부터 최하위 비트(LSB)까지 또는 LSB로부터 MSB까지, 프로세서가 빅-엔디안(big-endian)이냐, 리틀-엔디안(little-endian)이냐에 따라 검사된다, (4) RA 내의 바이트의 값이 0이거나 RB의 대응 바이트와 같은 경우에, 조건 비트 또는 플래그 내의 마커(marker)가 일치 결과를 나타내도록 설정된다, (5) 제 1 매치(match)가 동일한 바이트인 경우에, RT는 매칭 바이트의 수로 설정되며, (6) 동일한 바이트가 아닌 경우에, RT의 값은 0 ... num_bytes_in_register-1 의 범위 외인 값으로 설정된다. 이러한 하나의 선택예는 -1이다.
이러한 명령에 대한 의사-C는 코드 세그먼트 #1에 이하와 같이 설정된다. 코드 세그먼트 #1에 관하여, 여러 가정이 이루어진다. 첫째로, 프로세서가 조건 비트를 사용하고, 명령은 항상 조건 비트를 0(zero)로 설정/소거한다. 둘째로, 레지스터 폭은 4 바이트이다. 셋째로, 프로세서가 빅 엔디안이다. 이러한 가정하에, 코드 세그먼트 #1이 이하와 같이 제안된다.
코드 세그먼트 #1
Figure pct00001

코드 세그먼트#1에 관하여, 제로 종료 스크링(strlen 명령/동작)의 길이를 찾아내기 위해 상대적으로 전방향이다. 의사-어셈블러 코드에서, 비-최적화 어셈블리 버전은 이하의 코드 세그먼트 #2에서와 같이 상세하게 제공될 수 있다.
코드 세그먼트 #2
Figure pct00002
Figure pct00003

본 발명에 속하는 분야의 기술자가 분명히 알 수 있는 것과 같이, 코드 세그먼트 #2에 대한 최적의 구현예가 위에 상세히 설명된 비-최적화된 예와 매우 다르다. 무엇보다도, 최적화된 구현 예는 로드-앤드-업데이트 명령과 같은 더 복잡한 명령을 이용할 수 있도록 고려된다. 나아가, 코드 세그먼트 #2의 최적화된 버전은 길이 필드를 유지하지 않는 것으로 고려된다. 대신에, 코드 세그먼트 #2의 최적화된 버전은 길이를 계산하는데 원 어드레스와 최종 로드된 어드레스 사이의 차이에 근거한다.
또한 본 발명이 속하는 분야의 기술자가 분명히 알 수 있는 것과 같이, 문자열(string) 내의 특정한 바이트의 위치를 검색하는 것(strchr 명령/동작)은 매우 전방향적으로 성취될 수 있다. strchr 동작은 문자(character)가 발견되지 않은 경우에 0을 리턴하는 것에 주의한다. 문자가 검색된 경우에, 이 동작은 문자열(string) 내의 캐릭터로 포인터를 리턴한다. 코드 세그먼트 #3은 이러한 동작의 일 예를 제공한다.
코드 세그먼트 #3
Figure pct00004
Figure pct00005

마지막으로, 본 발명에 속하는 분야의 기술자가 명확히 이해할 수 있는 바와 같이, 이러한 명령은 유효한 문자열 복사 명령(strcpy 명령이라고도 함)을 기록하는 데 사용될 수 있다. strcpy 명령은 이하의 코드 세그먼트 #4에 제공된다.
코드 세그먼트 #4
Figure pct00006
Figure pct00007

예상할 수 있는 것과 같이, 코드 세그먼트 #4는 여러 다른 방식으로 최적화될 수 있다. 최적화의 세부사항이 이하에 제공되지는 않으나, 코드가 특히 라벨 "found" 및 "done" 사이에서 최적화될 수 있으며, 여기서, 문자열의 최종 마지막 수 바이트가 복사된다.
ffzbn 명령
ffzbn 명령은 다음의 동작을 포함한다. (1) 두 개의 레지스터 값(RA 및 RB)이 판독된다. (2) 레지스터 값(RT) 및 조건 비트/플래그가 기록된다. (3) RA 및 RB의 바이트가 최상위 바이트(MSB)로부터 최하위 바이트(LSB)까지, 또는 LSB에서 MSB로, 프로세서가 빅 엔디안이냐 리드 엔디안이냐에 따라 검사된다. (4) RA 내의 바이트의 값이 제로이거나 RB의 대응하는 바이트와 동일하지 않은 경우에, 조건 비트 또는 플래그 내의 마커가 일치 결과를 나타내도록 설정된다. (5) 제 1 매치(match)가 동일하지 않은 바이트인 경우에, RT는 매칭 바이트의 수(count)로 설정된다. (6) 그렇지 않은 경우에, RT의 값은 0 ... num_bytes_in_register-1의 범위 외의 값으로 설정된다. 이러한 선택 예의 하나가 -1이다.
이러한 명령에 대한 의사-C 코드가 이하의 코드 세그먼트 #5에서와 같이 설정될 수 있다. 코드 세그먼트 #5는 여러 가정에 근거한다. 첫째로, 프로세서는 조건 비트를 사용하는 것으로 가정한다. 둘째로, 명령은 항상 조건 비트를 제로(0)로 설정/소거하는 것으로 가정한다. 셋째로, 레지스터 폭이 4 바이트인 것으로 가정한다. 넷째로, 프로세서가 빅 엔디안인 것으로 가정한다. 이러한 네 개의 가정에서, 코드 세그먼트 # 5가 본 발명의 일 예로 제공된다.
코드 세그먼트 # 5
Figure pct00008

코드 세그먼트 #5에 제공된 명령은 "strcmp"라고도 불리는 유효한 문자열 비교 명령을 기록하는데 사용될 수 있다. 이러한 명령은 이하의 코드 세그먼트 #6에 표현된다.
코드 세그먼트 #6
Figure pct00009
Figure pct00010

코드 세그먼트 #6은 최적화 형태로 기록된 것이 아니다. 최적화된 예는 본 발명이 속하는 분야의 기술자에게 자명하나 이하에서 상세히 설명되지는 않는다.
추가 정보
ffzbe 명령 및 ffzbn 명령에 관하여, 본 발명의 일부로 고려된 여러 변형예가 존재한다.
이 명령들 양자에 대해 고려된 하나의 변형예는 RB의 개별적인 바이트에 대한 비교를 방지한다. 이러한 변형예에서, 비교는 RB의 최하위 바이트에 대해서만 이루어진다. 적어도 ffzbe 명령에 대한 이러한 특정한 변형예는, 함수의 헤드(또는 시작부분)에서 복사를 필요로 하지 않고, strchr 명령의 구현을 가능하게 한다. 본 발명이 속하는 분야의 기술자가 명확히 이해할 수 있는 것과 같이, 이는 프로세싱 시간을 감소시키고, 프로세싱 효율을 증가시킨다.
또 다른 고려된 변형예는, 플래그/비트가 설정될 필요가 없을 때, 조건 비트/플래그의 처리에 관계된다. 이러한 변형예에서, 수 개의 고려 옵션이 존재한다. 하나의 옵션에서, 플래그/비트는, ffzbe 명령 또는 ffabn 명령이 실행될 때마다 설정 또는 소거된다. 제 2 옵션에서, 조건 플래그/비트는 (1) 제로 바이트가 나타날 때 또는 (2) 등가 및/또는 비-등가 바이트가 나타날 때, 위에 특정한 바와 같이 설정된다. 이러한 옵션에서, 이러한 조건을 만족하지 않는 경우에, 조건 플래그가 변경되지 않는다.
또 다른 변형예는, 프로세서가 다중 조건을 신호하는 조건 플래그를 사용할 때 고려된다. 조건은 (1) 크거나, (2) 작거나 (3) 동일하거나, 이러한 세 개의 조건의 조합을 포함하나, 이에 한정되는 것은 아니다. 다중 플래그의 존재는, 서로 다른 플래그를 설정함으로써 제로-바이트 매치 경우와 등가/비-등가 매치 경우를 구별하기 위한 명령을 발행한다. 나아가, ffzbn 명령은 제 1 비 등가 바이트들을 비교하고, 위에 제공된 의사-C 문자열(description)에 따라, ba>bb 또는 ba<bb인 경우에 플래그보다 크거나/작게 설정할 수 있다.
이러한 발명과 유사한 면이 종래기술에서 발견될 수도 있다. 가장 인접한 예는 아마도, 파워 PC 440의 dlmbz 명령일 것이다. 이러한 명령은 0인 제 1 바이트에 대한 두 개의 레지스터를 연결함으로써 형성된 8-바이트 값을 검색한다. 이는 rb = 0인 경우에, ffzbe 명령의 기능성을 가지며, 이로써 strcpy 및 strlen를 위해 사용될 수 있다. 그러나, dlmbz 명령은 본 발명에 속하는 분야의 기술자가 분명히 이해할 수 있는 것과 같이, 여러 단점 중에서도, strcmp 및 strchr 과 같은 함수의 처리를 가속화하지 않는다.
이전에 설명한 바와 같이, 본 발명은 서로 다른 다양한 실시예 및 변형예를 제공하며, 이는 이하에서 요약되고 도면과 함께 설명된다.
본 발명은 프로세서에 의해 실행가능한 방법(10)을 제시한다. 방법(10)은 도 1 및 도 2에 도시된다.
방법(10)은 단계(12)에서 시작된다. 단계(14)에서, 방법(10)은 길이면에서 2 이상의 바이트의 제 1 레지스터 값을 판독한다. 단계(16)에서, 방법(10)은 제 2 레지스터 값을 판독하고, 이들은 또한 길이 면에서 2 바이트 이상이다. 방법(10)은 제 1 레지스터 값과 제 2 레지스터 값이 동일한 길이를 가지는 것으로 가정하고, 이는 단계(18)에서 다음 동작을 용이하게 한다. 단계(18)에서, 방법(10)은 제 2 레지스터 값의 바이트와 제 1 레지스터 값의 바이트를 비교한다. 단계(20)에서, 제 3 레지스터는 두 가지 조건 중 하나 이상이 만족된 경우에 일치 결과를 표시하도록 설정된다. 첫째로, 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일한 경우에, 제 3 레지스터가 일치 결과(match)를 표시한다. 둘째로, 제 1 레지스터 값 내의 바이트가 제로인 경우에, 제 3 레지스터가 일치 결과를 나타낸다. 참조 번호(22)는 도 1 및 도 2 사이의 커넥터(A)를 나타낸다.
방법(10)은 도 2로 이어진다. 단계(24)에서, 방법(10)은 두 개의 조건에 따라 제 4 레지스터 값을 설정하도록 진행된다. 첫째로, 제 4 레지스터 값은, 제 1 레지스터 값이 제 2 레지스터 값 내의 대응하는 바이트와 동일한 경우에, 매칭 바이트의 수(count)를 설정한다. 둘째로, 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 제 4 레지스터 값은 0과 n-1 사이의 숫자를 포함하는 값의 범위 외의 숫자로 설정된다. 방법(10)에 관하여, n은 제 1 및 제 2 레지스터 값 내의 바이트의 수에 대응하는 정수이다. 방법(10)은 단계(26)에서 종료된다.
방법(10)의 일 변형예에서, 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는, 프로세서가 빅 엔디안인 경우에, 최상위 비트에서 최하위 비트까지 비교된다. 다른 변형예에서, 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는, 프로세서가 리틀 엔디안인 경우에, 최하위 비트에서 최상위비트까지 비교된다.
제 3 레지스터에 관하여, 본 발명에 따른 일 실시예는 일 비트를 가지는 조건 플래그인 제 3 레지스터를 포함한다. 다른 변형예도 고려된다. 예를 들어, 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터일 수 있다. 이러한 경우에, 제 3 레지스터의 비트들 중 하나가 일치 결과(match)를 나타내도록 설정될 수 있다. 또한, 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터인 것으로 간주한다. 이러한 경우에, 제 3 레지스터는 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일한지 또는 제 1 레지스터 값 내의 제 1 바이트가 제로인지 여부에 따라 다른 값을 유지할 수 있다.
제 4 레지스터 값에 관하여, 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 제 4 레지스터 값이 -1로 설정될 수 있다. 값, -1은 분명히 0에서 n-1 사이의 값의 범위 외에 속한다. 다른 변형예도 본 발명의 범위에 속하는 것으로 생각될 수 있다. 왜냐하면, -1이 선택될 수 있는 유일한 값이 아니기 때문이다.
본 발명의 일 변형예에서, 제 3 레지스터 및 제 4 레지스터가 동시에 설정될 수 있다.
본 발명의 또 다른 변형예에서, 둘 이상의 별개의 레지스터가 이 방법을 실행하기 위한 프로세서와 함께 동작할 수 있다.
방법(10)에서, 프로세서는 사전 지정된 바이트 바운더리로 시작하는 레지스터로 로딩할 수 있다.
다른 변형예에서, 제 1 레지수터 값의 바이트들이 제 2 레지스터 값의 최하위 바이트와만 비교된다.
또 다른 추가 변형예에서, 방법(10)은 추가 동작을 포함할 수 있다. 예를 들면, 방법(10)은 일치 결과(match)가 표시되지 않은 경우에, 제 3 레지스터를 변경하는 것을 포함한다.
본 발명의 다른 실시예에서, 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터일 수 있다. 이러한 예에서, 이 비트는 일치 결과가 표시된 때 설정될 수 있다. 택일적으로, 이 비트는 일치 결과가 표시되지 않을 때, 소거될 수 있다.
본 발명에 따른 방법(10)은 또한 제 3 레지스터가 일 비트를 가지는 조건 플래그 레지스터가 되도록 동작한다. 이 비트는 일치 결과가 표시된 때 소거될 수 있다. 택일적으로, 이 비트는 일치 결과가 표시되지 않을 때, 설정될 수 있다.
방법(10)의 또 다른 변형예에서, 제 3 레지스터 비트가 복수의 비트를 가지는 조건 레지스터일 수 있다. 복수의 비트 중 하나는 일치 결과가 표시될 때 설정될 수 있다. 별개로, 이러한 일 비트는 일치 결과가 표시되지 않을 때, 소거될 수 있다.
또한 제 3 레지스터는 복수의 비트를 가지는 조건 레지스터일 수 있다. 이러한 실시예에서, 복수의 비트들 중 하나는 일치 결과가 표시된 때 소거될 수 있다. 또는 일치 결과가 표시되지 않은 때, 이 일 비트가 설정될 수 있다.
도 3 및 4 를 참조하면, 제 2 방법(30)이 설명된다. 방법(30)은 프로세서서에서 실행가능하다.
제 2 방법(30)은 단계(32)에서 시작된다. 단계(34)에서, 방법(30)은 길이 면에서, 둘 이상의 바이트의 제 1 레지스터 값을 판독한다. 단계(36)에서, 방법(30)은 길이 면에서, 2 이상의 바이트의 제 2 레지스터를 판독한다. 방법(30)은 제 1 레지스터 값 및 제 2 레지스터 값이 모두 동일한 길이인 것으로 가정하고, 이는 단계(389)에서 다음 동작을 용이하게 한다. 단계(38)에서, 방법(30)은 제 2 레지스터 값의 바이트와 제 1 레지스터 값의 바이트를 비교한다. 단계(40)에서, 제 3 레지스터 값은, 2 이상의 조건을 만족할 때, 일치 결과를 표시하도록 설정된다. 첫째로, 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 제 3 레지스터가 일치 결과를 나타낸다. 둘째로, 제 1 레지스터 값이 제로(0)인 경우에, 제 3 레지스터 값이 일치 결과를 나타낸다. 참조 번호(42)는 도 3 및 도 4 사이의 커넥터(B)를 나타낸다.
방법(30)은 도 4에 계속된다. 단계(44)에서 방법(30)은 두 개의 조건 중 하나에 따라 제 4 레지스터 값을 설정하도록 진행된다. 첫째로, 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 제 4 레지스터 값은 매칭 바이트의 수로 설정된다. 둘째로, 제 4 레지스터 값은, 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일한 경우에, 0과 n-1 사이의 숫자를 포함하는 값의 범위 외의 숫자로 설정된다. 방법(10)에 관하여, n은 제 1 및 제 2 레지스터 값 내의 바이트의 수에 대응하는 정수이다. 방법(30)은 단계(46)에서 종료된다.
방법(30)의 일 변형예에서, 프로세서가 빅 엔디안인 경우에, 제 1 레지스터 값 및 제 2 레지스터 값의 바이트가 최상위 바이트부터 최하위 바이트로 비교된다. 다른 변형예에서, 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는, 프로세서가 리틀 엔디안인 경우에, 최하위 바이트부터 최상위 바이트로 비교된다.
방법(30)에서 제 3 레지스터에 관하여, 제 3 레지스터는 일 비트를 가지는 조건 플래그 레지스터일 수 있다. 또한 다른 변형예가 고려된다. 예를 들어, 제 3 레지스터의 비트 중 하나가 일치 결과를 나타내도록 설정될 수 있다. 또한, 제 3 레지스터는 복수의 비트를 가지는 조건 레지스터일 수 있다. 이러한 변형예에서, 제 3 레지스터는 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일한지 또는 제 1 레지스터 값 내의 제 1 바이트가 제로(0)인지 여부에 따라 서로 다른 값을 유지할 수 있다.
제 4 레지스터 값에 관하여, 제 4 레지스터 값은, 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트인 경우에, -1로 설정될 수 있다. 값, -1 은 0부터 n-1까지의 값의 범위 외에 속하는 것이 분명하다. -1이 선택될 수 있는 유일한 값이 아니기 때문에, 본 발명의 범위 내에서 다른 변형예도 고려된다.
방법(30)에 대해 고려된 일 변형예에서, 제 3 레지스터 및 제 4 레지스터 값이 동시에 설정될 수 있다.
또 다른 변형예에서, 둘 이상의 별개의 레지스터가 이 방법을 실행하기 위해 프로세서와 함께 동작할 수 있다.
방법(30)에서, 프로세서는 사전 지정된 바이트 바운더리로 시작하는 레지스터로 로딩할 수 있다.
방법에 대한 다른 변형예에서, 제 1 레지스터 값의 바이트가 제 2 레지스터 값의 최하위 비트와만 비교된다.
또 다른 추가 변형예에서, 방법(30)은 추가 동작을 포함할 수 있다. 예를 들면, 방법(30)은 일치 결과가 표시되지 않은 경우에, 제 3 레지스터를 변경하는 것을 포함할 수 있다.
방법(30)에 대한 다른 실시예에서, 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터일 수 있다. 이러한 실시예에서, 비트는 일치 결과(match)가 표시된 때 설정될 수 있다, 택일적으로, 이 비트는 일치 결과가 표시되지 않은 때, 소거될 수 있다.
본 발명에 따른 방법(30)은 제 3 레지스터가 일 비트를 가지는 조건 플래그 레지스가 되도록 동작할 수 있다. 이 비트는 일치 결과가 표시될 때 소거될 수 있다. 이 비트는 일치 결과가 표시된 때 설정될 수 있다.
방법(30)에 대해 고려된 또 다른 변형예에서, 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터일 수 있다. 복수의 비트 중 하나가, 일치 결과가 표시된 때 설정될 수 있다. 이러한 일 비트는 일치 결과가 표시되지 않은 때 소거될 수 있다.
택일적으로, 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터일 수 있다. 이러한 실시예에서, 복수의 비트 중 하나는 일치 결과가 표시된 때 소거될 수 있으며, 이러한 일 비트는 일치하는 것으로 표시되지 않을 때, 설정될 수 있다.
이전의 설명 및 본 발명에 대한 도면으로부터 명확히 알 수 있듯이, 본 발명은 이 명세서 설명된 실시 예에만 한정되는 것은 아니다. 반대로, 본 발명이 속하는 분야의 기술자가 분명히 이해할 수 있는 것과 같이, 다양한 추가 실시예, 변형예 및 등가물이 본 발명의 범위를 벗어나지 않은 한, 이용될 수 있다.

Claims (32)

  1. 프로세서에 의해 실행되는 방법에 있어서, 상기 방법은:
    2 이상의 바이트를 포함하는 제 1 레지스터 값을 판독하는 단계;
    2 이상의 바이트를 포함하는 제 2 레지스터 값을 판독하는 단계;
    상기 제 1 및 제 2 레지스터 값은 모두 동일한 수의 바이트를 포함하며;
    상기 제 1 레지스터 값의 바이트를 제 2 레지스터 값의 바이트와 비교하는 단계;
    (1) 상기 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일한 경우, 또는 (2) 상기 제 1 레지스터 값 내의 하나의 바이트가 제로(0)인 경우에, 제 3 레지스터가 일치 결과를 나타내도록 설정하는 단계; 그리고
    (1) 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하면, 매칭 바이트의 수(count)로, 또는 (2) 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않으면, 0과 n-1 사이의 숫자를 포함하는 값의 범위 외의 숫자로, 제 4 레지스터 값을 설정하는 단계
    를 포함하되,
    n 은 상기 제 1 및 제 2 레지스터 값 내의 바이트의 수에 대응하는 정수인 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  2. 제 1 항에 있어서,
    상기 프로세서가 빅 엔디안인 경우에, 상기 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는 최상위 바이트부터 최하위 바이트로 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  3. 제 1 항에 있어서,
    상기 프로세서가 리틀 엔디안인 경우에, 상기 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는 최하위 바이트부터 최상위 바이트로 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  4. 제 1 항에 있어서,
    상기 제 3 레지스터가 1 비트를 포함하는 조건 플래그 레지스터인 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  5. 제 1 항에 있어서,
    상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
    상기 제 3 레지스터의 일 비트는 일치 결과를 표시하도록 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  6. 제 1 항에 있어서,
    상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고, 그리고
    상기 제 3 레지스터는 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하다는 결정이 이루어진 때 제 1 일치 값으로 설정되고, 그렇지 않은 경우에 상기 제 3 레지스터는 상기 제 1 레지스터 값 내의 바이트가 제로(0)일 때 제 2 일치 값으로 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  7. 제 1 항에 있어서,
    상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 상기 제 4 레지스터 값이 -1로 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  8. 제 1 항에 있어서,
    상기 제 3 레지스터 및 제 4 레지스터 값이 동시에 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  9. 제 1 항에 있어서,
    둘 이상의 별개의 레지스터가 상기 방법을 실행하기 위한 프로세서와 함께 동작하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  10. 제 1 항에 있어서,
    상기 프로세서는 사전 지정된 바이트 바운더리로 시작하는 레지스터에 로딩하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  11. 제 1 항에 있어서,
    상기 제 1 레지스터 값의 바이트가 상기 제 2 레지스터 값의 최하위 바이트와만 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  12. 제 1 항에 있어서,
    일치 결과가 표시되지 않는 경우에 상기 제 3 레지스터를 변경하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  13. 제 12 항에 있어서,
    상기 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터이고,
    상기 일 비트는 일치 결과가 표시되는 때 설정되며, 그리고
    상기 일 비트는 일치 결과가 표시되지 않는 때 소거되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  14. 제 12 항에 있어서,
    상기 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터이고,
    상기 일 비트는 일치 결과가 표시되는 때 소거되며, 그리고
    상기 일 비트는 일치 결과가 표시되지 않는 때 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  15. 제 12 항에 있어서,
    상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
    상기 복수의 비트 중 일 비트는 일치 결과가 표시되는 때 설정되며, 그리고
    상기 일 비트는 일치 결과가 표시되지 않는 때 소거되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  16. 제 12 항에 있어서,
    상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
    상기 복수의 비트 중 일 비트는 일치 결과가 표시되는 때 소거되며, 그리고
    상기 일 비트는 일치 결과가 표시되지 않는 때 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  17. 프로세서에 의해 실행되는 방법에 있어서, 상기 방법은:
    2 이상의 바이트를 포함하는 제 1 레지스터 값을 판독하는 단계;
    2 이상의 바이트를 포함하는 제 2 레지스터 값을 판독하는 단계;
    상기 제 1 및 제 2 레지스터 값은 모두 동일한 수의 바이트를 포함하며;
    상기 제 1 레지스터 값의 바이트를 제 2 레지스터 값의 바이트와 비교하는 단계;
    (1) 상기 제 1 레지스터 값 내의 바이트가 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우, 또는 (2) 상기 제 1 레지스터 값 내의 하나의 바이트가 제로(0)인 경우에, 제 3 레지스터가 일치 결과를 나타내도록 설정하는 단계; 그리고
    (1) 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않으면, 매칭 바이트의 수(count)로, 또는 (2) 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하면, 0과 n-1 사이의 숫자를 포함하는 값의 범위 외의 숫자로, 제 4 레지스터 값을 설정하는 단계
    를 포함하되,
    n 은 상기 제 1 및 제 2 레지스터 중 어느 하나의 바이트의 수에 대응하는 정수인 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  18. 제 17 항에 있어서,
    상기 프로세서가 빅 엔디안인 경우에, 상기 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는 최상위 바이트부터 최하위 바이트로 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  19. 제 17 항에 있어서,
    상기 프로세서가 리틀 엔디안인 경우에, 상기 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는 최하위 바이트부터 최상위 바이트로 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  20. 제 17 항에 있어서,
    상기 제 3 레지스터가 1 비트를 포함하는 조건 플래그 레지스터인 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  21. 제 17 항에 있어서,
    상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
    상기 제 3 레지스터의 일 비트는 일치 결과를 표시하도록 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  22. 제 17 항에 있어서,
    상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고, 그리고
    상기 제 3 레지스터는 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않다는 결정이 이루어진 때 제 1 일치 값으로 설정되고, 그렇지 않은 경우에 상기 제 3 레지스터는 상기 제 1 레지스터 값 내의 바이트가 제로(0)일 때 제 2 일치 값으로 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  23. 제 17 항에 있어서,
    상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 상기 제 4 레지스터 값이 -1로 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  24. 제 17 항에 있어서,
    상기 제 3 레지스터 및 제 4 레지스터 값이 동시에 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  25. 제 17 항에 있어서,
    둘 이상의 별개의 레지스터가 상기 방법을 실행하기 위한 프로세서와 함께 동작하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  26. 제 17 항에 있어서,
    상기 프로세서는 사전 지정된 바이트 바운더리로 시작하는 레지스터에 로딩하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  27. 제 17 항에 있어서,
    상기 제 1 레지스터 값의 바이트가 상기 제 2 레지스터 값의 최하위 바이트와만 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  28. 제 17 항에 있어서,
    일치 결과가 표시되지 않는 경우에 상기 제 3 레지스터를 변경하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  29. 제 28 항에 있어서,
    상기 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터이고,
    상기 일 비트는 일치 결과가 표시되는 때 설정되며, 그리고
    상기 일 비트는 일치 결과가 표시되지 않는 때 소거되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  30. 제 28 항에 있어서,
    상기 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터이고,
    상기 일 비트는 일치 결과가 표시되는 때 소거되며, 그리고
    상기 일 비트는 일치 결과가 표시되지 않는 때 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  31. 제 28 항에 있어서,
    상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
    상기 복수의 비트 중 일 비트는 일치 결과가 표시되는 때 설정되며, 그리고
    상기 일 비트는 일치 결과가 표시되지 않는 때 소거되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
  32. 제 28 항에 있어서,
    상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
    상기 복수의 비트 중 일 비트는 일치 결과가 표시되는 때 소거되며, 그리고
    상기 일 비트는 일치 결과가 표시되지 않는 때 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
KR1020107018313A 2008-02-18 2009-02-03 널-종료 문자열 동작을 가속화하는 방법 KR20100126690A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US2942208P 2008-02-18 2008-02-18
US61/029,422 2008-02-18

Publications (1)

Publication Number Publication Date
KR20100126690A true KR20100126690A (ko) 2010-12-02

Family

ID=40985866

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107018313A KR20100126690A (ko) 2008-02-18 2009-02-03 널-종료 문자열 동작을 가속화하는 방법

Country Status (5)

Country Link
US (1) US20100031007A1 (ko)
EP (1) EP2245529A1 (ko)
KR (1) KR20100126690A (ko)
CN (1) CN102007469A (ko)
WO (1) WO2009105332A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102370851B1 (ko) * 2021-08-18 2022-03-07 주식회사 로그프레소 벡터 연산 명령어를 통해 문자열을 고속으로 추출하는 방법

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
CN102027456A (zh) * 2008-03-13 2011-04-20 阿斯奔收购公司 用于通过停用有效阵列实现功率节省的方法
WO2010017263A1 (en) 2008-08-06 2010-02-11 Sandbridge Technologies, Inc. Haltable and restartable dma engine
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
CN103959237B (zh) * 2011-11-30 2016-09-28 英特尔公司 用于提供向量横向比较功能的指令和逻辑
WO2013095529A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Addition instructions with independent carry chains
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US10540512B2 (en) * 2015-09-29 2020-01-21 International Business Machines Corporation Exception preserving parallel data processing of string and unstructured text
US20170123792A1 (en) * 2015-11-03 2017-05-04 Imagination Technologies Limited Processors Supporting Endian Agnostic SIMD Instructions and Methods
US10564967B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
US10613862B2 (en) 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators
US10789069B2 (en) 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10620956B2 (en) 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character
US10255068B2 (en) 2017-03-03 2019-04-09 International Business Machines Corporation Dynamically selecting a memory boundary to be used in performing operations
US10564965B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
EP4195540A4 (en) * 2020-08-26 2024-01-10 Huawei Technologies Co., Ltd. TRAFFIC MONITORING METHOD AND DEVICE, INTEGRATED CIRCUIT AND NETWORK DEVICE
CN112835842B (zh) * 2021-03-05 2024-04-30 深圳市汇顶科技股份有限公司 端序处理方法、电路、芯片以及电子终端

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4556951A (en) * 1982-06-06 1985-12-03 Digital Equipment Corporation Central processor with instructions for processing sequences of characters
US5060143A (en) * 1988-08-10 1991-10-22 Bell Communications Research, Inc. System for string searching including parallel comparison of candidate data block-by-block
CA2045773A1 (en) * 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
JPH0831032B2 (ja) * 1990-08-29 1996-03-27 三菱電機株式会社 データ処理装置
US5627995A (en) * 1990-12-14 1997-05-06 Alfred P. Gnadinger Data compression and decompression using memory spaces of more than one size
US5423010A (en) * 1992-01-24 1995-06-06 C-Cube Microsystems Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words
US5465374A (en) * 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
DE4334294C1 (de) * 1993-10-08 1995-04-20 Ibm Prozessor für Zeichenketten variabler Länge
US5404473A (en) * 1994-03-01 1995-04-04 Intel Corporation Apparatus and method for handling string operations in a pipelined processor
US5724572A (en) * 1994-11-18 1998-03-03 International Business Machines Corporation Method and apparatus for processing null terminated character strings
US5611062A (en) * 1995-03-31 1997-03-11 International Business Machines Corporation Specialized millicode instruction for string operations
US5854921A (en) * 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
US5724872A (en) * 1996-06-28 1998-03-10 Shih; Leo Socket spanner having a nut retaining device
US5931940A (en) * 1997-01-23 1999-08-03 Unisys Corporation Testing and string instructions for data stored on memory byte boundaries in a word oriented machine
US6332152B1 (en) * 1997-12-02 2001-12-18 Matsushita Electric Industrial Co., Ltd. Arithmetic unit and data processing unit
US6192447B1 (en) * 1998-04-09 2001-02-20 Compaq Computer Corporation Method and apparatus for resetting a random access memory
TW498206B (en) * 1998-07-28 2002-08-11 Silicon Integrated Sys Corp Method and device for matching data stream with a fixed pattern
JP2001337845A (ja) * 2000-05-30 2001-12-07 Mitsubishi Electric Corp マイクロプロセッサ
US7039793B2 (en) * 2001-10-23 2006-05-02 Ip-First, Llc Microprocessor apparatus and method for accelerating execution of repeat string instructions
GB0210604D0 (en) * 2002-05-09 2002-06-19 Ibm Method and arrangement for data compression
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6842848B2 (en) * 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US6904511B2 (en) * 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US20040230775A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Computer instructions for optimum performance of C-language string functions
GB0315152D0 (en) * 2003-06-28 2003-08-06 Ibm Data parsing and tokenizing apparatus,method and program
US7251737B2 (en) * 2003-10-31 2007-07-31 Sandbridge Technologies, Inc. Convergence device with dynamic program throttling that replaces noncritical programs with alternate capacity programs based on power indicator
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
EP2069947A4 (en) * 2006-09-26 2013-10-09 Qualcomm Inc APPLICATION OF MATRIX INVERSION SOFTWARE IN A WIRELESS COMMUNICATION SYSTEM
WO2008046177A1 (en) * 2006-10-20 2008-04-24 Quad-Lock Building Systems Ltd. Wall opening form
US20100299319A1 (en) * 2007-08-31 2010-11-25 Sandbridge Technologies, Inc. Method, apparatus, and architecture for automated interaction between subscribers and entities
US20100241834A1 (en) * 2007-11-05 2010-09-23 Sandbridge Technologies, Inc. Method of encoding using instruction field overloading
JP2010277440A (ja) * 2009-05-29 2010-12-09 Internatl Business Mach Corp <Ibm> プログラム実行時における文字列の処理を最適化する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102370851B1 (ko) * 2021-08-18 2022-03-07 주식회사 로그프레소 벡터 연산 명령어를 통해 문자열을 고속으로 추출하는 방법

Also Published As

Publication number Publication date
CN102007469A (zh) 2011-04-06
US20100031007A1 (en) 2010-02-04
EP2245529A1 (en) 2010-11-03
WO2009105332A1 (en) 2009-08-27

Similar Documents

Publication Publication Date Title
KR20100126690A (ko) 널-종료 문자열 동작을 가속화하는 방법
JP6339164B2 (ja) ベクトルフレンドリ命令フォーマット及びその実行
US7565514B2 (en) Parallel condition code generation for SIMD operations
KR101581177B1 (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
US10915325B2 (en) Parsing-enhancement facility
TWI740859B (zh) 用於跨步的載入(strided load)的系統、設備及方法
US5669012A (en) Data processor and control circuit for inserting/extracting data to/from an optional byte position of a register
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
US20050177706A1 (en) Parallel subword instructions for directing results to selected subword locations of data processor result register
CN112631657B (zh) 用于字符串处理的字节比较方法以及指令处理装置
TW201738733A (zh) 執行指令以排列遮罩的系統及方法
JP5490711B2 (ja) テーブル内のエレメントのアドレスを決定するシステムおよび方法
US7003651B2 (en) Program counter (PC) relative addressing mode with fast displacement
CN111443948B (zh) 指令执行方法、处理器和电子设备
KR100764260B1 (ko) 프로세싱 시스템에서의 실행 인스트럭션 형성 방법
EP0206653B1 (en) Method and means for loading and storing data in a reduced instruction set computer
US6948053B2 (en) Efficiently calculating a branch target address
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그
US20040162965A1 (en) Information processing unit
JP4260895B2 (ja) マイクロコントローラにおける複数フォーマットアドレス指定
JPS63251835A (ja) ベクトル処理装置

Legal Events

Date Code Title Description
N234 Change of applicant [patent]: notification of change of applicant and registration of full transfer of right
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid