KR102543951B1 - 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램 - Google Patents

명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR102543951B1
KR102543951B1 KR1020210038060A KR20210038060A KR102543951B1 KR 102543951 B1 KR102543951 B1 KR 102543951B1 KR 1020210038060 A KR1020210038060 A KR 1020210038060A KR 20210038060 A KR20210038060 A KR 20210038060A KR 102543951 B1 KR102543951 B1 KR 102543951B1
Authority
KR
South Korea
Prior art keywords
memory
command
memory command
execution
instructions
Prior art date
Application number
KR1020210038060A
Other languages
English (en)
Other versions
KR20210049725A (ko
Inventor
잉난 쑤
지안 우양
수엘리앙 두
강 안
Original Assignee
베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
쿤룬신 테크놀로지(베이징) 캄파니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디., 쿤룬신 테크놀로지(베이징) 캄파니 리미티드 filed Critical 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Publication of KR20210049725A publication Critical patent/KR20210049725A/ko
Application granted granted Critical
Publication of KR102543951B1 publication Critical patent/KR102543951B1/ko

Links

Images

Classifications

    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)

Abstract

본 발명의 예시적인 실시예에 따르면, 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램를 제공하며, 인공지능 분야에 사용될 수 있다. 명령 실행방법은, 메모리 명령과 비메모리 명령을 포함하는 명령 시퀀스를 실행하는 것, 여기서 상기 명령 시퀀스에서의 명령은 순서에 따라 실행되기 시작하며; 상기 명령 시퀀스에서 상기 제1 메모리 명령 다음의 메모리 명령인 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정하는 것; 및 상기 제1 메모리 명령을 실행하는 주기 기간에, 상기 제1 메모리 명령과 상기 제2 메모리 명령 사이의 비메모리 명령을 수행하고, 상기 제2 메모리 명령을 실행하지 않는 것을 포함한다. 상기 방법을 이용하면, 프로세서의 전반적인 성능을 향상시키는 동시에 프로그래밍의 정확성과 사용성을 담보할 수 있으며, 인공지능 프로세서의 보급에도 유리하다.

Description

명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램{INSTRUCTION EXECUTING METHOD AND APPARATUS, ELECTRONIC DEVICE, AND COMPUTER-READABLE STORAGE MEDIUM}
본 발명은 컴퓨터 기술에 관한 것으로서, 더 구체적으로는 명령 실행방법, 장치, 전자기기 및 컴퓨터 판독 가능 저장매체에 관한 것이며, 인공지능분야에 응용될 수 있다.
메모리 모델은 하드웨어 차원의 메모리 모델과 언어의 메모리 모델로 분류될 수 있는데, 이는 하드웨어 설계 또는 프로그래밍 수요의 규범을 정의하는 것을 통해 메모리 액세스 순서와 프로그램 순서를 담보함으로써, 프로그램을 실행하는 정확성을 담보한다. 전통적인 프로세서 및 C++ 등과 같은 고급 언어는 모두 메모리 모델을 지지한다. 주요한 메모리 모델은 순서 일관성 모델, 전체 저장 정렬 모델 및 루스 메모리 모델 등을 포함하되, 여기서 루스 메모리 모델이 성능에 대해 제일 우호적이다. 신흥 인공지능 프로세서 및 상응한 프로그래밍 언어에 대하여, 마찬가지로 이를 정의하고 지지하는 메모리 모델이 필요하다. 인공지능 프로세서는 하나의 클래스 필드에서의 특정된 프로세서이다. 인공지능분야의 특점에 맞추어 설계한 메모리 구조에 있어서, 제일 큰 변화는 스크래치 패드 메모리를 이용하여 전통적인 프로세서에서의 캐시를 대체함으로써, 프로그래머로 하여금 데이터의 저장을 직접 관리할 수 있도록 한다.
구체적으로 말하면, 인공지능 응용 정경에서, 메모리 액세스는 국부적인 면에서 전통적인 프로세서보다 약하고, 이때 캐시가 가져오는 성능 향상이 뚜렷하지 않으며, 데이터를 즉시 사용하고 즉시 버리는 정경에서 오히려 성능을 저하시키게 된다. 이와 동시에, 캐시의 복잡성 및 리소스 점유율이 매우 높아, 이와 비교하여 캐시를 제거하여 더 많은 하드웨어 리소스 면적을 얻도록 하여 계산능력의 증가에 사용하는 것이 더 합리적이므로, 현재 수많은 인공지능 프로세서는 캐시를 구비하지 않은 스크래치 패드 메모리 구조를 사용한다. 스크래치 패드 메모리를 사용한 후, 메모리는 주요하게 소프트웨어 프로그래머에 의해 관리하게 되는데, 대부분의 인공지능이 구조와 프로그래밍 언어 방면에서 상이하므로, 전통적인 프로세서가 실현하는 저장 모델 시스템과 방법은 완전하게 적용될 수 없다.
본 발명의 실시예에 따르면, 명령 실행방법, 장치, 전자기기 및 컴퓨터 판독 가능 저장매체를 제공한다.
본 발명의 제1 측면에서는 명령 실행방법을 제공하며, 해당 방법은, 메모리 명령과 비메모리 명령을 포함하는 명령 시퀀스를 실행하는 것, 여기서 상기 명령 시퀀스에서의 명령은 순서에 따라 실행되기 시작하며; 상기 명령 시퀀스에서 상기 제1 메모리 명령 다음의 메모리 명령인 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 함을 확정하는 것; 및 상기 제1 메모리 명령을 실행하는 주기 기간에, 상기 제1 메모리 명령과 상기 제2 메모리 명령 사이의 비메모리 명령을 수행하고, 상기 제2 메모리 명령을 실행하지 않는 것; 을 포함한다.
본 발명의 제2 측면에서는 명령 실행장치를 제공하며, 해당 장치는, 메모리 명령과 비메모리 명령을 포함하는 명령 시퀀스를 실행하도록 설정된 명령 시퀀스 실행 모듈, 여기서 상기 명령 시퀀스에서의 명령은 순서에 따라 실행되기 시작하며; 상기 명령 시퀀스에서 상기 제1 메모리 명령 다음의 메모리 명령인 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 함을 확정하도록 설정된 실행 결정 모듈; 및 상기 제1 메모리 명령을 실행하는 주기 기간에 상기 제1 메모리 명령과 상기 제2 메모리 명령 사이의 비메모리 명령을 수행하고 상기 제2 메모리 명령을 실행하지 않도록 설정된 비메모리 명령 실행 모듈을 포함한다.
본 발명의 제3 측면에서는 전자기기를 제공하며, 해당 기기는, 적어도 하나의 프로세서; 및 상기 적어도 하나의 프로세서와 통신 연결하는 메모리를 포함하며, 여기서, 상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되며, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서로 하여금 본 발명의 제1 측면에 따른 방법을 실현하도록 한다.
본 발명의 제4 측면에서는 컴퓨터 명령이 저장된 비일시적 컴퓨터 판독 가능 저장매체를 제공하며, 상기 컴퓨터 명령은 상기 컴퓨터로 하여금 본 발명의 제1 측면에 따른 방법을 실현하도록 한다.
본 출원에 따른 기술을 이용하면, 프로세서의 전반적인 성능을 향상시키는 동시에 프로그래밍의 정확성과 사용성을 담보함으로써, 인공지능 프로세서의 보급에 유리하다.
본 명세서에서 설명한 내용은 본 발명의 실시예의 관건적이거나 중요한 특징을 표기하기 위한 것이 아니고, 본 발명의 범위를 한정하기 위한 것도 아님을 이해해야 한다. 본 발명의 기타 특징은 아래의 명세서를 통해 더 용이하게 이해할 수 있을 것이다.
도면과 결부하여 본 발명의 예시적인 실시예를 더 상세히 설명하되, 본 발명의 상기 및 기타 목적, 특징 및 장점은 더욱 명확해지고, 본 발명의 예시적인 실시예에서, 동일한 참조부호는 일반적으로 동일한 부품을 대표한다. 이해해야 할 것은, 도면은 본 해결수단을 더 잘 이해하기 위한 것으로서, 본원 발명에 대한 한정이 되지 않는다. 여기서,
도 1은 본 발명의 일부 예시적인 실시예에서의 명령 실행방법을 실현할 수 있는 명령 실행 시스템(100)의 모식도를 도시하고;
도 2는 본 발명의 실시예에 따른 명령 실행방법(200)의 흐름도를 도시하며;
도 3은 본 발명의 실시예에 따른 명령 실행장치(300)의 모식적인 블록도를 도시하고; 및
도 4는 본 발명의 실시예에 따른 전자기기(400)의 모식적인 블록도를 도시한다.
각 도면에서, 동일하거나 대응되는 도면부호는 동일하거나 대응되는 부분을 나타낸다.
이하 도면을 참조하여 본 발명에서 개시한 예시적인 실시예를 더욱 상세히 설명하고자 한다. 비록 도면에는 본 발명의 예시적인 실시예를 표시하였으나, 여기서 설명하는 실시예에 한정되지 않고 여러가지 형식으로 본 발명을 실현할 수 있음을 이해해야 한다. 반대로, 이러한 실시예를 제공하는 것은 더욱 확실하고 완전하게 본 발명을 이해하고, 본 발명의 범위를 해당 분야 기술자들에게 완전히 전달하기 위함이다.
본 명세서에서 사용한 용어 "포함" 및 그의 변형은 개방적인 포함, 즉 "포함하나 이에 한정되지 않는다"를 나타낸다. 특별히 설명하지 않는 한, 용어 "또는"은 "및/또는"을 나타낸다. 용어 "기반하여"는 "적어도 일부 기반하여"를 나타낸다. 용어 "하나의 예시적인 실시예"와 "하나의 실시예"는 "적어도 하나의 예시적인 실시예"를 나타낸다. 용어 "다른 실시예"는 "적어도 하나의 다른 실시예"를 나타낸다. 용어 "제1", "제2" 등은 상이하거나 동일한 대상을 가리킬 수 있다. 아래에서는 기타 명확하고 내포하는 정의를 포함할 수 있다.
이상의 배경기술에서 설명한 바와 같이, 캐시는 저장 콘텐츠가 여러 차례 사용되는 상황에 더 적합하지만, 인공지능 응용 정경에서 데이터를 사용하는 횟수가 비교적 적고, 심지어 한번만 사용할 수도 있으므로, 스크래치 패드 메모리를 응용하는 것이 더 적합하며, 이 두가지 메모리의 실현방식은 상이하다. 따라서, 전통적인 프로세서를 사용하여 실현한 저장 모델 시스템과 방법은 인공지능 프로세서 등에서 사용하는 스크래치 패드 메모리에 완전히 적용될 수 없다. 예를 들면, 전통적인 프로세서는 캐시가 존재하므로, 명령과 데이터의 저장이 프로그래머에게 있어서는 보이지 않는다. 그러므로, 루스 메모리 모델을 실현하기 위하여, 관련 프로그램 정확성은 컴파일러에 의해 처리된다.
프로세서가 명령 시퀀스를 실행할 경우, 명령 시퀀스에서의 명령은 순서에 따라 실행되기 시작한다. 그러나 프로세서는 각 명령 실행이 완료된 후에 다시 다음 명령을 수행할 필요가 없이, 예를 들어 하나의 프로세서 주기가 시작될 때 첫번째 명령을 실행하고, 다음 프로세서 주기가 시작될 때 두번째 명령을 실행할 수 있다. 각 명령의 명령주기가 상이할 수 있으며, 예를 들어 첫번째 명령은 10개의 프로세서 주기가 필요하고, 두번째 명령은 1개의 프로세서 주기가 필요할 수 있으므로, 실행을 늦게 시작한 명령은 실행을 일찍 시작한 명령 전에 실행을 완료할 수 있고, 이때 프로세서는 후속의 명령을 계속하여 실행할 수 있다. 따라서, 프로세서는 명령 시퀀스에서의 명령을 비순차적으로 실행할 수 있다.
그러나, 프로세서가 명령을 처리할 경우, 일부 명령은 반드시 엄격한 실행순서를 지켜야 하는 바, 즉 뒤의 명령은 반드시 앞의 명령이 실행 완료된 후에만 실행을 시작할 수 있으며, 그렇지 않을 경우 오류가 발생하게 된다. 예를 들면, 첫번째 명령은 변수A에 대해 대입을 진행한 것이고, 두번째 명령은 대입된 후의 변수A를 사용한 것이다. 변수A에 대한 대입을 완성해야만 대입된 후의 변수A를 사용할 수 있으므로, 이 두개의 명령을 실행함에 있어서 반드시 엄격한 실행순서, 즉 반드시 첫번째 명령을 실행 완료 후에 다시 두번째 명령을 실행하기 시작해야 한다. 프로세서 분야에서, 명령의 실행 순서를 담보해야 하는 명령은 예를 들어 스칼라 로드(scalar load) 명령, 스칼라 스토어(scalar store) 명령, 벡터 로드(vector load) 명령, 벡터 스토어(vector store) 명령, 글로벌 메모리가 로컬 메모리에 운반(gm2lm)하는 명령 및 로컬 메모리가 글로벌 메모리에 운반(lm2gm)하는 명령을 포함한다. 본 발명에서, 이러한 명령은 메모리 명령이라고 하고, 이러한 명령을 제외한 엄격한 실행순서가 필요 없는 명령은 비메모리 명령이라고 한다.
이 외에, 여전히 상기 대입명령을 예로 하면, 프로그래머가 고급 언어를 사용하여 상기 두 개의 명령을 컴파일링 한 다음, 이 두 개의 명령은 어셈블리 언어로 변환되고, 그 다음 이들 사이에는 복수의 기타 명령이 생성하게 되는데, 이러한 명령은 통상적으로 비메모리 명령이다. 따라서, 어셈블리 언어로 변환된 다음의 명령 시퀀스에는 메모리 명령 사이에 대량의 비메모리 명령이 존재하게 된다.
두 개의 메모리 명령이 명령의 의미로 인하여 엄격한 실행순서를 가져야 할 경우, 모험 충돌이 존재한다고 할 수 있다. 모험 충돌 문제를 해결하기 위하여, 전통적인 프로세서에서 사용되는 방법은 컴파일 과정에서 내포된 적합한 중지 명령, 예를 들어 fence 명령을 추가하는 것을 포함한다. 중지 명령의 용도는 저지 부호와 유사한 바, 중지 명령을 실행할 경우, 후속의 모든 명령의 실행을 저지할 뿐만 아니라, 특정된 조건을 만족시킬 때 후속의 명령을 실행하기 시작하도록 해야 하며, 이러한 조건은 예를 들어 중지 명령 이전의 특정된 명령 또는 모든 명령의 실행 완료를 포함한다.
그러나 전통적인 프로세서에서, 캐시에 저장된 명령은 소프트웨어 차원에서 볼 수 없으므로, 하드웨어에 의해 모험 충돌 문제를 해결해야만 한다. 이 외에, 전통적인 프로세서가 중지 명령을 실행하기 시작할 때 후속의 모든 명령의 실행을 저지하므로, 모험 충돌 문제를 초래하지 않는 원래 실행 가능한 비메모리 명령도 저지하게 되는 바, 예를 들어, 모험 충돌이 존재하는 두 개의 메모리 명령 사이에 몇개, 몇십개, 몇백개 심지어 더 많은 비메모리 명령이 존재할 수 있다. 이상에서 언급한 상황이 존재하므로, 전통적인 프로세서에서, 모험 충돌 문제를 해결하는 효율이 비교적 낮고, 모험 충돌 문제를 해결할 때 비메모리 명령의 실행효율에 큰 영향을 미치게 된다.
상기 문제 또는 기타 잠재적인 문제에서의 적어도 하나 또는 복수의 문제를 적어도 일부 해결하기 위하여, 본 발명의 실시예는 명령 실행방법을 제안하며, 이러한 방법을 사용하면, 메모리 명령과 비메모리 명령을 포함하는 명령 시퀀스를 순차적으로 실행할 경우, 이웃하는 메모리 명령 사이에 모험 충돌 문제가 존재하는 상황에서는, 하드웨어와 소프트웨어의 협동작업을 통해, 모험 충돌을 발생하는 두 개의 메모리 명령 사이의 대량의 비메모리 명령을 계속 실행할 수 있다. 이로써, 프로세서의 전반적인 성능을 향상시키는 동시에 프로그래밍 정확성과 사용성도 여전히 담보할 수 있으며, 나아가 사용자가 프로세서를 사용하여 명령을 실행하는 효율 및 사용자 체험을 향상시키는데 유리하고, 인공지능 프로세서의 보급에도 유리할 수 있다.
도 1은 본 발명의 일부 예시적인 실시예에서의 명령 실행방법을 실현할 수 있는 명령 실행 시스템(100)의 모식도를 도시한다. 도 1에 도시된 바와 같이, 명령 실행 시스템(100)은 글로벌 메모리(110), DMA(직접 메모리 액세스 부품)(120) 및 프로세서 코어(130)를 포함한다. 지적해야 할 것은, 명령 실행 시스템(100)은 확장 가능한 것으로서, 그중에는 더 많은 프로세서 코어(130), 심지어 더 많은 글로벌 메모리(110)와 DMA(120)가 포함될 수 있다. 도면을 간략하게 도시하는 원인으로 인하여, 도 1에서는 단지 하나의 글로벌 메모리(110), 하나의 DMA(120) 및 하나의 프로세서 코어(130)만 도시한다. 지적해야 할 것은, 명령 실행 시스템(100)은 메모리에서의 저장 콘텐츠를 이용하여 소프트웨어 차원에서 볼 수 있고 관리할 수 있는 임의의 명령 실행 시스템, 예를 들면 스크래치 패드 메모리를 사용하는 인공지능 메모리 시스템 일 수 있다.
도 1에 도시된 프로세서 코어(130)는 스칼라 모듈(131), 벡터 모듈(132), 글로벌 메모리 모듈(133), 크로스바 스위치(134) 및 로컬 메모리(135)를 포함한다. 크로스바 스위치(134)는 로컬 메모리(135), 스칼라 모듈(131), 벡터 모듈(132) 및 글로벌 메모리 모듈(133)과 진행하는 데이터 상호작용을 제어한다. 글로벌 메모리 모듈(133)은 DMA(120)를 통해 글로벌 메모리(110)와 데이터 상호작용을 진행한다.
스칼라 모듈(131)은 모험 프로세스 부품(131-1), 스칼라 로드 부품(131-2) 및 스칼라 스토어 부품(131-3)을 포함한다. 스칼라 로드 부품(131-2)은 스칼라 명령의 로드를 처리하기 위한 것이고, 스칼라 스토어 부품(131-3)은 스칼라 명령의 저장을 처리하기 위한 것이며, 모험 프로세스 부품(131-1)은 스칼라 명령의 모험 충돌을 처리하기 위한 것이다. 스칼라 명령은 예를 들어 스칼라 로드 명령과 스칼라 스토어 명령을 포함할 수 있다.
벡터 모듈(132)은 모험 프로세스 부품(132-1), 벡터 로드 부품(132-2) 및 벡터 스토어 부품(132-3)을 포함한다. 벡터 로드 부품(132-2)은 벡터 명령의 로드를 처리하기 위한 것이고, 벡터 스토어 부품(132-3)은 벡터 명령의 저장을 처리하기 위한 것이며, 모험 프로세스 부품(132-1)은 벡터 명령의 모험 충돌을 처리하기 위한 것이다. 벡터 명령은 예를 들어 벡터 로드 명령과 벡터 스토어 명령을 포함할 수 있다.
글로벌 메모리 모듈(133)은 글로벌 메모리 로드 부품(133-1)과 글로벌 메모리 부품 저장 부품(133-2)을 포함한다. 글로벌 메모리 로드 부품(133-1)은 글로벌 메모리 명령의 로드를 처리하기 위한 것이고, 글로벌 메모리 부품 저장부품(133-2)은 글로벌 메모리 명령의 저장을 처리하기 위한 것이다. 글로벌 메모리 명령은 예를 들어 글로벌 메모리가 로컬 메모리에 운반하는 명령 및 로컬 메모리가 글로벌 메모리에 운반하는 명령을 포함할 수 있다.
본 발명의 실시예에 따르면, 명령 실행 시스템(100)은, 명령 실행 시스템(100)으로 하여금 여러 가지 동작을 진행하도록 제어하기 위한 컨트롤러를 더 포함할 수 있다.
본 발명의 실시예에 따르면, 명령 실행 시스템(100)에서, 예를 들어 스칼라 로드 명령, 스칼라 스토어 명령, 벡터 로드 명령, 벡터 스토어 명령, 글로벌 메모리가 로컬 메모리에 운반하는 명령 및 로컬 메모리가 글로벌 메모리에 운반하는 명령과 같은 메모리 명령은 상이한 하드웨어 대기열을 사용하여 실행될 수 있고, 각 하드웨어 대기열 사이에는 메모리 순서의 일관성과 프로그램 순서의 일관성을 유지한다.
도 2는 본 발명의 실시예에 따른 명령 실행방법(200)의 흐름도를 도시한다. 구체적으로 말하면, 방법(200)은 명령 실행 시스템(100)에 의해 실행될 수 있다. 응당 이해해야 할 것은, 방법(200)은 도시되지 않은 부가적인 동작을 더 포함하고 및/또는 도시된 동작을 생략할 수 있으며, 본 발명의 범위는 이에 의해 한정되지 않는다.
창(202)에서, 명령 실행 시스템(100)은 명령 시퀀스를 실행한다. 본 발명의 실시예에 따르면, 명령 시퀀스는 상술한 바와 같은 메모리 명령과 비메모리 명령을 포함하고, 명령 실행 시스템(100)은 명령 시퀀스에서의 명령의 순서에 따라 각 명령을 실행하기 시작한다.
창(204)에서, 명령 실행 시스템(100)은 제2 메모리 명령을 실행하기 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정한다. 본 발명의 실시예에 따르면, 제2 메모리 명령은 명령 시퀀스에서 제1 메모리 명령 다음의 메모리 명령이다.
본 발명의 일부 실시예에 따르면, 명령의 실행에는 선후순서가 존재하므로, 명령 실행 시스템(100)은 제1 메모리 명령을 실행할 때, 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정할 수 있다. 본 발명의 다른 일부 실시예에 따르면, 명령 실행 시스템(100)은 제1 메모리 명령을 실행하기 시작 전에, 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정할 수도 있다.
인공지능 프로세서 분야에서, 모든 모험 충돌이 모두 소프트웨어에 의해 발견되는 것이 아니다. 예를 들면, 메모리 명령에 대한 메모리 작업 세분성이 하나의 메모리의 행 크기의 특정 동작인 바, 동일한 서브 시스템(예를 들면, 스칼라 모듈(131)과 벡터 모듈(132)) 내부의 로드와 저장 사이의 모험 충돌은 하드웨어에 의해 처리되고, 이러한 메모리 명령은 스칼라 로드 명령 사이, 스칼라 스토어 명령 사이, 벡터 로드 명령 사이 및 벡터 스토어 명령 사이를 포함한다. 이러한 모험 충돌이 소프트웨어에 있어서는 볼 수 없는 것이므로, 소프트웨어에 의해 처리될 수 없다.
그러나, 소프트웨어에 의해 처리되면 더 고효율적이고 편리하므로, 본 발명의 실시예에 따르면, 우선 소프트웨어에 의해 모험 충돌 문제를 처리하는데, 만약 모험 충돌이 소프트웨어에 의해 볼 수 없어 소프트웨어가 발견하고 처리하지 못하면, 하드웨어에 의해 모험 충돌을 처리한다.
따라서, 본 발명의 일부 실시예에 따르면, 명령 실행 시스템(100)은 제1 메모리 명령과 제2 메모리 명령의 유형에 기반하여, 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정할 수 있다. 이러한 상황은 예를 들면 메모리 작업 세분성이 하나의 메모리의 행 크기인 특정된 동작을 포함하며, 예를 들면 스칼라 로드 명령 사이, 스칼라 스토어 명령 사이, 벡터 로드 명령 사이 및 벡터 스토어 명령 사이의 모험 충돌을 포함한다. 이때, 명령 시퀀스를 실행하기 위한 하드웨어에 의해 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정한다.
소프트웨어에 의해 처리될 수 있는 명령 충돌에 대하여, 프로그래머가 명령 시퀀스를 컴파일 할 때 나타날 가능성 있는 모험 충돌을 이미 알고 있으므로, 프로그래머는 명령 시퀀스에 특별히정의된 중지 명령을 추가하여 소프트웨어로 하여금 모험 충돌이 곧 발생할 것이라는 것을 알 수 있도록 할 수 있다.
본 발명의 실시예에 따르면, 명령 시퀀스에 중지 명령이 포함되므로, 명령 실행 시스템(100)은 중지 명령을 실행할 때, 중지 명령이 상대하는 메모리 명령을 제1 메모리 명령으로 확정하고, 더 나아가 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정할 수 있다. 본 발명의 일부 실시예에 따르면, 중지 명령은 어느 한 메모리 명령 뒤의 제일 근접한 명령일 수 있으며, 따라서 중지 명령 앞의 제일 근접한 이 메모리 명령을 제1 메모리 명령으로 지시할 수 있다. 본 발명의 다른 일부 실시예에 따르면, 중지 명령은 어느 한 메모리 명령 앞의 제일 근접한 명령일수 있으며, 따라서 중지 명령 뒤의 제일 근접한 이 메모리 명령을 제1 메모리 명령으로 지시할 수 있다. 이때, 소프트웨어에 의해 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정한다. 본 발명의 실시예에 따르면, 소프트웨어에 의해 처리하는 모험 충돌은 예를 들어 상이한 서브 시스템 사이의 모험 충돌, 예를 들면, 스칼라 모듈(131), 벡터 모듈(132) 및 글로벌 메모리 모듈(133) 사이의 모험 충돌을 포함할 수 있다. 소프트웨어에 의해 처리하는 모험 충돌은 또한 메모리 명령에 대한 메모리 작업 세분성이 복수의 메모리의 행 크기인 작업을 포함할 수 있으며, 예를 들면 글로벌 메모리 모듈(133) 내부의 글로벌 메모리 로드와 글로벌 메모리 저장 사이의 모험 충돌일 수도 있다.
창(206)에서, 명령 실행 시스템(100)은 제1 메모리 명령을 실행하는 주기 기간에, 제1 메모리 명령과 제2 메모리 명령 사이의 비메모리 명령을 수행하고, 제2 메모리 명령을 실행하지 않는다.
창(202), 창(204) 및 창(206)에서의 동작을 통해, 모험 충돌을 고효율적으로 발견할 수 있고, 또 모험 충돌이 존재할 경우, 모험 충돌을 초래하는 메모리 명령을 실행하지 않고 대량의 비메모리 명령을 실행함으로써, 모험 충돌의 처리효율을 향상시키고 명령 시퀀스의 처리 효율을 향상시킬 수 있다.
방법(200)은 도 2에서 점선 창의 형식으로 도시한 옵셔널 창(208)을 더 포함할 수 있다. 옵셔널 (창)208에서, 명령 실행 시스템(100)은 제1 메모리 명령에 대한 실행이 완성된 것에 응답하여, 제2 메모리 명령을 실행하기 시작한다.
아래 특별히 정의된 fence 명령을 본 발명의 실시예에 따른 중지 명령의 예시로 하여, 본 발명의 실시예에 따른 중지명령의 작업과정을 설명한다.
예를 들면, 명령 시퀀스는 gm2lm → fence → add, r0, r1, r2 → load r3, lm → add, r0, r1, r2 → .... 이다. 이 명령 시퀀스에서, gm2lm은 제1 메모리 명령이며, load는 제2 메모리 명령이고, fence는 중지 명령이다. fence명령까지 실행하였을 경우, 소프트웨어는 gm2lm이 제1 메모리 명령인 것을 이미 알고 있고, load를 실행하기 시작 전에 gm2lm에 대한 실행을 완성해야 한다는 것을 알고 있다. 전통적인 프로세서 처리에 따르면, 이때 fence 다음의 모든 명령의 실행을 정지한다. 그러나, 본 발명의 실시예의 본 예시에 따르면, fence 명령과 load 명령 사이의 add, r0, r1, r2명령은 여전히 정상적으로 실행된다. gm2lm명령이 실행 완료된 후, 소프트웨어는 하드웨어에 통지하여 계속하여 load 명령을 실행하도록 한다.
이상에서는 도 1 내지 도 2를 참고하여 본 발명의 일부 예시적인 실시예의 명령 실행방법을 실현할 수 있는 명령 실행 시스템(100) 및 본 발명의 실시예에 따른 명령 실행방법(200)에 사용되는 관련 내용을 설명하였다. 상기 설명은 본 발명에 기재된 내용을 더 잘 나타내기 위한 것일 뿐이며, 어떤 방식으로 한정하기 위한 것이 아님을 이해해야 한다.
본 발명의 상기 각 도면에서 사용한 여러 가지 구성 요소의 수량과 물리량의 크기는 단지 예를 들어 설명한 것일 뿐이며, 본 발명의 보호범위를 한정하기 위한 것이 아니라는 것을 이해해야 한다. 상기 수량과 크기는 수요에 따라 임의로 설치할 수 있고, 본 발명의 실시형태의 정상적인 실시에 영향을 미치지 않는다.
이상에서 이미 도 1 내지 도2를 참조하여 본 발명의 실시형태에 따른 명령 실행방법의 세부절차를 설명하였다. 이하, 도 3을 참조하여 명령 실행장치에서의 각 모듈을 설명한다.
도 3은 본 발명의 실시예에 따른 명령 실행장치(300)의 예시적인 블록도이다. 도 3에 도시된 바와 같이, 명령 실행장치(300)는, 메모리 명령과 비메모리 명령을 포함하는 명령 시퀀스를 실행하도록 설정된 명령 시퀀스 실행 모듈(310), 여기서 상기 명령 시퀀스에서의 명령은 순서에 따라 실행되기 시작하며; 상기 명령 시퀀스에서 상기 제1 메모리 명령 다음의 메모리 명령인 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정하도록 설정된 실행 확정 모듈(320); 및 상기 제1 메모리 명령을 실행하는 주기 기간에, 상기 제1 메모리 명령과 상기 제2 메모리 명령 사이의 비메모리 명령을 수행하고, 상기 제2 메모리 명령을 실행하지 않도록 설정된 비메모리 명령 실행 모듈(330)을 포함할 수 있다.
일부 실시예에서, 상기 실행 확정 모듈(320)은, 제1 메모리 명령을 실행할 경우, 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된 제1 실행 확정 모듈(미도시)을 포함한다.
일부 실시예에서, 상기 실행 확정 모듈(320)은, 상기 제1 메모리 명령과 상기 제2 메모리 명령의 유형에 기반하여, 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된 제2 실행 확정 모듈(미도시)을 포함한다.
일부 실시예에서, 상기 제2 실행 확정 모듈은, 상기 명령 시퀀스를 실행하기 위한 하드웨어에 의해 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된다.
일부 실시예에서, 상기 명령 시퀀스에는 중지 명령을 더 포함하고, 또한 상기 실행 확정 모듈(320)은, 상기 중지 명령을 실행할 경우, 상기 중지 명령이 상대하는 메모리 명령을 상기 제1 메모리 명령으로 확정하도록 설정된 제1 메모리 명령 결정 모듈(미도시); 및 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된 제3 실행 확정 모듈(미도시)을 포함한다.
일부 실시예에서, 상기 제3 실행 확정 모듈은, 소프트웨어에 의해 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된다.
일부 실시예에서, 명령 실행장치(300)는, 상기 제1 메모리 명령에 대한 상기 실행이 완성된 것에 응답하여, 상기 제2 메모리 명령을 실행하기 시작하는 선택가능한 제2 메모리 명령 실행 모듈(340)(도 3에서 점선 창으로 도시)을 더 포함한다.
본 발명의 실시예에 따르면, 본 발명은 전자기기와 컴퓨터 판독 가능 저장매체를 더 제공한다.
이상에서 도 1 내지 도 3을 참조한 설명을 통해, 본 발명의 실시형태에 따른 기술적 해결수단은 전통적인 방안에 대하여 여러 가지 장점을 구비한다. 예를 들면, 상기 기술적 해결수단을 이용하여, 메모리 명령의 모험 충돌을 처리할 때 여전히 모험 충돌을 발생하는 두 개의 메모리 명령 사이의 대량의 비메모리 명령을 실행할 수 있으며, 따라서 프로세서의 전반적인 성능을 향상시키는 동시에 프로그래밍 정확성과 사용성도 여전히 담보할수 있으며, 나아가 사용자가 프로세서를 사용하여 명령을 실행하는 효율 및 사용자 체험을 향상시키는데 유리하고, 또한 인공지능 프로세서의 보급에도 유리할 수 있다. 이 외에, 상기 기술적 해결수단을 이용하면, 단지 하드웨어에 의해 메모리 명령의 모험 충돌을 처리하는 것이 아니라, 하드웨어와 소프트웨어가 공동으로 메모리 명령의 모험 충돌을 처리할수 있으므로, 메모리 명령의 모험 충돌을 처리하는 효율을 더 한층 향상시킬 수 있다.
도 4는 본 발명의 실시예에 따른 전자기기(400)의 예시적인 블록도를 도시한다. 예를 들면, 도 1에 도시된 바와 같은 명령 실행 시스템(100)과 도 3에 도시된 바와 같은 명령 실행장치(300)는 전자기기(400)에 의해 실시될 수 있다. 전자기기(400)는 랩톱 컴퓨터, 데스크톱 컴퓨터, 워크스테이션, 개인 휴대 정보 단말기, 서버, 블레이드 서버, 메인프레임 컴퓨터 및 기타 적합한 컴퓨터와 같은 여러 가지 형식의 디지털 컴퓨터를 가리킨다. 전자기기(400)는 개인 디지털 프로세싱, 셀룰러 폰, 스마트 폰, 웨어러블 기기 및 기타 유사한 컴퓨팅 장치와 같은 여러 가지 형식의 이동장치를 더 나타낼 수 있다. 본 명세서에 도시된 부품, 이들의 연결과 관계 및 이들의 기능은 단지 예시적인 것일 뿐이며, 본 명세서에서 설명 및/또는 요구한 본 발명의 실현을 한정하기 위한 것이 아니다
도 4에 도시된 바와 같이, 해당 전자기기(400)는 하나 또는 복수의 프로세서(401), 메모리(402) 및 각 부품을 연결하기 위한, 고속 인테페이스와 저속 인터페이스를 포함하는 인터페이스를 포함한다. 각 부품은 상이한 버스를 이용하여 서로 연결되고, 공용 메인보드에 장착되거나 또는 수요에 따라 기타 방식으로 장착될 수 있다. 프로세서는 전자기기(400) 내에서 수행되는 명령을 처리할 수 있는데, 이는 메모리에 저장되거나 또는 메모리에 저장되어 외부 입력/출력장치(예를 들어 인터페이스에 커플링 된 디스플레이 기기)에 GUI를 표시하는 그래프 정보의 명령을 포함한다. 기타 실시형태에서, 만약 필요하면, 복수의 프로세서 및/또는 복수의 버스를 복수의 메모리와 함께 사용할 수 있다. 마찬가지로 복수의 전자기기(400)를 연결할 수 있고, 각 기기는 일부 필요한 조작(예를 들면 서버 어레이, 블레이드 서버 세트 또는 멀티 프로세서 시스템으로 함)을 제공할 수 있다. 도 4에서는 하나의 프로세서(401)를 예로 한다.
메모리(402)는 본 발명에서 제공하는 비일시적 컴퓨터 판독 가능 저장매체이다. 여기서, 상기 메모리에는 적어도 하나의 프로세서에 의해 수행될 수 있는 명령이 저장되어, 상기 적어도 하나의 프로세서로 하여금 본 발명에서 제공하는 명령 실행방법을 수행하도록 할 수 있다. 본 발명의 비일시적 컴퓨터 판독 가능 저장매체는 컴퓨터 명령을 저장하고, 해당 컴퓨터 명령은 컴퓨터로 하여금 본 발명에서 제공하는 명령 실행방법을 수행하도록 한다.
메모리(402)는 비일시적 컴퓨터 판독 가능 저장매체로서, 비일시적 소프트웨어 프로그램, 비일시적 컴퓨터 실행 가능 프로그램 및 모듈, 예를 들어 본 발명의 실시예에서의 명령 실행방법에 대응되는 프로그램 명령/모듈(예를 들면, 도 3에 도시된 명령 시퀀스 실행 모듈(310), 실행 확정 모듈(320) 및 비메모리 명령 실행 모듈(330))을 저장하는데 사용될 수 있다. 프로세서(401)는 메모리(402)에 저장된 비일시적 소프트웨어 프로그램, 명령 및 모듈을 운행시킴으로써, 서버의 여러 가지 기능 응용 및 데이터 처리를 수행하며, 즉 상기 방법 실시예에서의 명령 실행방법을 실현한다.
메모리(402)는 프로그램 저장구역과 데이터 저장구역을 포함할 수 있는데, 여기서 프로그램 저장구역은 운영체제, 적어도 하나의 기능에 필요한 응용 프로그램을 저장할 수 있고, 데이터 저장구역은 전자기기(400)의 사용에 의해 생성된 데이터 등을 저장할 수 있다. 이 외에, 메모리(402)는 고속 랜덤 액세스 메모리를 포함할 수 있고, 비일시적 메모리, 예를 들면 적어도 하나의 디스크 메모리, 플래시 메모리 또는 기타 비일시적 솔리드 스테이트 메모리를 더 포함할 수 있다. 일부 실시예에서, 메모리(402)는 선택적으로 프로세서(401)에 대해 원격으로 설치되는 메모리를 포함하고, 이러한 원격 메모리는 네트워크를 통해 전자기기(400)에 연결될 수 있다. 상기 네트워크의 구현예는 인터넷, 인트라넷, 근거리 통신망, 이동 통신망 및 이들의 조합을 포함하나 이에 한정되지 않는다.
전자기기(400)는 입력장치(403)와 출력장치(404)를 더 포함할 수 있다. 프로세서(401), 메모리(402), 입력장치(403)와 출력장치(404)는 버스 또는 기타 방식을 통해 연결될 수 있고, 도 4에서는 버스를 통해 연결되는 것을 예로 한다.
입력장치(403)는 입력된 숫자 또는 문자 부호정보를 수신할 수 있고, 또한 전자기기(400)의 사용자 설정 및 기능 제어와 관련되는 키 신호 입력을 발생할 수 있으며, 예를 들면 터치 스크린, 키보드, 마우스, 트랙패드, 터치패드, 지시 바, 하나 또는 복수의 마우스버튼, 트랙 볼, 조이스틱 등 입력장치일 수 있다. 출력장치(404)는 디스플레이 기기, 보조 조명장치(예를 들면, LED)와 촉각 피드백 장치(예를 들면, 진동모터) 등을 포함할 수 있다. 해당 디스플레이 기기는 액정 모니터(LCD), 발광 다이오드(LED) 디스플레이와 플라즈마 디스플레이를 포함할 수 있으나 이에 한정되지 않는다. 일부 실시예에서, 디스플레이 기기는 터치 스크린일 수 있다.
여기서 설명하는 시스템과 기술의 여러 가지 실시형태는 디지털 전자회로 시스템, 집적회로 시스템, 전용 ASIC(전용 집적회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합에서 실현할 수 있다. 이러한 여러 가지 실시형태는 하나 또는 복수의 컴퓨터 프로그램에서 실시되는 것을 포함할 수 있고, 해당 하나 또는 복수의 컴퓨터 프로그램은 적어도 하나의 프로그래머블 프로세서를 포함하는 프로그래머블 시스템에서 실행 및/또는 해석될 수 있으며, 해당 프로그래머블 프로세서는 전용 또는 범용 프로그래머블 프로세서로서, 저장 시스템, 적어도 하나의 입력장치 및 적어도 하나의 출력장치에서 데이터와 명령을 수신할 수 있고, 데이터와 명령을 해당 저장 시스템, 해당 적어도 하나의 입력장치 및 해당 적어도 하나의 출력장치에 전송할 수 있다.
이러한 컴퓨팅 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드라고도 한다)은 프로그래머블 프로세서의 기계 명령을 포함하고, 고급 프로세스 및/또는 객체 지향 프로그래밍 언어 및/또는 어셈블리/기계 언어를 이용하여 이러한 컴퓨터 프로그램을 실시할 수 있다. 본 명세서에서 사용한 바와 같이, 용어 "기계 판독 가능 매체"와 "컴퓨터 판독 가능 매체"는 기계 명령 및/또는 데이터를 프로그래머블 프로세서에 제공하는 임의의 컴퓨터 프로그램 제품, 기기 및/또는 장치(예를 들면 자기 디스크, 시디 롬, 메모리 프로그래머블 로직 장치(PLD))를 가리키고, 기계 판독 가능 신호로서의 기계 명령을 수신하는 기계 판독 가능 매체를 포함한다. 용어 "기계 판독 가능 신호”는 기계 명령 및/또는 데이터를 프로그래머블 프로세서에 제공하는 임의의 신호를 가리킨다.
사용자와의 상호작용을 제공하기 위하여, 여기서 설명하는 시스템과 기술을 컴퓨터에서 실시할 수 있으며, 해당 컴퓨터는, 사용자에게 정보를 디스플레이 하는 디스플레이 장치(예를 들면 CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터); 및 키보드와 포인팅 장치(예를 들면, 마우스 또는 트랙볼)를 구비하고, 사용자는 해당 키보드와 해당 포인팅 장치를 통해 컴퓨터에 입력을 제공할 수 있다. 기타 유형의 장치도 사용자와의 상호작용을 제공하는데 사용될 수 있는 바, 예를 들면 사용자에게 제공된 피드백은 모든 형식의 감각 피드백(예를 들면 시각 피드백, 청각 피드백 또는 촉각 피드백) 일 수 있고, 모든 형식(소리 입력, 음성 입력 또는 촉각 입력을 포함)에 의해 사용자로부터의 입력을 수신할 수 있다.
여기서 설명한 시스템과 기술을 백그라운드 부품을 포함하는 컴퓨팅 시스템(예를 들면 데이터 서버), 또는 미들웨어 부품을 포함하는 컴퓨팅 시스템(예를 들면 애플리케이션 서버), 또는 프런트엔드 부품을 포함하는 컴퓨팅 시스템(예를 들면 그래픽 사용자 인터페이스 또는 네트워크 브라우저를 구비한 사용자 컴퓨터, 사용자는 해당 그래픽 사용자 인터페이스 또는 해당 네트워크 브라우저를 통해 여기서 설명한 시스템과 기술의 실시형태와 상호작용할 수 있다), 또는 이러한 백그라운드 부품, 미들웨어 부품 또는 프런트엔드 부품을 포함하는 임의의 조합의 컴퓨팅 시스템에서 실시될 수 있다. 임의의 형태 또는 매체의 디지털 데이터 통신(예를 들면 통신 네트워크)을 통해 시스템의 부품을 서로 연결할 수 있다. 통신 네트워크의 예시는 근거리 통신망 (LAN), 광역 통신망 (WAN) 및 인터넷을 포함한다.
컴퓨터 시스템은 클라이언트과 서버를 포함할 수 있다. 클라이언트과 서버는 일반적으로 서로 원격으로 설치되는 동시에 통신 네트워크를 통해 서로 상호작용을 진행한다. 상응하는 컴퓨터에서 운행되고 또한 서로 클라이언트-서버 관계를 가지는 컴퓨터 프로그램을 통하여 클라이언트과 서버의 관계를 발생한다.
본 발명의 실시예의 기술적 해결수단에 따르면, 메모리 명령과 비메모리 명령을 포함하는 명령 시퀀스를 순차적으로 실행할 경우, 이웃하는 메모리 명령 사이에 모험 충돌 문제가 존재하는 상황에 봉착하였을 때, 하드웨어와 소프트웨어의 협동작업을 통해, 모험 충돌을 발생하는 두 개의 메모리 명령 사이의 대량의 비메모리 명령을 계속 실행할 수 있으며, 따라서 프로세서의 전반적인 성능을 향상시키는 동시에 프로그래밍 정확성과 사용성도 여전히 담보할 수 있으며, 나아가 사용자가 프로세서를 사용하여 명령을 실행하는 효율 및 사용자 체험을 향상시키는데 유리하고, 또한 인공지능 프로세서의 보급에도 유리할 수 있다.
이해해야 할 것은, 이상에서 설명한 여러 가지 형태의 과정을 이용하여, 단계를 다시 정렬시키고 증가 또는 삭제할 수 있다. 예를 들면 본 발명에서 기재한 각 단계는 동시에 수행할 수도 있고 순차적으로 수행할 수도 있으며 상이한 순서로 수행할 수도 있는 바, 본 발명에서 개시한 기술적 해결수단에서 기대하는 결과를 실현할 수만 있다면, 본 문은 이에 대해 한정하지 않는다.
상기 구체적인 실시형태는 본 발명의 보호범위에 대한 한정이 아니다. 해당 분야 기술자들은 설계 요구와 기타 요소에 근거하여 여러 가지 수정, 조합, 하위 조합과 대체를 진행할 수 있다는 것을 명백하여야 한다. 본 발명의 정신과 원칙 내에서 진행한 그 어떤 수정, 균등한 대체와 개량은 모두 본 발명의 보호범위 내에 포함된다.

Claims (17)

  1. 명령 실행 방법에 있어서,
    메모리 명령과 비메모리 명령을 포함하는 명령 시퀀스를 실행하는 것 ― 여기서 상기 명령 시퀀스에서의 명령은 순서에 따라 실행되기 시작함 ―;
    상기 명령 시퀀스에서 제1 메모리 명령 다음의 메모리 명령인 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정하는 것 ― 여기서, 상기 명령 시퀀스는 중지 명령을 더 포함하고, 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하는 것은, 상기 중지 명령을 실행할 때, 상기 중지 명령이 상대하는 메모리 명령을 상기 제1 메모리 명령으로 확정하는 것; 및 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하는 것을 포함함 ―; 및
    하드웨어와 소프트웨어의 협동작업을 통해, 상기 제1 메모리 명령을 실행하는 주기 기간에, 상기 중지 명령이 상대하는 상기 제1 메모리 명령과 상기 제2 메모리 명령 사이의 비메모리 명령을 정지하지 않고 계속하여 수행하고, 상기 제1 메모리 명령이 실행 완료된 후 상기 제2 메모리 명령을 실행하는 것; 을 포함하는 것을 특징으로 하는, 방법.
  2. 제1항에 있어서,
    상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하는 것은,
    제1 메모리 명령을 실행할 때, 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하는 것을 포함하는 것을 특징으로 하는, 방법.
  3. 제1항에 있어서,
    상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하는 것은,
    상기 제1 메모리 명령과 상기 제2 메모리 명령의 유형에 기반하여, 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하는 것을 포함하는 것을 특징으로 하는, 방법.
  4. 제3항에 있어서,
    상기 명령 시퀀스를 실행하기 위한 하드웨어에 의해 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하는 것을 특징으로 하는, 방법.
  5. 삭제
  6. 제1항에 있어서,
    소프트웨어에 의해 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하는 것을 특징으로 하는, 방법.
  7. 제1항에 있어서,
    상기 제1 메모리 명령에 대한 상기 실행이 완성된 것에 응답하여, 상기 제2 메모리 명령을 실행하기 시작하는 것을 더 포함하는 것을 특징으로 하는, 방법.
  8. 명령 실행 장치에 있어서,
    메모리 명령과 비메모리 명령을 포함하는 명령 시퀀스를 실행하도록 설정된 명령 시퀀스 실행 모듈 ― 여기서 상기 명령 시퀀스에서의 명령은 순서에 따라 실행되기 시작함 ―;
    상기 명령 시퀀스에서 제1 메모리 명령 다음의 메모리 명령인 제2 메모리 명령을 실행하기 시작 전에 제1 메모리 명령에 대한 실행을 완성해야 하는 것을 확정하도록 설정된 실행 결정 모듈 ― 여기서, 상기 명령 시퀀스에는 중지 명령이 더 포함되고, 상기 실행 결정 모듈은, 상기 중지 명령을 실행할 때, 상기 중지 명령이 상대하는 메모리 명령을 상기 제1 메모리 명령으로 확정하도록 설정된 제1 메모리 명령 확정 모듈; 및 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된 제3 실행 확정 모듈을 포함함 ―; 및
    하드웨어와 소프트웨어의 협동작업을 통해, 상기 제1 메모리 명령을 실행하는 주기 기간에, 상기 중지 명령이 상대하는 상기 제1 메모리 명령과 상기 제2 메모리 명령 사이의 비메모리 명령을 정지하지 않고 계속하여 수행하고, 상기 제1 메모리 명령이 실행 완료된 후 상기 제2 메모리 명령을 실행하도록 설정된 비메모리 명령 실행 모듈을 포함하는 것을 특징으로 하는, 명령 실행 장치.
  9. 제8항에 있어서,
    상기 실행 결정 모듈은,
    제1 메모리 명령을 실행할 때, 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된 제1 실행 확정 모듈을 포함하는 것을 특징으로 하는, 명령 실행 장치.
  10. 제8항에 있어서,
    상기 실행 결정 모듈은,
    상기 제1 메모리 명령과 상기 제2 메모리 명령의 유형에 기반하여, 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된 제2 실행 확정 모듈을 포함하는 것을 특징으로 하는, 명령 실행 장치.
  11. 제10항에 있어서,
    상기 제2 실행 확정 모듈은, 상기 명령 시퀀스를 실행하기 위한 하드웨어에 의해 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된 것을 특징으로 하는, 명령 실행 장치.
  12. 삭제
  13. 제8항에 있어서,
    상기 제3 실행 확정 모듈은, 소프트웨어에 의해 상기 제2 메모리 명령을 실행하기 시작 전에 상기 제1 메모리 명령에 대한 상기 실행을 완성해야 하는 것을 확정하도록 설정된 것을 특징으로 하는, 명령 실행 장치.
  14. 제8항에 있어서,
    상기 제1 메모리 명령에 대한 상기 실행이 완성된 것에 응답하여, 상기 제2 메모리 명령을 실행하기 시작하도록 설정된 제2 메모리 명령 실행 모듈을 더 포함하는 것을 특징으로 하는, 명령 실행 장치.
  15. 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서와 통신 연결된 메모리를 포함하는 전자기기에 있어서,
    상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되어 있고, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서로 하여금 제1항 내지 제4항, 제6항, 및 제7항 중 임의의 한 항에 따른 방법을 수행할 수 있도록 하는 것을 특징으로 하는, 전자기기.
  16. 컴퓨터로 하여금 제1항 내지 제4항, 제6항, 및 제7항 중 임의의 한 항에 따른 방법을 수행하도록 하기 위한 컴퓨터 명령이 저장된, 비일시적 컴퓨터 판독 가능 저장매체.
  17. 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 컴퓨터 프로그램 중의 명령이 프로세서에 의해 실행될 경우, 제1항 내지 제4항, 제6항, 및 제7항 중 어느 한 항의 방법을 구현하는 것을 특징으로 하는, 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램.
KR1020210038060A 2020-07-20 2021-03-24 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램 KR102543951B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010699439.3 2020-07-20
CN202010699439.3A CN111857825A (zh) 2020-07-20 2020-07-20 指令执行方法、装置、电子设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
KR20210049725A KR20210049725A (ko) 2021-05-06
KR102543951B1 true KR102543951B1 (ko) 2023-06-14

Family

ID=73000630

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210038060A KR102543951B1 (ko) 2020-07-20 2021-03-24 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램

Country Status (5)

Country Link
US (1) US11748108B2 (ko)
EP (1) EP3819758A3 (ko)
JP (1) JP7419293B2 (ko)
KR (1) KR102543951B1 (ko)
CN (1) CN111857825A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115225477B (zh) * 2022-07-19 2023-12-01 北京天融信网络安全技术有限公司 机框式设备的配置维护方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002251283A (ja) 2001-02-22 2002-09-06 Mitsubishi Electric Corp メモリ管理機構及びメモリ管理方法
US20140215190A1 (en) * 2013-01-25 2014-07-31 Apple Inc. Completing load and store instructions in a weakly-ordered memory model
US20180188997A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Memory ordering in acceleration hardware

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07302200A (ja) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5673426A (en) 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
US6463522B1 (en) * 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
US6871273B1 (en) * 2000-06-22 2005-03-22 International Business Machines Corporation Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations
WO2009119021A1 (ja) 2008-03-28 2009-10-01 パナソニック株式会社 命令実行制御方法、命令フォーマット、及びプロセッサ
CN101770357B (zh) 2008-12-31 2014-10-22 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
CN102420820B (zh) 2011-11-28 2016-06-08 杭州华三通信技术有限公司 一种集群系统中的隔离方法和装置
CN102799418B (zh) * 2012-08-07 2014-10-08 清华大学 融合了顺序和vliw的处理器体系结构及指令执行方法
US10073784B2 (en) * 2014-06-27 2018-09-11 International Business Machines Corporation Memory performance when speculation control is enabled, and instruction therefor
US9658961B2 (en) * 2014-06-27 2017-05-23 International Business Machines Corporation Speculation control for improving transaction success rate, and instruction therefor
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US10474467B2 (en) * 2015-08-12 2019-11-12 International Business Machines Corporation Processor instruction sequence translation
CN107786374B (zh) 2017-10-19 2021-02-05 苏州浪潮智能科技有限公司 一种Oracle集群文件系统及其实现fence的方法
US11175916B2 (en) 2017-12-19 2021-11-16 Advanced Micro Devices, Inc. System and method for a lightweight fencing operation
US10866805B2 (en) 2018-01-03 2020-12-15 Arm Limited Speculation barrier instruction
CN108984319B (zh) 2018-06-25 2021-10-15 广州视源电子科技股份有限公司 解决操作指令冲突的方法、装置、计算机设备和存储介质
CN109450670B (zh) 2018-10-19 2022-04-01 杭州东方通信软件技术有限公司 一种人工智能模式下的指令冲突判断方法及其系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002251283A (ja) 2001-02-22 2002-09-06 Mitsubishi Electric Corp メモリ管理機構及びメモリ管理方法
US20140215190A1 (en) * 2013-01-25 2014-07-31 Apple Inc. Completing load and store instructions in a weakly-ordered memory model
US20180188997A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Memory ordering in acceleration hardware

