KR20220054248A - 산술 및/또는 비트 유닛에 의한 조건문의 실행 - Google Patents
산술 및/또는 비트 유닛에 의한 조건문의 실행 Download PDFInfo
- Publication number
- KR20220054248A KR20220054248A KR1020217043317A KR20217043317A KR20220054248A KR 20220054248 A KR20220054248 A KR 20220054248A KR 1020217043317 A KR1020217043317 A KR 1020217043317A KR 20217043317 A KR20217043317 A KR 20217043317A KR 20220054248 A KR20220054248 A KR 20220054248A
- Authority
- KR
- South Korea
- Prior art keywords
- variable
- arithmetic
- expression
- boolean condition
- bit
- Prior art date
Links
- 230000014509 gene expression Effects 0.000 claims abstract description 205
- 238000000034 method Methods 0.000 claims abstract description 125
- 238000004590 computer program Methods 0.000 claims abstract description 123
- 239000011159 matrix material Substances 0.000 claims description 87
- 238000012545 processing Methods 0.000 claims description 57
- 230000001174 ascending effect Effects 0.000 claims description 14
- 239000012634 fragment Substances 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 description 55
- 238000006243 chemical reaction Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 21
- 230000009466 transformation Effects 0.000 description 20
- 230000009471 action Effects 0.000 description 16
- 238000003491 array Methods 0.000 description 11
- 238000005457 optimization Methods 0.000 description 8
- 230000009467 reduction Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000005549 size reduction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- 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/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Peptides Or Proteins (AREA)
- Executing Machine-Instructions (AREA)
- Earth Drilling (AREA)
- Saccharide Compounds (AREA)
Abstract
Description
도 2는 프로세서의 산술 및/또는 비트 유닛(들)만으로 컴퓨터 프로그램을 실행하기 위한 예시적인 프로세스의 흐름도이다.
도 3은 if-then(-else) 조건문의 기본 구조를 예시하는 의사코드이다.
도 4는 부울 조건을 산술 및/또는 비트 표현식으로 변환하기 위한 예시적인 프로세스의 흐름도이다.
도 5는 A = B를 A = B의 산술 및/또는 비트 표현식으로 변환하기 위한 예시적인 프로세스의 흐름도이다.
도 6은 A ≥ B를 A ≥ B의 산술 및/또는 비트 표현식으로 변환하기 위한 예시적인 프로세스의 흐름도이다.
도 7a 및 도 7b는 A < B를 A < B의 산술 및/또는 비트 표현식으로 변환하기 위한 예시적인 프로세스들의 흐름도들이다.
도 8은 조건문이 산술 체(arithmetic body)를 가질 때 컴퓨터 프로그램의 산술 및/또는 비트 표현식을 생성하기 위한 예시적인 프로세스의 흐름도이다.
도 9는 조건문이 비산술 체를 가질 때 컴퓨터 프로그램의 산술 및/또는 비트 표현식을 생성하기 위한 예시적인 프로세스의 흐름도이다.
도 10은 컴퓨터 프로그램의 산술 및/또는 비트 표현식을 제공하기 위한 예시적인 프로세스의 흐름도이다.
도 11a는 산술 체가 있는 조건문을 포함하는 C++ 컴퓨터 프로그램의 일 예이다. 도 11b는 도 11a의 컴퓨터 프로그램의 변환으로부터 생기는 C++ 컴퓨터 프로그램의 일 예이다. 도 11c는 산술 체가 있는 조건문을 포함하는 어셈블리 언어 컴퓨터 프로그램의 일 예이다. 도 11d는 도 11c의 컴퓨터 프로그램의 변환으로부터 생기는 어셈블리 언어 컴퓨터 프로그램의 일 예이다.
도 12a는 비산술 체가 있는 조건문을 포함하는 C++ 컴퓨터 프로그램의 일 예이다. 도 12b는 도 12a의 컴퓨터 프로그램의 변환으로부터 생기는 C++ 컴퓨터 프로그램의 일 예이다. 도 12c는 산술 체가 있는 조건문을 포함하는 어셈블리 언어 컴퓨터 프로그램의 일 예이다. 도 12d는 도 12c의 컴퓨터 프로그램의 변환으로부터 생기는 어셈블리 언어 컴퓨터 프로그램의 일 예이다.
도 13a 및 도 13b는 산술 및/또는 비트 연산 유닛의 집적 회로의 조합 로직 회로부의 예들을 도시한다.
도 14는 행렬형 데이터의 사이즈를 줄이기 위한 예시적인 프로세스의 흐름도이다.
도 15는 행렬형 데이터의 병렬 정렬을 위한 예시적인 프로세스의 흐름도이다.
Claims (35)
- 방법에 있어서,
컴퓨터 프로그램 ― 상기 컴퓨터 프로그램은 부울 조건을 포함하는 조건문을 포함함 ― 에 액세스하는 단계;
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계;
상기 부울 조건 대신에 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 포함하는 상기 컴퓨터 프로그램의 산술 표현식 및 비트 표현식 중 적어도 하나를 생성하는 단계; 및
상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나 ― 상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나는 프로세서의 산술 연산 유닛 및 비트 연산 유닛 중 적어도 하나에 의해 실행되도록 구성됨 ― 를 제공하는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나는,
상기 부울 조건이 검증되면, 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나는 1과 동일하며; 그리고
상기 부울 조건이 검증되지 않으면, 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나는 0과 동일하다
는 것을 검증하는 것인, 방법. - 제1항에 있어서, 상기 부울 조건은 제1 변수(A)와 제2 변수(B)를 취하며,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
A에서 B를 빼는 단계;
A에서 B를 뺀 결과의 절대 값을 컴퓨팅하는 단계;
상기 A에서 B를 뺀 결과의 절대 값에 기초하여 지수를 컴퓨팅하는 단계;
컴퓨팅된 지수에 의한 기수의 지수화에 의해 지수를 컴퓨팅하는 단계; 및
상기 지수를 상기 기수로 나눈 나머지에 기초하여 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 부울 조건은 A = B이고,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
상기 A에서 B를 뺀 결과의 상기 절대 값으로서 상기 지수를 컴퓨팅하는 단계; 및
상기 지수를 상기 기수로 나눈 상기 나머지로서, 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 부울 조건은 A ≥ B이고,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
상기 A에서 B를 뺀 결과의 상기 절대 값에서, 상기 A에서 B를 뺀 상기 결과를 감산하는 단계;
상기 A에서 B를 뺀 결과의 상기 절대 값에서 상기 A에서 B를 뺀 상기 결과를 감산한 결과의 절대값으로서 상기 지수를 컴퓨팅하는 단계; 및
상기 지수를 상기 기수로 나눈 상기 나머지로서 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 부울 조건은 A < B이고,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
상기 A에서 B를 뺀 결과의 상기 절대 값에서, 상기 A에서 B를 뺀 상기 결과를 감산하는 단계;
상기 A에서 B를 뺀 결과의 상기 절대 값에서 상기 A에서 B를 뺀 상기 결과를 감산한 결과의 절대값으로서 상기 지수를 컴퓨팅하는 단계;
상기 지수에 의한 상기 기수의 지수화에 의해 상기 지수를 컴퓨팅하는 단계; 및
1 빼기 상기 지수를 상기 기수로 나눈 상기 나머지로서, 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 부울 조건은 A = B이며, 상기 제1 및 제2 변수들(A 및 B)은 부동소수점형 데이터이고,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
상기 A에서 B를 뺀 결과의 상기 절대 값에 적용된 천장 함수의 결과로서 상기 지수를 컴퓨팅하는 단계; 및
상기 지수를 상기 기수로 나눈 상기 나머지로서 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 부울 조건은 A ≥ B이며, 상기 제1 및 제2 변수들(A 및 B)은 부동소수점형 데이터이고,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
상기 A에서 B를 뺀 결과의 상기 절대 값에서 상기 A에서 B를 뺀 상기 결과를 감산하는 단계;
상기 A에서 B를 뺀 결과의 상기 절대 값에서 상기 A에서 B를 뺀 상기 결과를 감산한 결과의 절대값에 적용되는 천장 함수의 결과로서 상기 지수를 컴퓨팅하는 단계; 및
상기 지수를 상기 기수로 나눈 상기 나머지로서 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 부울 조건은 A < B이며, 상기 제1 및 제2 변수들(A 및 B)은 부동소수점형 데이터이고,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
상기 A에서 B를 뺀 결과의 상기 절대 값에서 상기 A에서 B를 뺀 상기 결과를 감산하는 단계;
상기 A에서 B를 뺀 결과의 상기 절대 값에서 상기 A에서 B를 뺀 상기 결과를 감산한 결과의 절대값에 적용되는 천장 함수의 결과로서 상기 지수를 컴퓨팅하는 단계;
상기 지수에 의한 상기 기수의 지수화에 의해 상기 지수를 컴퓨팅하는 단계; 및
1 빼기 상기 지수를 상기 기수로 나눈 상기 나머지로서 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 제1 및 제2 변수들(A 및 B)은 부울형 데이터이며, 상기 부울 조건은 A = B이고,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
A와 B의 합을 컴퓨팅하는 단계; 및
1 빼기 상기 합을 상기 기수로 나눈 상기 나머지로서 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 제1 및 제2 변수들(A 및 B)은 행렬형 데이터이고,
상기 방법은,
상기 제1 및 제2 변수들(A 및 B)의 각각을 각각 상기 제1 변수(A)의 제1 2원소 쌍들 및 상기 제2 변수(B)의 제2 2원소 쌍들로 분할하는 단계; 및
수열의 구성원들 사이의 차이가 증가하는 수열로부터의 대표 숫자들을 사용하여, 비교를 위해, 상기 제1 및 제2 변수들(A 및 B)의 각각의 더 작은 버전들을 형성하는 단계를 포함하며,
상기 제1 변수(A)의 상기 더 작은 버전에 대한 상기 대표 숫자들의 각각은 상기 제1 변수(A)의 상기 제1 2원소 쌍들에서의 데이터 값들과 동일한 상기 수열에서의 인덱스들을 갖는 상기 수열의 각각의 구성원들로부터 컴퓨팅되며;
상기 제2 변수(B)의 상기 더 작은 버전에 대한 상기 대표 숫자들의 각각은 상기 제2 변수(B)의 상기 제2 2원소 쌍들에서의 데이터 값들과 동일한 상기 수열에서의 인덱스들을 갖는 상기 수열의 각각의 구성원들로부터 컴퓨팅되며; 그리고
상기 방법은, 상기 제1 및 제2 변수들(A 및 B)의 각각이 홀수의 원소들을 가질 때, 상기 분할하는 단계 전에 상기 제1 및 제2 변수들(A 및 B)의 각각으로부터 단일 원소를 제거하고, 상기 제1 및 제2 변수들(A 및 B)의 각각으로부터의 상기 단일 원소를 상기 제1 및 제2 변수들(A 및 B)의 상기 더 작은 버전들에 각각 더하는 단계를 포함하는 것인, 방법. - 제11항에 있어서, 상기 형성하는 단계는,
상기 제1 변수(A)의 상기 더 작은 버전의 각각의 원소에 대해, 상기 제1 변수(A)의 상기 제1 2원소 쌍들에서의 상기 데이터 값들에 대응하는 상기 수열의 상기 각각의 구성원들 중 두 개를 합산함으로써, 상기 제1 변수(A)의 상기 더 작은 버전에 대한 상기 대표 숫자들을 컴퓨팅하는 단계; 및
상기 제2 변수(B)의 상기 더 작은 버전의 각각의 원소에 대해, 상기 제2 변수(B)의 상기 제2 2원소 쌍들에서의 상기 데이터 값들에 대응하는 상기 수열의 상기 각각의 구성원들 중 두 개를 합산함으로써, 상기 제2 변수(B)의 상기 더 작은 버전에 대한 상기 대표 숫자들을 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제11항에 있어서, 상기 제1 및 제2 변수들(A 및 B)의 각각을 정렬하는 단계를 포함하며,
행렬형 데이터 변수의 상기 정렬하는 단계는,
상기 행렬형 데이터 변수로서 동일한 수의 원소들을 갖는 새로운 변수를 인스턴스화하는 단계;
상기 행렬형 데이터 변수를 상기 정렬을 수행하기 위해 사용되는 프로세싱될 스레드들의 수와 동일한 수의 하위 부분들로 나누는 단계;
상기 각각의 프로세싱 스레드들의 각각에 의해, 상기 하위 부분의 각각의 원소의 값을 상기 행렬형 데이터 변수에서의 다른 모든 값들과 비교하고 상기 행렬형 데이터 변수의 얼마나 많은 원소들이, 역 위치 인덱스에 대해, 상기 하위 부분의 비교된 원소보다 작은지, 또는 큰지를 카운트함으로써, 상기 프로세싱 스레드에 의해 처리되는 상기 하위 부분에서의 각각의 원소에 대한 위치 인덱스를 결정하는 단계;
오름 차순 또는 내림 차순 중 어느 하나로, 상기 프로세싱 스레드들에 의해 결정되는 상기 위치 인덱스들에 따라 상기 행렬형 데이터 변수로부터의 값들로 상기 새로운 변수에서의 값들을 대체하는 단계; 및
상기 정렬이 오름 차순인지 또는 내림 차순인지에 의존하여, 상기 새로운 변수에서의 좌측 인접 원소 값 또는 우측 인접 원소 값 중 어느 하나로 상기 새로운 변수에서의 임의의 남아 있는 비변경된 값들을 대체하는 단계를 포함하며,
상기 새로운 변수는 상기 행렬형 데이터 변수의 정렬된 버전으로서 사용되는 것인, 방법. - 제11항에 있어서,
상기 제1 변수(A)의 상기 제1 2원소 쌍들에 대한 제1 위치 변수들을 컴퓨팅하는 단계; 및
상기 제2 변수(B)의 상기 제2 2원소 쌍들에 대한 제2 위치 변수들을 컴퓨팅하는 단계를 포함하며,
원소 쌍에 대한 각각의 위치 변수를 컴퓨팅하는 단계는 부울 조건 Y > X의 결과에 의한 음수 1과 동일한 숫자의 지수화를 포함하며, X는 상기 원소 쌍에서의 제1 원소이고, Y는 상기 원소 쌍에서의 제2 원소이며; 그리고
상기 형성하는 단계는,
상기 제1 변수(A)의 상기 더 작은 버전의 각각의 원소에 대해, 상기 제1 위치 변수들 중 하나에 상기 제1 변수(A)의 상기 제1 2원소 쌍들에서의 상기 데이터 값들에 대응하는 상기 수열의 상기 각각의 구성원들 중 두 개의 합을 곱함으로써, 상기 제1 변수(A)의 상기 더 작은 버전에 대한 상기 대표 숫자들을 컴퓨팅하는 단계, 및
상기 제2 변수(B)의 상기 더 작은 버전의 각각의 원소에 대해, 상기 제2 위치 변수들 중 하나에 상기 제2 변수(B)의 상기 제2 2원소 쌍들에서의 상기 데이터 값들에 대응하는 상기 수열의 상기 각각의 구성원들 중 두 개의 합을 곱함으로써, 상기 제2 변수(B)의 상기 더 작은 버전에 대한 상기 대표 숫자들을 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제3항에 있어서, 상기 기수는 2와 동일하며, 상기 프로세서는 이진법을 사용하고, 상기 지수를 상기 기수로 나눈 상기 나머지는 상기 지수의 마지막 비트를 취함으로써 추출되는 것인, 방법.
- 제3항에 있어서, 상기 프로세서는 이진법을 사용하고, 상기 컴퓨팅된 지수에 의한 상기 기수의 상기 지수화는 1과 동일한 비트를 상기 컴퓨팅된 지수와 동일한 자리수만큼 좌측으로 자리이동함으로써 수행되는 것인, 방법.
- 제1항에 있어서, 상기 부울 조건은 A < B이고,
상기 부울 조건을 상기 부울 조건의 산술 표현식 및 비트 표현식 중 적어도 하나로 변환하는 단계는,
A에서 B를 빼는 단계; 및
A에서 B를 뺀 결과의 빌린 값으로서, 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제1항에 있어서, 상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 제공하는 단계는,
상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 산술 표현식 및 비트 표현식 중 적어도 하나의 다수의 단편들로 단편화하는 단계를 포함하고,
상기 산술 표현식 및 비트 표현식 중 적어도 하나의 단편들은 병렬로 실행되도록 구성되는 것인, 방법. - 제2항에 있어서, 상기 부울 조건은 산술문으로서 공식화되는 결과 태스크를 포함하고,
상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 생성하는 단계는,
상기 결과 태스크와 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 곱하는 단계를 포함하는 것인, 방법. - 제19항에 있어서, 상기 부울 조건은 산술문으로서 공식화되는 대체 태스크를 포함하고,
상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 생성하는 단계는,
상기 대체 태스크와, 1 빼기 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 곱하는 단계를 포함하는 것인, 방법. - 제2항에 있어서, 상기 부울 조건은 비산술문으로서 공식화되는 결과 태스크를 포함하고,
상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 생성하는 단계는,
상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나에, 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나에 연관되는 라벨로의 무조건 점프를 포함시키는 단계를 포함하는 것인, 방법. - 제21항에 있어서, 상기 라벨은 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나의 값이 1과 동일할 때 상기 결과 태스크의 문(statement)의 시작과 동일한 것인, 방법.
- 제22항에 있어서, 상기 부울 조건은 비산술문으로서 공식화되는 대체 태스크를 포함하며,
상기 라벨은 상기 부울 조건의 상기 산술 표현식 및 비트 표현식 중 적어도 하나의 상기 값이 0과 동일할 때 상기 대체 태스크의 문의 시작과 동일한 것인, 방법. - 제1항에 있어서,
상기 산술 연산 유닛 및 비트 연산 유닛 중 적어도 하나에 의해, 상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 실행하는 단계를 더 포함하는, 방법. - 제24항에 있어서, 적어도 상기 변환하는 단계는 제1 컴퓨터에 의해 수행되고, 상기 실행하는 단계는 제2 컴퓨터에 의해 수행되는 것인, 방법.
- 제24항에 있어서, 상기 변환하는 단계과 상기 실행하는 단계는 동일한 컴퓨터에 의해 수행되는 것인, 방법.
- 시스템에 있어서,
적어도 하나의 제어 유닛, 적어도 하나의 산술 또는 비트 연산 유닛, 및 적어도 하나의 레지스터 유닛을 포함하는 하나 이상의 명령 프로세싱 유닛들; 및
상기 하나 이상의 명령 프로세싱 유닛들에 커플링되는 하나 이상의 메모리 유닛들을 포함하며,
상기 시스템은 실질적으로 모든 조건문들을 수행하도록 구성되며, 각각의 조건문은 상기 적어도 하나의 산술 또는 비트 연산 유닛을 사용하여 상기 실질적으로 모든 조건문들의 부울 조건들의 산술 표현식 및 비트 표현식 중 적어도 하나를 실행함으로써 컴퓨터 프로그램에 부울 조건을 포함시키는 것인, 시스템. - 제27항에 있어서, 상기 적어도 하나의 제어 유닛 또는 상기 시스템의 별도의 데이터 프로세싱 장치는 제1항 내지 제26항 중 어느 한 항의 방법 단계들을 수행하도록 구성되고, 상기 하나 이상의 명령 프로세싱 유닛들을 포함하는 상기 프로세서의 상기 적어도 하나의 산술 또는 비트 연산 유닛은 상기 컴퓨터 프로그램의 상기 산술 표현식 및 비트 표현식 중 적어도 하나를 실행하도록 구성되는 것인, 시스템.
- 제27항에 있어서, 상기 적어도 하나의 산술 또는 비트 연산 유닛은, 산술 블록, 비트 시프트 블록, 및 비트 로직 블록 중 하나 이상을 포함하고, 상기 적어도 하나의 산술 또는 비트 연산 유닛은 임의의 디지털 비교기를 포함하지 않는 것인, 시스템.
- 방법에 있어서,
제1 변수(A) 및 제2 변수(B) ― 상기 제1 및 제2 변수들(A 및 B)의 각각은 행렬형 데이터를 포함함 ― 를 비교하는 부울 조건을 포함하는 조건문을 포함하는 컴퓨터 프로그램에 액세스하는 단계;
상기 제1 및 제2 변수들(A 및 B)의 각각을 각각 상기 제1 변수(A)의 제1 2원소 쌍들 및 상기 제2 변수(B)의 제2 2원소 쌍들로 분할하는 단계; 및
수열의 구성원들 사이의 차이가 증가하는 수열로부터의 대표 숫자들을 사용하여, 비교를 위해, 상기 제1 및 제2 변수들(A 및 B)의 각각의 더 작은 버전들 ― 상기 제1 변수(A)의 상기 더 작은 버전에 대한 상기 대표 숫자들의 각각은, 상기 제1 변수(A)의 상기 제1 2원소 쌍들에서의 데이터 값들과 동일한 상기 수열에서의 인덱스들을 갖는 상기 수열의 각각의 구성원들로부터 컴퓨팅되며, 상기 제2 변수(B)의 상기 더 작은 버전에 대한 상기 대표 숫자들의 각각은 상기 제2 변수(B)의 상기 제2 2원소 쌍들에서의 데이터 값들과 동일한 상기 수열에서의 인덱스들을 갖는 상기 수열의 각각의 구성원들로부터 컴퓨팅되고, 상기 제1 및 제2 변수들(A 및 B)의 각각이 홀수의 원소들을 가질 때,
상기 분할하는 단계 전에 상기 제1 및 제2 변수들(A 및 B)의 각각으로부터 단일 원소를 제거하고,
상기 제1 및 제2 변수들(A 및 B)의 각각으로부터의 상기 단일 원소를 상기 제1 및 제2 변수들(A 및 B)의 상기 더 작은 버전들에 각각 더함 ― 을 형성하는 단계; 및
상기 컴퓨터 프로그램을 실행할 때 상기 조건문의 상기 부울 조건을 평가하기 위해 상기 제1 및 제2 변수들(A 및 B)의 상기 더 작은 버전들을 비교하는 단계를 포함하는, 방법. - 제30항에 있어서, 상기 형성하는 단계는,
상기 제1 변수(A)의 상기 더 작은 버전의 각각의 원소에 대해, 상기 제1 변수(A)의 상기 제1 2원소 쌍들에서의 상기 데이터 값들에 대응하는 상기 수열의 상기 각각의 구성원들 중 두 개를 합산함으로써, 상기 제1 변수(A)의 상기 더 작은 버전에 대한 상기 대표 숫자들을 컴퓨팅하는 단계; 및
상기 제2 변수(B)의 상기 더 작은 버전의 각각의 원소에 대해, 상기 제2 변수(B)의 상기 제2 2원소 쌍들에서의 상기 데이터 값들에 대응하는 상기 수열의 상기 각각의 구성원들 중 두 개를 합산함으로써, 상기 제2 변수(B)의 상기 더 작은 버전에 대한 상기 대표 숫자들을 컴퓨팅하는 단계를 포함하는 것인, 방법. - 제30항에 있어서,
상기 제1 변수(A)의 상기 제1 2원소 쌍들에 대한 제1 위치 변수들을 컴퓨팅하는 단계; 및
상기 제2 변수(B)의 상기 제2 2원소 쌍들에 대한 제2 위치 변수들을 컴퓨팅하는 단계를 포함하며,
원소 쌍에 대한 각각의 위치 변수를 컴퓨팅하는 단계는 부울 조건 Y > X의 결과에 의한 음수 1과 동일한 숫자의 지수화를 포함하며, X는 상기 원소 쌍에서의 제1 원소이고, Y는 상기 원소 쌍에서의 제2 원소이며; 그리고
상기 형성하는 단계는,
상기 제1 변수(A)의 상기 더 작은 버전의 각각의 원소에 대해, 상기 제1 위치 변수들 중 하나에 상기 제1 변수(A)의 상기 제1 2원소 쌍들에서의 상기 데이터 값들에 대응하는 상기 수열의 상기 각각의 구성원들 중 두 개의 합을 곱함으로써 상기 제1 변수(A)의 상기 더 작은 버전에 대한 상기 대표 숫자들을 컴퓨팅하는 단계, 및
상기 제2 변수(B)의 상기 더 작은 버전의 각각의 원소에 대해, 상기 제2 위치 변수들 중 하나에 상기 제2 변수(B)의 상기 제2 2원소 쌍들에서의 상기 데이터 값들에 대응하는 상기 수열의 상기 각각의 구성원들 중 두 개의 합을 곱함으로써 상기 제2 변수(B)의 상기 더 작은 버전에 대한 상기 대표 숫자들을 컴퓨팅하는 단계를 포함하는 것인, 방법. - 시스템에 있어서,
적어도 하나의 제어 유닛, 적어도 하나의 산술 또는 비트 연산 유닛, 및 적어도 하나의 레지스터 유닛을 포함하는 하나 이상의 명령 프로세싱 유닛들; 및
상기 하나 이상의 명령 프로세싱 유닛들에 커플링되는 하나 이상의 메모리 유닛들을 포함하며,
상기 하나 이상의 메모리 유닛들은 상기 하나 이상의 명령 프로세싱 유닛들이 제30항 내지 제32항 중 어느 한 항의 방법 단계들을 수행하게 하도록 구성되는 것인, 시스템. - 행렬형 데이터 개체를 정렬하는 방법에 있어서,
상기 행렬형 데이터 개체로서 동일한 수의 원소들을 갖는 새로운 개체를 인스턴스화하는 단계;
상기 행렬형 데이터 개체를 상기 정렬을 수행하기 위해 사용되는 프로세싱될 스레드들의 수와 동일한 수의 하위 부분들로 나누는 단계;
상기 각각의 프로세싱 스레드들 중 각각의 프로세싱 스레드에 의해, 상기 하위 부분의 각각의 원소의 값을 상기 행렬형 데이터 개체에서의 다른 모든 값들과 비교하고 상기 행렬형 데이터 개체의 얼마나 많은 원소들이, 역 위치 인덱스에 대해, 상기 하위 부분의 비교된 원소보다 작은지, 또는 큰지를 카운트함으로써, 상기 프로세싱 스레드에 의해 처리되는 상기 하위 부분에서의 각각의 원소에 대한 위치 인덱스를 결정하는 단계 ― 상기 결정하는 단계는 제1항 내지 제12항 및 제14항 내지 제26항 중 어느 한 항의 방법을 수행하는 단계를 포함함 ―;
오름 차순 또는 내림 차순 중 어느 하나로, 상기 프로세싱 스레드들에 의해 결정되는 상기 위치 인덱스들에 따라 상기 행렬형 데이터 개체로부터의 값들로 상기 새로운 개체에서의 값들을 대체하는 단계; 및
상기 정렬이 오름 차순인지 또는 내림 차순인지에 의존하여, 상기 새로운 개체 ― 상기 새로운 개체는 상기 행렬형 데이터 개체의 정렬된 버전으로서 사용됨 ― 에서의 좌측 인접 원소 값 또는 우측 인접 원소 값 중 어느 하나로 상기 새로운 개체에서의 임의의 남아 있는 비변경된 값들을 대체하는 단계를 포함하는, 행렬형 데이터 개체를 정렬하는 방법. - 시스템에 있어서,
적어도 하나의 제어 유닛, 적어도 하나의 산술 또는 비트 연산 유닛, 및 적어도 하나의 레지스터 유닛을 포함하는 하나 이상의 명령 프로세싱 유닛들; 및
상기 하나 이상의 명령 프로세싱 유닛들에 커플링되는 하나 이상의 메모리 유닛들을 포함하며,
상기 하나 이상의 메모리 유닛들은 상기 하나 이상의 명령 프로세싱 유닛들이 제34항의 방법 단계들을 수행하게 하도록 구성되는 것인, 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/076,726 US11029920B1 (en) | 2020-10-21 | 2020-10-21 | Execution of a conditional statement by an arithmetic and/or bitwise unit |
US17/076,726 | 2020-10-21 | ||
PCT/US2021/031996 WO2022086594A1 (en) | 2020-10-21 | 2021-05-12 | Execution of a conditional statement by an arithmetic and/or bitwise unit |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220054248A true KR20220054248A (ko) | 2022-05-02 |
KR102758260B1 KR102758260B1 (ko) | 2025-01-21 |
Family
ID=
Also Published As
Publication number | Publication date |
---|---|
EP4058885A1 (en) | 2022-09-21 |
EP4058885B1 (en) | 2024-05-01 |
JP2023501763A (ja) | 2023-01-19 |
US11029920B1 (en) | 2021-06-08 |
CN114902176A (zh) | 2022-08-12 |
JP7341258B2 (ja) | 2023-09-08 |
EP4058885C0 (en) | 2024-05-01 |
TW202219739A (zh) | 2022-05-16 |
TWI812524B (zh) | 2023-08-11 |
TW202311935A (zh) | 2023-03-16 |
MX2023002986A (es) | 2023-04-10 |
WO2022086594A1 (en) | 2022-04-28 |
CA3192952A1 (en) | 2022-04-28 |
EP4058885A4 (en) | 2023-01-11 |
IL301192A (en) | 2023-05-01 |
TWI786879B (zh) | 2022-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608715B (zh) | 用于执行人工神经网络正向运算的装置及方法 | |
US8745111B2 (en) | Methods and apparatuses for converting floating point representations | |
KR20200002607A (ko) | 구분적 선형 근사를 이용한 심층 뉴럴 네트워크 아키텍처 | |
JP2021525403A (ja) | 改良された低精度の2進浮動小数点形式設定 | |
Murillo et al. | Energy-efficient MAC units for fused posit arithmetic | |
CN112835551B (zh) | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 | |
Cococcioni et al. | Vectorizing posit operations on RISC-V for faster deep neural networks: experiments and comparison with ARM SVE | |
WO2023124362A1 (zh) | 浮点数处理方法、装置、电子设备及存储介质 | |
US20210334703A1 (en) | Methods and systems configured to specify resources for hyperdimensional computing implemented in programmable devices using a parameterized template for hyperdimensional computing | |
CN114139693A (zh) | 神经网络模型的数据处理方法、介质和电子设备 | |
WO2023124372A1 (zh) | 浮点数处理装置、方法、电子设备、存储介质及芯片 | |
TWI812524B (zh) | 藉由算數及/或逐位元單元執行條件敘述的方法及系統 | |
KR102758260B1 (ko) | 산술 및/또는 비트 유닛에 의한 조건문의 실행 | |
CN116610362B (zh) | 一种处理器指令集译码方法、系统、设备和存储介质 | |
US20220245433A1 (en) | Sparse convolutional neural network | |
Trivedi et al. | Hybrid ADDer: A viable solution for efficient design of MAC in DNNs | |
US20230333849A1 (en) | Execution of a conditional statement by an arithmetic and/or bitwise unit | |
US20230161555A1 (en) | System and method performing floating-point operations | |
Lee et al. | Experiment and enabled flow for GPGPU-sim simulators with fixed-point instructions | |
US20230110383A1 (en) | Floating-point logarithmic number system scaling system for machine learning | |
Sabbagh Molahosseini et al. | Low-precision floating-point formats: From general-purpose to application-specific | |
WO2022174542A1 (zh) | 一种数据处理的方法、装置、处理器和计算设备 | |
Dietz | Wordless Integer and Floating-Point Computing | |
Henderson et al. | Power-Efficient, Accelerated, Exponential-Based Activation Functions | |
Xu et al. | Systems Thinking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0105 | International application |
Patent event date: 20211230 Patent event code: PA01051R01D Comment text: International Patent Application |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20240214 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20241022 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20250117 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20250117 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration |