중앙 처리 장치

참조:컴퓨터 아키텍처 및 디지털 회로.

엔테로스 범위편집

중앙 처리 장치가 숫자를 나타내는 방식은 장치의 가장 기본적인 작동 방식에 영향을 주는 설계 옵션입니다. 초기 디지털 계산기 중 일부는 내부적으로 숫자를 나타 내기 위해 공통 십진수 시스템(기본 10)의 전기 모델을 사용했습니다. 일부 다른 컴퓨터는 삼항(기본 3)과 같은 더 이국적인 번호 매기기 시스템을 사용했습니다. 거의 모든 현대 Cp 각 숫자는”높은”또는”낮은”전압과 같은 두 값의 특정 물리적 양으로 표시되는 이진 형태로 숫자를 나타냅니다.

모스 6502 듀얼 인라인 패키지 마이크로 프로세서,매우 인기있는 8 비트 디자인.

숫자 표현은 중앙 처리 장치가 나타낼 수 있는 숫자의 크기 및 정확도와 관련이 있습니다. 2 진 처리 프로세서의 경우,비트는 처리 프로세서가 작동하는 숫자에서 중요한 위치를 나타냅니다. 부동 소수점 숫자가 아닌 정수를 엄격하게 처리 할 때”단어 크기”,”비트 너비”,”데이터 경로 너비”또는”정수 정확도”라고합니다. 이 숫자는 아키텍처마다 다르며 종종 동일한 중앙 처리 장치의 다른 단위 내에서 다릅니다. 예를 들어,8 비트 중앙 처리 장치는 8 개의 이진수로 나타낼 수 있는 숫자의 범위를 처리하며,각 숫자는 두 개의 가능한 값을 가지며,조합된 8 비트는 28 또는 256 개의 이산 숫자를 갖는다. 실제로 정수의 크기는 소프트웨어가 실행되고 프로세서가 직접 사용할 수 있는 정수의 범위에 대한 하드웨어 제한을 설정합니다.

정수 범위는 중앙 처리 장치가 주소 지정(위치 지정)할 수 있는 메모리 위치 수에도 영향을 줄 수 있습니다. 예를 들어,이진 프로세서가 32 비트를 사용하여 메모리 주소를 나타내고 각 메모리 주소가 1 바이트(8 비트)를 나타내는 경우,프로세서가 해결할 수 있는 최대 메모리 양은 232 바이트 또는 4 기가바이트입니다. 페이징과 같은 훨씬 더 복잡한 주소 메서드를 사용하여 전체 범위가 flat 주소 공간을 허용하는 것보다 더 많은 메모리를 찾습니다.

전체 숫자 범위의 높은 수준은 여분의 숫자를 처리하기 위해 더 많은 구조를 필요로하므로 더 많은 복잡성,크기,에너지 사용 및 일반적으로 비용이 필요합니다. 따라서 훨씬 더 높은 범위(16,32,64,심지어 128 비트)를 사용할 수 있지만 modern 응용 프로그램에서 사용되는 4 비트 및 8 비트 마이크로 컨트롤러를 보는 것은 드문 일이 아닙니다. 간단한 마이크로 컨트롤러는 일반적으로 저렴하고 에너지를 덜 사용하므로 열을 덜 발산합니다. 이들 모두는 전자 장치에 대한 중요한 설계 고려 사항이 될 수 있습니다. 그러나 하이 엔드 애플리케이션에서는 추가 범위(더 자주 추가 주소 공간)에 의해 생성되는 이점이 더 중요하며 종종 설계 옵션에 영향을 미칩니다. 낮은 비트 길이와 높은 비트 길이 모두에서 제공하는 몇 가지 이점을 얻기 위해 많은 장치 드라이브에 대해 서로 다른 비트 너비로 설계되었습니다. 그러나 부동 소수점 단위 내에서 128 비트 정밀도를 사용하여 부동 소수점 숫자의 정확도와 범위를 향상 시켰습니다. 특히 프로세서가 정수와 부동 소수점 기능 간의 적절한 균형이 필요한 범용 용도로 설계된 경우 특히 그렇습니다.

시계 주파수 편집

주요 기사: 클럭 주파수

대부분의 순차 논리 장치는 본질적으로 동기식입니다. 즉,동기화 신호를 기반으로 설계 및 작동합니다. 클럭 신호로 알려진 이 신호는 일반적으로 주기적인 구형파의 형태를 취합니다. 전기 신호가 중앙 처리 장치의 많은 회로의 각종 포크에 움직일 수 있는 최대 시간을 산출해서,디자이너는 클럭 신호를 위한 적당한 기간을 선정할 수 있습니다.