Also Published As

Publication number Publication date
EP3819758A3 (en) 2021-11-03
CN111857825A (zh) 2020-10-30
JP7419293B2 (ja) 2024-01-22
KR20210049725A (ko) 2021-05-06
JP2021144730A (ja) 2021-09-24
US11748108B2 (en) 2023-09-05
EP3819758A2 (en) 2021-05-12
US20210271482A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
JP7209034B2 (ja) エッジコンピューティングテスト方法、装置、機器及び読み取り可能な記憶媒体
CN110806923B (zh) 一种区块链任务的并行处理方法、装置、电子设备和介质
US11474712B2 (en) Method, apparatus, device and storage medium for managing access request
US8799889B2 (en) Application downloading
US20210191780A1 (en) Method and apparatus for processing development machine operation task, device and storage medium
EP3851979A1 (en) Method and apparatus for traversing graph database, device and storage medium
EP3961395A1 (en) Method and apparatus for scheduling memory access request, device and storage medium
CN112925587A (zh) 用于初始化应用的方法和装置
US9117020B2 (en) Determining control flow divergence due to variable value difference
KR102543951B1 (ko) 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램
US11150969B2 (en) Helping a hardware accelerator using software
US9740618B2 (en) Memory nest efficiency with cache demand generation
CN114968567A (zh) 用于分配计算节点的计算资源的方法、装置和介质
CN110347601B (zh) 脚本进程的中断处理方法和装置
JP7265618B2 (ja) 深層学習トレーニングタスクに向けたプロセッサメモリを最適化するための方法及び装置
US8799873B2 (en) Collecting tracepoint data
JP7393404B2 (ja) コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム
US20220374331A1 (en) Method of debugging applet, electronic device, and storage medium
CN112416695B (zh) 一种全局变量监控方法、装置、设备及存储介质
CN111258954B (zh) 数据迁移方法、装置、设备及存储介质
EP3872630A2 (en) Request processing method and apparatus, electronic device, and computer storage medium
KR20210124488A (ko) 샘플링 대상 결정 방법, 장치, 전자 설비 및 컴퓨터 판독 가능 저장 매체
CN117255100A (zh) 一种数据同步方法、装置、电子设备及可读存储介质
CN115344352A (zh) 一种虚拟化系统运行方法、装置、设备和介质
CN115080443A (zh) 一种基于rpa远程调试的方法、装置、设备及介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant