개발 레지스터 할당이란 무엇입니까? -techopedia에서 정의

레지스터 할당이란 무엇입니까? -techopedia에서 정의

차례:

Anonim

정의-레지스터 할당이란 무엇입니까?

레지스터 할당은 레지스터에 변수를 할당하고 레지스터로 /로부터 데이터 전송을 처리하는 방법을 말합니다. 레지스터 할당이 발생할 수 있습니다 :

  • 로컬 레지스터 할당으로 알려진 기본 블록에서
  • 전역 레지스터 할당으로 알려진 전체 기능 또는 절차
  • 절차 간 레지스터 할당으로 알려진 호출 그래프를 통해 통과 된 기능 경계 초과

Techopedia에 등록 할당 설명

컴파일 과정에서 컴파일러는 변수가 작은 특정 범위의 레지스터에 할당되는 방식을 결정해야합니다. 일부 변수는 사용 중이 아니거나 동시에 "라이브"상태라고합니다. 이로 인해 일부 레지스터를 여러 변수에 할당 할 수 있습니다. 그럼에도 불구하고 값을 손상시키지 않고 두 개의 동시 실시간 변수를 정확히 동일한 레지스터에 할당 할 수는 없습니다.


일부 레지스터에 할당 할 수없는 변수는 RAM에 저장해야하며 스 필링 (spilling)으로 알려진 각 읽기 및 쓰기에 대해 각각로드 및로드되어야합니다. RAM에 액세스하는 것보다 레지스터에 액세스하는 것이 훨씬 빠릅니다. 또한 컴파일 된 프로그램의 실행 시간을 단축시킵니다. 따라서 효율적인 컴파일러는 레지스터에 가능한 많은 변수를 할당하는 것을 목표로합니다.


일반적으로 대부분의 레지스터 할당자는 모든 변수를 주 메모리 또는 중앙 처리 장치 (CPU) 레지스터에 할당합니다. 레지스터를 사용할 때 속도가 주요 이점입니다. 컴퓨터에는 유한 범위의 레지스터가있어 사용 가능한 모든 변수를 레지스터에 할당 할 수있는 것은 아닙니다. 변수를 레지스터에서 메모리로 전환하는 프로세스를 스 필링 (spilling)이라고하며, 변수를 메모리에서 레지스터로 이동하는 역 절차를 채우기 (filling)라고합니다. 지능형 레지스터 할당은 모든 컴파일러에게 중요한 단계입니다.


레지스터 할당에는 두 가지 유형이 있습니다.

  • 로컬 레지스터 할당 : 한 번에 하나의 기본 블록 (또는 하이퍼 블록 또는 수퍼 블록)을 할당하는 프로세스입니다. 로컬 레지스터 할당은 속도를 향상시킵니다.
  • 글로벌 레지스터 할당 : 로컬 할당을 사용하여 레지스터 사용률이 좋지 않은 경우 글로벌 레지스터 할당을 사용하는 것이 중요합니다. 간단한 전역 레지스터 할당에서 가장 활성화 된 값은 모든 내부 루프에 할당됩니다. 전체 글로벌 레지스터 할당은 프로 시저를 사용하여 제어 플로우 그래프에서 라이브 범위를 식별하고 라이브 범위를 지정하며 필요에 따라 범위를 분할합니다.
레지스터 할당이란 무엇입니까? -techopedia에서 정의