KR20100126690A - 널-종료 문자열 동작을 가속화하는 방법 - Google Patents
널-종료 문자열 동작을 가속화하는 방법 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 92
- 230000006870 function Effects 0.000 description 10
- 239000003550 marker Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare 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
본 발명이 속하는 분야의 기술자가 분명히 이해할 수 있는 바와 같이, 일부 프로그램 언어(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 부분이다.
도 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
코드 세그먼트#1에 관하여, 제로 종료 스크링(strlen 명령/동작)의 길이를 찾아내기 위해 상대적으로 전방향이다. 의사-어셈블러 코드에서, 비-최적화 어셈블리 버전은 이하의 코드 세그먼트 #2에서와 같이 상세하게 제공될 수 있다.
코드
세그먼트
#2
본 발명에 속하는 분야의 기술자가 분명히 알 수 있는 것과 같이, 코드 세그먼트 #2에 대한 최적의 구현예가 위에 상세히 설명된 비-최적화된 예와 매우 다르다. 무엇보다도, 최적화된 구현 예는 로드-앤드-업데이트 명령과 같은 더 복잡한 명령을 이용할 수 있도록 고려된다. 나아가, 코드 세그먼트 #2의 최적화된 버전은 길이 필드를 유지하지 않는 것으로 고려된다. 대신에, 코드 세그먼트 #2의 최적화된 버전은 길이를 계산하는데 원 어드레스와 최종 로드된 어드레스 사이의 차이에 근거한다.
또한 본 발명이 속하는 분야의 기술자가 분명히 알 수 있는 것과 같이, 문자열(string) 내의 특정한 바이트의 위치를 검색하는 것(strchr 명령/동작)은 매우 전방향적으로 성취될 수 있다. strchr 동작은 문자(character)가 발견되지 않은 경우에 0을 리턴하는 것에 주의한다. 문자가 검색된 경우에, 이 동작은 문자열(string) 내의 캐릭터로 포인터를 리턴한다. 코드 세그먼트 #3은 이러한 동작의 일 예를 제공한다.
코드
세그먼트
#3
마지막으로, 본 발명에 속하는 분야의 기술자가 명확히 이해할 수 있는 바와 같이, 이러한 명령은 유효한 문자열 복사 명령(strcpy 명령이라고도 함)을 기록하는 데 사용될 수 있다. strcpy 명령은 이하의 코드 세그먼트 #4에 제공된다.
코드
세그먼트
#4
예상할 수 있는 것과 같이, 코드 세그먼트 #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
코드 세그먼트 #5에 제공된 명령은 "strcmp"라고도 불리는 유효한 문자열 비교 명령을 기록하는데 사용될 수 있다. 이러한 명령은 이하의 코드 세그먼트 #6에 표현된다.
코드
세그먼트
#6
코드 세그먼트 #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)
- 프로세서에 의해 실행되는 방법에 있어서, 상기 방법은:
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 레지스터 값 내의 바이트의 수에 대응하는 정수인 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 프로세서가 빅 엔디안인 경우에, 상기 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는 최상위 바이트부터 최하위 바이트로 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 프로세서가 리틀 엔디안인 경우에, 상기 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는 최하위 바이트부터 최상위 바이트로 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 제 3 레지스터가 1 비트를 포함하는 조건 플래그 레지스터인 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
상기 제 3 레지스터의 일 비트는 일치 결과를 표시하도록 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고, 그리고
상기 제 3 레지스터는 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하다는 결정이 이루어진 때 제 1 일치 값으로 설정되고, 그렇지 않은 경우에 상기 제 3 레지스터는 상기 제 1 레지스터 값 내의 바이트가 제로(0)일 때 제 2 일치 값으로 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 상기 제 4 레지스터 값이 -1로 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 제 3 레지스터 및 제 4 레지스터 값이 동시에 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
둘 이상의 별개의 레지스터가 상기 방법을 실행하기 위한 프로세서와 함께 동작하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 프로세서는 사전 지정된 바이트 바운더리로 시작하는 레지스터에 로딩하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
상기 제 1 레지스터 값의 바이트가 상기 제 2 레지스터 값의 최하위 바이트와만 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 1 항에 있어서,
일치 결과가 표시되지 않는 경우에 상기 제 3 레지스터를 변경하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 12 항에 있어서,
상기 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터이고,
상기 일 비트는 일치 결과가 표시되는 때 설정되며, 그리고
상기 일 비트는 일치 결과가 표시되지 않는 때 소거되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 12 항에 있어서,
상기 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터이고,
상기 일 비트는 일치 결과가 표시되는 때 소거되며, 그리고
상기 일 비트는 일치 결과가 표시되지 않는 때 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 12 항에 있어서,
상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
상기 복수의 비트 중 일 비트는 일치 결과가 표시되는 때 설정되며, 그리고
상기 일 비트는 일치 결과가 표시되지 않는 때 소거되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 12 항에 있어서,
상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
상기 복수의 비트 중 일 비트는 일치 결과가 표시되는 때 소거되며, 그리고
상기 일 비트는 일치 결과가 표시되지 않는 때 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 프로세서에 의해 실행되는 방법에 있어서, 상기 방법은:
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 레지스터 중 어느 하나의 바이트의 수에 대응하는 정수인 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 프로세서가 빅 엔디안인 경우에, 상기 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는 최상위 바이트부터 최하위 바이트로 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 프로세서가 리틀 엔디안인 경우에, 상기 제 1 레지스터 값 및 제 2 레지스터 값의 바이트는 최하위 바이트부터 최상위 바이트로 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 제 3 레지스터가 1 비트를 포함하는 조건 플래그 레지스터인 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
상기 제 3 레지스터의 일 비트는 일치 결과를 표시하도록 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고, 그리고
상기 제 3 레지스터는 상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않다는 결정이 이루어진 때 제 1 일치 값으로 설정되고, 그렇지 않은 경우에 상기 제 3 레지스터는 상기 제 1 레지스터 값 내의 바이트가 제로(0)일 때 제 2 일치 값으로 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 제 1 레지스터 값 내의 바이트가 상기 제 2 레지스터 값 내의 대응하는 바이트와 동일하지 않은 경우에, 상기 제 4 레지스터 값이 -1로 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 제 3 레지스터 및 제 4 레지스터 값이 동시에 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
둘 이상의 별개의 레지스터가 상기 방법을 실행하기 위한 프로세서와 함께 동작하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 프로세서는 사전 지정된 바이트 바운더리로 시작하는 레지스터에 로딩하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
상기 제 1 레지스터 값의 바이트가 상기 제 2 레지스터 값의 최하위 바이트와만 비교되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 17 항에 있어서,
일치 결과가 표시되지 않는 경우에 상기 제 3 레지스터를 변경하는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 28 항에 있어서,
상기 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터이고,
상기 일 비트는 일치 결과가 표시되는 때 설정되며, 그리고
상기 일 비트는 일치 결과가 표시되지 않는 때 소거되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 28 항에 있어서,
상기 제 3 레지스터는 일 비트를 포함하는 조건 플래그 레지스터이고,
상기 일 비트는 일치 결과가 표시되는 때 소거되며, 그리고
상기 일 비트는 일치 결과가 표시되지 않는 때 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 28 항에 있어서,
상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
상기 복수의 비트 중 일 비트는 일치 결과가 표시되는 때 설정되며, 그리고
상기 일 비트는 일치 결과가 표시되지 않는 때 소거되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법. - 제 28 항에 있어서,
상기 제 3 레지스터는 복수의 비트를 포함하는 조건 레지스터이고,
상기 복수의 비트 중 일 비트는 일치 결과가 표시되는 때 소거되며, 그리고
상기 일 비트는 일치 결과가 표시되지 않는 때 설정되는 것을 특징으로 하는, 프로세서에 의해 실행되는 방법.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102370851B1 (ko) * | 2021-08-18 | 2022-03-07 | 주식회사 로그프레소 | 벡터 연산 명령어를 통해 문자열을 고속으로 추출하는 방법 |
Families Citing this family (27)
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)
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> | プログラム実行時における文字列の処理を最適化する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム |
-
2009
- 2009-02-03 KR KR1020107018313A patent/KR20100126690A/ko not_active Application Discontinuation
- 2009-02-03 US US12/365,130 patent/US20100031007A1/en not_active Abandoned
- 2009-02-03 EP EP09711949A patent/EP2245529A1/en not_active Withdrawn
- 2009-02-03 CN CN2009801135821A patent/CN102007469A/zh active Pending
- 2009-02-03 WO PCT/US2009/032987 patent/WO2009105332A1/en active Application Filing
Cited By (1)
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 |