이 기간은 신호가 이동하거나 최악의 경우 전파되는 데 걸리는 시간보다 길어야 합니다. 최악의 경우 전파 지연에 비해 클럭 기간을 훨씬 더 높은 값으로 설정하면 전체 중앙 처리 장치와 클럭 신호의 상승 및 하강의”가장자리”주위로 데이터를 이동하는 방식을 설계 할 수 있습니다. 이 기능은 설계 관점과 구성 요소 수량 관점 모두에서 중앙 처리 장치를 크게 단순화하는 이점이 있습니다. 그러나 이것은 또한 일부 유닛이 훨씬 빠르더라도 전체 프로세서가 느린 요소를 기다려야한다는 단점이 있습니다. 이 제한은 프로세서 병렬 처리를 증가시키는 여러 가지 방법으로 크게 상쇄되었습니다(아래 참조).

그러나 아키텍처 개선만으로는 전역적 동기식 기업들의 모든 단점을 해결할 수 없다. 예를 들어,클럭 신호는 다른 전기 신호의 지연에 따라 달라질 수 있습니다. 점점 더 복잡해지는 환경에서는 클럭 속도가 빨라지므로 전체 장치에서 클럭 신호를 위상(동기화)으로 유지하기가 더 어려워집니다. 따라서 단일 신호로 인해 프로세서가 오작동할 수 있을 만큼 느려지는 것을 방지하기 위해 여러 개의 동일한 클럭 신호를 제공해야 합니다.. 클럭 속도가 극적으로 증가 할 때 또 다른 주요 문제는 중앙 처리 장치에 의해 소산되는 열의 양이다. 클럭 신호는 끊임없이 변화하여 많은 구성 요소가 당시 사용 중인지 여부에 관계없이 전환(상태 변경)됩니다. 일반적으로 상태를 변경하는 구성 요소는 정적 상태의 요소보다 더 많은 에너지를 사용합니다. 따라서,클럭 속도가 증가함에 따라,그래서 더 효과적인 냉각 솔루션을 필요로 중앙 처리 장치를 일으키는 열 분산을 수행합니다.

불필요한 컴포넌트 전환을 처리하는 한 가지 방법은 클럭 게이팅이라고 하는데,이는 클럭 신호를 불필요한 컴포넌트로 끄고 효과적으로 비활성화하는 것을 포함한다. 그러나 이것은 종종 구현하기 어려운 것으로 간주되므로 매우 낮은 전력 설계 이외의 일반적인 사용을 볼 수 없습니다. 비디오 게임 콘솔의 전원 요구 사항을 줄이기 위해 넓은 시계 게이트를 사용 하는 주목할 만한 늦은 중앙 처리 장치 디자인은 아이비엠의 파워를 기반으로 하는 엑스박스 360 의. 글로벌 클럭 신호의 문제 중 일부를 다루는 또 다른 방법은 그것의 완전한 제거이다. 여러 가지 방법으로 클럭에서 전체 신호를 제거하는 것은 유사한 동기 설계에 비해 설계 프로세스를 상당히 복잡하게 만드는 반면,비동기(또는 비 클럭)설계는 전력 소비 및 열 방출에서 현저한 이점을 가지고 있습니다. 드물 긴하지만 전체 클록 신호를 사용하지 않고 구축되었습니다. 이 두 가지 주목할만한 예로는 팔 구조를 구현하는 부적과 미니 밉을 지원하는 미니 밉이 있습니다. 클럭 신호를 완전히 제거하는 대신 일부 중앙 처리 장치 설계는 산술 성능에서 약간의 이득을 얻기 위해 수퍼 스칼라 파이프 라이닝과 함께 알루를 사용하는 것과 같이 특정 장치 장치를 비동기식으로 허용합니다. 완전 비동기 설계가 동기 설계보다 비슷하거나 더 나은 수준에서 수행 할 수 있는지 여부는 완전히 명확하지 않지만 적어도 가장 간단한 수학 연산에서 탁월하다는 것은 분명합니다. 이것은,그들의 우수한 전력 소비와 열 분산 특성과 결합해,그(것)들을 묻힌 체계를 위해 적절한 시킵니다.

병렬 처리편집

주요 기사:병렬 계산
이 모델은 다음과 같습니다. 3 개의 지시를 끝내기 위하여 그것은 15 개 주기를 가지고 간ㄴ다는 것을 주의하십시오.

이전 섹션에서 제공되는 중앙 처리장치의 기본 작동에 대한 설명은 중앙 처리장치가 취할 수 있는 가장 간단한 형태에 대해 설명합니다. 이 유형의 중앙 처리 장치는 일반적으로 하위 규모로 알려져 있으며 한 번에 하나 또는 두 개의 데이터 조각으로 단일 명령어에서 작동하고 실행됩니다.

이 과정은 하위 규모에서 고유 한 비 효율성을 초래합니다. 한 번에 하나의 명령어만 실행되기 때문에 전체 프로세서는 다음 명령어로 진행하기 전에 해당 명령어가 완료될 때까지 기다려야 한다. 그 결과,실행을 완료하는 데 두 개 이상의 클럭 사이클이 걸리는 명령어에서 하위 스칼라 중앙 처리 장치가”마비”됩니다. 두 번째 실행 단위(아래 참조)를 추가해도 성능이 크게 향상되지는 않습니다. 하나의 도로가 얼어 붙는 대신 두 개의 도로가 마비되고 사용되지 않는 트랜지스터의 수가 증가합니다. 이 디자인은 한 번에 하나의 명령어로만 작동 할 수 있으며 스칼라 성능(클럭 사이클 당 하나의 명령어)만 달성 할 수 있습니다. 그러나 성능은 거의 항상 하위 척도입니다(사이클 당 하나 미만의 명령).

스칼라와 더 나은 성능을 달성하기 위한 시도는 프로세서가 덜 선형적으로 그리고 더 병렬로 동작하도록 하는 다양한 설계 방법론을 가져왔다. 병렬 처리에 관해서는 일반적으로 이러한 설계 기술을 분류하는 데 두 가지 용어가 사용됩니다.즉,태블릿의 실행 리소스 활용도를 높이고자 합니다. 이는 프로세서가 동시에 실행할 수 있는 스레드 수(효과적으로 개별 프로그램)를 늘리는 것을 목표로 합니다.

각 방법론은 구현되는 방식과 응용 프로그램의 프로세서 성능을 높이는 상대적 효과면에서 모두 다릅니다.2692>주요 기사:세분화(전자)및 수퍼 스칼라.

기본 5 단계 파이프 라인. 기껏해야,이 파이프는 사이클 당 하나의 명령어의 완료 속도를 유지할 수 있습니다.

병렬 처리를 증가시키는 가장 간단한 방법 중 하나는 이전 명령의 실행이 완료되기 전에 명령을 읽고 디코딩하는 첫 단계를 시작하는 것입니다. 이것은 명령 파이프라인으로 알려진 기술의 가장 간단한 형태이며,거의 모든 현대 범용 Cp 에서 사용된다. 실행 경로를 불연속 단계로 나누어 파이프라인을 사용하면 한 번에 둘 이상의 명령을 실행할 수 있습니다. 이 분리는 실행 파이프를 빠져 나와 제거 될 때까지 각 단계에서 명령이 더 완성되는 조립 라인과 비교할 수 있습니다.

그러나 파이프라인에서 다음 작업을 완료하기 위해 이전 작업의 결과를 종료해야 하는 상황이 발생할 수 있습니다. 이 문제를 해결하려면 이러한 종류의 조건을 확인하기 위해 각별한주의를 기울여야하며,이 경우 명령 파이프 라인의 일부가 지연되어야합니다. 당연히 이것을 달성하려면 추가 회로가 필요하며 파이프 프로세서는 서브 스케일보다 더 복잡하지만 많지는 않습니다. 파이프 프로세서는 거의 완전히 스칼라가 될 수 있으며 갑작스러운 파이프 정지(한 단계에서 두 개 이상의 클럭 사이클을 지속하는 명령)에 의해서만 억제됩니다.

간단한 슈퍼 스칼라 세분화. 한 번에 두 개의 지침을 읽고 파견함으로써 사이클 당 최대 두 개의 지침을 완료 할 수 있습니다.

명령 파이프라이닝에 대한 아이디어보다 개선된 점은 프로세서 구성 요소의 유휴 시간을 더욱 줄이는 방법을 개발하게 되었습니다. 슈퍼 스칼라라고하는 디자인에는 긴 명령 파이프 라인과 여러 개의 동일한 실행 단위가 포함됩니다. 수퍼 스칼라 파이프에서는 여러 명령어를 읽고 디스패처에 전달하여 명령어를 병렬로(동시에)실행할 수 있는지 여부를 결정합니다. 이 경우 사용 가능한 실행 유닛에 전달되므로 여러 명령어가 동시에 실행될 수 있습니다. 일반적으로,수퍼 스칼라 프로세서가 대기 실행 유닛에 동시에 디스패치할 수 있는 명령어가 많을수록,주어진 사이클에서 더 많은 명령어가 완료될 것이다.

슈퍼스칼라 프로세서 아키텍처를 설계하는 데 가장 큰 어려움은 효과적인 디스패처를 만드는 데 있다. 디스패처는 명령어를 병렬로 실행할 수 있는지 신속하고 정확하게 결정할 수 있어야 하며,가능한 한 많은 실행 단위를 차지하는 방식으로 명령어를 디스패치할 수 있어야 합니다. 이를 위해서는 명령 파이프라인을 가능한 한 자주 채워야 하며,수퍼 스칼라 아키텍처에서 상당한 양의 프로세서 캐시에 대한 필요성을 증가시킨다. 이것은 또한 높은 수준의 성능을 유지하는 데 중요한 포크 예측,투기 적 실행 및 순서가 잘못된 실행과 같은 위험을 피하는 기술을 만듭니다. 조건부 명령어가 어떤 브랜치(또는 경로)를 사용할지 예측함으로써,중앙 처리 장치는 조건부 명령어가 완료될 때까지 전체 채널이 대기해야 하는 횟수를 최소화할 수 있다. 종종,투기적 실행은 조건부 연산이 완료된 후에 필요하지 않을 수 있는 코드의 일부를 실행함으로써 적당한 성능 향상을 제공한다. 실행 순서 외에서는 데이터 종속성으로 인한 지연을 줄이기 위해 명령어가 실행되는 순서를 변경합니다. 또한 개별 명령의 경우 여러 데이터-현대 프로세서는 동일한 유형의 많은 양의 데이터를 처리 한 경우,당신은 하나의 문장을 여러 번 실행할 때,중앙 처리 장치가 캡처 및 디코딩 단계를 건너 뛰고 따라서 크게 특히 비디오 및 사진 처리를 만들기위한 소프트웨어로 매우 단조로운 프로그램의 엔진에서,특정 경우에 성능을 향상 있도록 파이프 라인의 일부를 해제 할 수 있습니다.

중앙처리장치의 일부가 슈퍼스칼라이고 일부가 아닌 경우,슈퍼스칼라가 아닌 부분은 시간 정지로 인해 성능이 저하된다. 인텔 펜티엄(5)은 클록 사이클 당 하나의 명령을 받아 들일 수있는 두 개의 슈퍼 스칼라 알루스를 가지고 있었지만 클록 사이클 당 하나의 명령을 받아 들일 수 없었습니다. 따라서 피 5 는 정수 부분에서 위 스칼라 였지만 부동 소수점 숫자의 위 스칼라가 아니 었습니다. 인텔의 펜티엄 아키텍처의 후속작인 펜티엄 6 은 부동 소수점 함수에 수퍼 스칼라 기능을 추가하여 이러한 명령어의 성능을 크게 향상시켰습니다.

수퍼 스칼라 디자인 및 단일 케이스 모두 단일 프로세서가 사이클 당 하나의 명령어를 초과하는 비율로 명령어 실행을 완료 할 수 있도록함으로써 중앙 처리 장치의 단일 프로세서를 증가시킵니다. 대부분의 현대 CPU 디자인은 적어도 다소 슈퍼 스칼라이며,지난 10 년 동안 거의 모든 범용 중앙 처리 장치 디자인은 슈퍼 스칼라입니다. 최근 몇 년 동안 높은 컴퓨터 디자인에 대한 강조의 일부는 소프트웨어 인터페이스에 중앙 처리 장치 하드웨어에서 이동했다,또는 이사. 이 경우,프로세서의 작업량이 감소하여 설계의 복잡성이 줄어듭니다.

스레드 수준 병렬 처리편집

성능을 달성하기 위한 또 다른 전략은 여러 프로그램 또는 스레드를 병렬로 실행하는 것입니다. 이 연구 영역을 병렬 컴퓨팅이라고합니다. 플린의 분류에서,이 전략은 여러 다중 데이터 명령어로 알려져있다.

이 목적을 위해 사용 된 한 가지 기술은 다중 처리였습니다. 이 기술은 대칭 멀티프로세싱으로 알려져 있습니다. 이 구성표에서 각 중앙 처리 장치에는 지속적으로 업데이트되는 메모리 뷰를 유지하기 위한 추가 하드웨어가 있습니다. 시스템 익스플로러는 저희의 데이터베이스를 통해 실행 중인 프로세스를 검사할 수 있는 쉬운 방법을 제공하는 최고의 프리웨어입니다. 1990 년에는 비균일 메모리 액세스 및 디렉토리 기반 일관성 프로토콜과 같은 제도가 도입되었습니다. 이 시스템은 수천 개의 프로세서로 구축되었습니다. 처음에는 다중 프로세싱이 여러 개의 개별 프로세서와 보드를 사용하여 구축되어 프로세서 간의 상호 연결을 구현했습니다. 프로세서와 그 상호 연결이 단일 실리콘 칩에 구현 된 경우,이 기술은 멀티 코어 프로세서로 알려져있다.

나중에 단일 프로그램과 매우 근접한 병렬 처리가 있음을 인식했습니다. 단일 프로그램에는 별도로 또는 병렬로 실행할 수있는 여러 스레드(또는 함수)가있을 수 있습니다. 이 기술의 일부 초기 예는 직접 메모리 액세스와 같은 입력/출력 처리를 계산 된 스레드와 별도의 스레드로 구현했습니다. 1970 년대에는 시스템이 여러 컴퓨팅 스레드를 병렬로 실행하도록 설계되었을 때이 기술에 대한보다 일반적인 접근 방식이 도입되었습니다. 이 기술은 다음과 같이 알려져 있습니다.

이 접근 방식은 멀티 프로세싱보다 더 비용 효율적인 것으로 간주됩니다. 마운트에서는 캐시를 포함한 실행 단위 및 메모리 시스템이 여러 스레드간에 공유됩니다. 따라서 수퍼바이저 소프트웨어 및 운영 체제에서는 더 큰 변화를 거쳐야 합니다. 여기서 스레드는 외부 메모리에서 데이터가 반환될 때까지 마비될 때까지 실행됩니다. 이 구성표에서는 실행 준비가 된 다른 스레드로 빠르게 전환해야 합니다. 또 다른 유형의 마운트는 동시 멀티 스레딩,여기서 멀티 스레딩 명령어는 중앙 처리 장치 클럭 사이클 내에서 병렬로 실행됩니다.

데이터 병렬 처리편집

주요 기사:벡터 프로세서 및 심드.

덜 일반적이지만 점점 더 중요한 중앙 처리 장치 패러다임(실제로 일반적으로 컴퓨팅)은 벡터를 다룹니다. 위에서 설명한 프로세서는 모두 특정 유형의 스칼라 장치라고 합니다. 이름에서 알 수 있듯이 벡터 프로세서는 각 명령어에 대해 하나의 데이터를 처리하는 스칼라 프로세서와 달리 하나의 명령어 컨텍스트에서 여러 데이터 조각을 처리합니다. 이 두 가지 데이터 처리 방식은 일반적으로 각각 단일 명령어,단일 데이터)및 단일 명령어,다중 데이터로 지칭됩니다. 예를 들어,합계 또는 스칼라 곱과 같이 대규모 데이터 집합에서 수행되어야 하는 작업을 최적화하는 데 있습니다. 이러한 유형의 작업의 고전적인 예는 멀티미디어 응용 프로그램(이미지,비디오 및 사운드)뿐만 아니라 많은 유형의 과학 및 엔지니어링 작업입니다. 스칼라 프로세서는 데이터 집합에서 각 명령어와 값을 읽고,디코딩하고,실행하는 전체 프로세스를 완료해야 하지만,벡터 프로세서는 단일 명령어로 비교적 큰 데이터 집합에서 간단한 작업을 수행할 수 있습니다. 물론 이는 응용 프로그램에서 하나의 작업을 대규모 데이터 집합에 적용하는 여러 단계가 필요한 경우에만 가능합니다.

크레이-1 과 같은 대부분의 초기 벡터 공학은 거의 독점적으로 과학적 연구 및 암호화 응용과 관련되었다. 그러나,멀티미디어가 디지털 미디어로 크게 옮겨가면서,일반 목적에서 어떤 형태의 심드에 대한 필요성이 중요해졌다. 범용 프로세서에 부동 소수점 단위를 포함하는 것이 일반적이 된 직후,범용 프로세서에 대한 심드 실행 단위의 사양 및 구현도 나타나기 시작했습니다. 이러한 초기 사양 중 일부는 정수용이었습니다. 이것은 일부 소프트웨어 개발자들에게 큰 장애물로 판명되었는데,심드의 혜택을 받은 많은 응용 프로그램들은 대부분 부동 소수점 숫자를 다루었기 때문이다. 이러한 초기 설계들은 점진적으로 개선되었고,일반적으로 국제사전과 관련된 일반적인 현대 심드 사양으로 재창조되었다.. 인텔은 Intel

답글 남기기

이메일 주소는 공개되지 않습니다.