hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
중앙 처리 장치 역사
이 시기에 컴팩트한 공간에 많은 상호 연결된 트랜지스터를 제조하는 방법이 개발되었다. 집적 회로(IC)는 단일 반도체 기반 다이 또는 "칩"에 많은 수의 트랜지스터를 제조할 수 있게 했다. 처음에는 NOR 게이트와 같은 매우 기본적인 비전문 디지털 회로만 IC로 소형화되었다. 이러한 "블록" IC를 기반으로 한 CPU는 일반적으로 "소규모 집적"(SSI) 장치라고 불린다. 아폴로 가이던스 컴퓨터에 사용된 것과 같은 SSI IC는 일반적으로 수십 개의 트랜지스터를 포함했다. SSI IC로 전체 CPU를 구축하려면 수천 개의 개별 칩이 필요했지만, 이전의 개별 트랜지스터 설계보다 훨씬 적은 공간과 전력을 소비했다.
IBM의 시스템/370은 시스템/360의 후속 모델로, 솔리드 로직 기술 개별 트랜지스터 모듈 대신 SSI IC를 사용했다. DEC의 PDP-8/I와 KI10 PDP-10도 PDP-8과 KA PDP-10에서 사용되던 개별 트랜지스터에서 SSI IC로 전환했으며, 그들의 매우 인기 있는 PDP-11 라인은 원래 SSI IC로 구축되었지만, 나중에 LSI 구성 요소가 실용화되면서 LSI로 구현되었다.
중앙 처리 장치 역사
리 보이스텔은 1967년의 "선언문"을 포함한 영향력 있는 기사들을 발표했는데, 이 기사들은 상대적으로 적은 수의 대규모 집적 회로(LSI)로 32비트 메인프레임 컴퓨터와 동등한 것을 구축하는 방법을 설명했다. 백 개 이상의 게이트를 가진 칩인 LSI 칩을 구축하는 유일한 방법은 금속–산화물–반도체(MOS) 반도체 제조 공정(PMOS 논리, NMOS 논리, 또는 CMOS 논리)을 사용하여 구축하는 것이었다. 그러나 일부 회사는 1970년대까지 접합형 트랜지스터가 MOS 칩보다 빨랐기 때문에 양극성 트랜지스터-트랜지스터 논리(TTL) 칩으로 프로세서를 계속 구축했다 (몇몇 회사들은 데이터포인트와 같이 1980년대 초까지 TTL 칩으로 프로세서를 계속 구축했다). 1960년대에는 MOS IC가 더 느렸고 처음에는 저전력이 필요한 응용 분야에서만 유용하다고 여겨졌다. 1968년 페어차일드 반도체에서 페데리코 파진에 의해 실리콘 게이트 MOS 기술이 개발된 이후, MOS IC는 1970년대 후반에 양극성 TTL을 표준 칩 기술로 크게 대체했다.
마이크로전자 기술이 발전함에 따라, 점점 더 많은 트랜지스터가 IC에 집적되어 완전한 CPU에 필요한 개별 IC의 수가 줄어들었다. MSI 및 LSI IC는 트랜지스터 수를 수백 개, 그리고 수천 개로 늘렸다. 1968년에는 완전한 CPU를 구축하는 데 필요한 IC 수가 8가지 유형의 24개 IC로 줄어들었으며, 각 IC는 약 1000개의 MOSFET을 포함했다. SSI 및 MSI 이전 모델과 현저히 대조적으로, PDP-11의 첫 LSI 구현은 단 4개의 LSI 집적 회로로 구성된 CPU를 포함했다.
마이크로프로세서가 처음 도입된 이후 거의 모든 다른 중앙 처리 장치 구현 방법을 완전히 대체했다. 1971년에 출시된 최초의 상업용 마이크로프로세서는 인텔 4004였다. 인텔 4004는 산술 논리 장치, 제어 장치 및 프로세서 레지스터를 칩 하나에 통합한 최초의 소비자용 CPU 중 하나였다. 1974년에 출시된 최초의 널리 사용된 마이크로프로세서는 인텔 8080이었다. 당시의 메인프레임 및 미니컴퓨터 제조업체들은 기존의 컴퓨터 구조를 업그레이드하기 위해 독자적인 IC 개발 프로그램을 시작했고, 결국 기존 하드웨어 및 소프트웨어와 하위 호환되는 명령어 집합 호환 마이크로프로세서를 생산했다. 유비쿼터스 개인용 컴퓨터의 출현과 궁극적인 성공과 결합하여, CPU라는 용어는 이제 거의 전적으로 마이크로프로세서에 적용된다. 여러 CPU(코어라고 함)는 단일 처리 칩에 결합될 수 있다.
이전 세대의 CPU는 하나 이상의 회로 기판에 개별 부품과 수많은 작은 집적 회로(IC)로 구현되었다. 반면 마이크로프로세서는 매우 적은 수의 IC, 일반적으로 단 하나의 IC로 제조된 CPU이다. 단일 다이에 구현됨으로써 전체 CPU 크기가 줄어든다는 것은 게이트 기생 용량 감소와 같은 물리적 요인으로 인해 스위칭 시간이 빨라진다는 것을 의미한다. 이를 통해 동기식 마이크로프로세서는 수십 메가헤르츠에서 수 기가헤르츠에 이르는 클럭 속도를 가질 수 있었다. 또한, IC에 매우 작은 트랜지스터를 구축하는 능력은 단일 CPU의 복잡성과 트랜지스터 수를 여러 배 증가시켰다. 이 널리 관찰되는 추세는 2016년까지 CPU(및 기타 IC) 복잡성 성장의 상당히 정확한 예측자로 입증된 무어의 법칙에 의해 설명된다.
1950년대 이후 CPU의 복잡성, 크기, 구조 및 일반적인 형태는 엄청나게 변했지만, 기본적인 설계와 기능은 거의 변하지 않았다. 오늘날 거의 모든 일반적인 CPU는 폰 노이만 프로그램 내장형 기계로 매우 정확하게 설명될 수 있다. 무어의 법칙이 더 이상 유효하지 않음에 따라, 집적 회로 트랜지스터 기술의 한계에 대한 우려가 제기되었다. 전자 게이트의 극단적인 소형화는 일렉트로마이그레이션 및 임계치 이하 누출(subthreshold leakage)과 같은 현상의 영향을 훨씬 더 중요하게 만들고 있다. 이러한 새로운 우려 사항들은 연구자들이 양자 컴퓨터와 같은 새로운 컴퓨팅 방법을 조사하고, 고전적인 폰 노이만 모델의 유용성을 확장하는 병렬성 및 기타 방법을 확장하게 하는 많은 요인 중 하나이다.
중앙 처리 장치 작동
대부분의 CPU의 기본적인 작동 방식은 물리적 형태와 관계없이 프로그램이라고 불리는 일련의 저장된 명령을 실행하는 것이다. 실행될 명령은 일종의 컴퓨터 메모리에 보관된다. 거의 모든 CPU는 명령 주기라고 통칭되는 가져오기(fetch), 디코딩(decode) 및 실행(execute) 단계를 따른다.
명령 실행 후, 전체 과정이 반복되며, 다음 명령 주기에서는 일반적으로 프로그램 카운터의 증가된 값으로 인해 순서상 다음 명령을 가져온다. 만약 점프 명령이 실행되면, 프로그램 카운터는 점프한 명령의 주소를 포함하도록 수정되고 프로그램 실행은 정상적으로 계속된다. 더 복잡한 CPU에서는 여러 명령이 동시에 가져와지고, 디코딩되고, 실행될 수 있다. 이 섹션에서는 일반적으로 "고전 RISC 파이프라인"이라고 불리는 것을 설명하며, 이는 많은 전자 장치(종종 마이크로컨트롤러라고 불림)에 사용되는 간단한 CPU에서 매우 일반적이다. 이 설명은 CPU 캐시의 중요한 역할과 따라서 파이프라인의 접근 단계를 거의 무시한다.
중앙 처리 장치 작동
일부 명령어는 직접 결과 데이터를 생성하기보다는 프로그램 카운터를 조작한다. 이러한 명령어는 일반적으로 "점프"라고 불리며, 루프, 조건부 프로그램 실행(조건부 점프 사용), 그리고 서브루틴의 존재와 같은 프로그램 동작을 용이하게 한다. 일부 프로세서에서는 다른 일부 명령어가 상태 "플래그" 레지스터의 비트 상태를 변경한다. 이러한 플래그는 종종 다양한 연산의 결과를 나타내기 때문에 프로그램 동작에 영향을 미치는 데 사용될 수 있다. 예를 들어, 이러한 프로세서에서 "비교" 명령어는 두 값을 평가하고 플래그 레지스터의 비트를 설정하거나 지워서 어느 값이 더 큰지 또는 동일한지를 나타낸다. 이 플래그 중 하나는 나중에 점프 명령어가 프로그램 흐름을 결정하는 데 사용될 수 있다.
중앙 처리 장치 작동
가져오기는 프로그램 메모리에서 명령(숫자 또는 숫자 시퀀스로 표현됨)을 검색하는 것을 포함한다. 프로그램 메모리에서 명령의 위치(주소)는 다음에 가져올 명령의 주소를 식별하는 숫자를 저장하는 프로그램 카운터(PC; 인텔 X86 마이크로프로세서에서는 "명령 포인터"라고 불림)에 의해 결정된다. 명령이 가져와진 후, PC는 명령의 길이만큼 증가하여 시퀀스의 다음 명령 주소를 포함하게 된다. 종종 가져올 명령은 상대적으로 느린 메모리에서 검색해야 하므로, 명령이 반환되기를 기다리는 동안 CPU가 정지하게 된다. 이 문제는 캐시 및 파이프라인 아키텍처(아래 참조)에 의해 최신 프로세서에서 크게 해결되었다.
CPU가 메모리에서 가져오는 명령어는 CPU가 무엇을 할지 결정한다. 복호화 회로로 알려진 명령어 디코더에 의해 수행되는 디코딩 단계에서, 명령어는 CPU의 다른 부분을 제어하는 신호로 변환된다.
중앙 처리 장치 작동
명령어가 해석되는 방식은 CPU의 명령어 집합 아키텍처(ISA)에 의해 정의된다. 종종 명령어 내의 비트 그룹("필드"라고 불림) 중 하나인 연산 코드는 수행할 연산을 나타내고, 나머지 필드는 일반적으로 연산에 필요한 추가 정보, 예를 들어 피연산자를 제공한다. 이러한 피연산자는 상수 값(즉시 값이라고 함)으로 지정되거나, 일부 주소 지정 방식에 의해 결정되는 프로세서 레지스터 또는 메모리 주소일 수 있다.
일부 CPU 설계에서는 명령어 디코더가 하드웨어로 고정된, 변경 불가능한 복호화 회로로 구현된다. 다른 설계에서는 마이크로코드가 명령어를 여러 클럭 펄스에 걸쳐 순차적으로 적용되는 CPU 구성 신호 세트로 변환하는 데 사용된다. 경우에 따라 마이크로코드를 저장하는 메모리는 다시 쓸 수 있어 CPU가 명령어를 디코딩하는 방식을 변경할 수 있다.
가져오기 및 디코딩 단계 후에는 실행 단계가 수행된다. CPU 아키텍처에 따라 단일 동작 또는 일련의 동작으로 구성될 수 있다. 각 동작 동안 제어 신호는 CPU의 다양한 부분을 전기적으로 활성화하거나 비활성화하여 원하는 연산의 전부 또는 일부를 수행할 수 있도록 한다. 그런 다음 동작은 일반적으로 클럭 펄스에 반응하여 완료된다. 종종 결과는 후속 명령어가 빠르게 접근할 수 있도록 내부 CPU 레지스터에 기록된다. 다른 경우에는 결과가 더 느리지만 비용이 적게 들고 용량이 큰 주기억장치에 기록될 수 있다.
예를 들어, 덧셈을 수행하는 명령어가 실행될 경우, 피연산자(합산될 숫자)를 포함하는 레지스터와 덧셈을 수행하는 산술 논리 장치(ALU)의 일부가 활성화된다. 클럭 펄스가 발생하면 피연산자는 원본 레지스터에서 ALU로 흘러가고, 합계가 ALU의 출력에 나타난다. 후속 클럭 펄스에서 다른 구성 요소는 출력을 저장 장치(예: 레지스터 또는 메모리)로 이동시키기 위해 활성화(및 비활성화)된다. 만약 결과 합계가 너무 크면(즉, ALU의 출력 워드 크기보다 크면) 산술 오버플로 플래그가 설정되어 다음 연산에 영향을 미친다.
중앙 처리 장치 구조와 구현
CPU의 회로에 하드웨어로 내장된 기본적인 연산 집합을 명령어 집합이라고 한다. 이러한 연산에는 예를 들어 두 숫자를 더하거나 빼는 것, 두 숫자를 비교하는 것, 또는 프로그램의 다른 부분으로 점프하는 것 등이 포함될 수 있다. 각 명령어는 기계어 연산 코드라고 알려진 고유한 비트 조합으로 표현된다. 명령어를 처리하는 동안 CPU는 연산 코드를 복호화하여 CPU의 동작을 조율하는 제어 신호로 변환한다. 완전한 기계어 명령어는 연산 코드와, 많은 경우 연산에 필요한 추가 비트(예: 덧셈 연산의 경우 합산될 숫자)로 구성된다. 복잡성 스케일을 올리면 기계어 프로그램은 CPU가 실행하는 기계어 명령어들의 모음이다.
각 명령어에 대한 실제 수학 연산은 CPU 프로세서 내의 조합 논리 회로인 산술 논리 장치(ALU)에 의해 수행된다. 일반적으로 CPU는 메모리에서 명령어를 가져와 ALU를 사용하여 연산을 수행한 다음, 결과를 메모리에 저장한다. 정수 수학 및 논리 연산 외에도, 메모리에서 데이터를 로드하고 다시 저장하는 명령어, 분기 연산, 그리고 CPU의 부동소수점 장치(FPU)에 의해 수행되는 부동소수점 연산과 같은 다양한 다른 기계 명령어가 존재한다.
중앙 처리 장치 구조와 구현
제어 장치(CU)는 프로세서의 작동을 지시하는 CPU의 구성 요소이다. 이는 컴퓨터의 메모리, 산술 논리 장치 및 입출력 장치에 프로세서로 전송된 명령에 응답하는 방법을 알려준다.
이는 타이밍 및 제어 신호를 제공하여 다른 장치의 작동을 지시한다. 대부분의 컴퓨터 자원은 CU에 의해 관리된다. 이는 CPU와 다른 장치 간의 데이터 흐름을 지시한다. 존 폰 노이만은 폰 노이만 구조의 일부로 제어 장치를 포함했다. 현대 컴퓨터 설계에서 제어 장치는 일반적으로 CPU의 내부 부분이며, 도입 이후 전반적인 역할과 작동은 변하지 않았다.
산술 논리 장치(ALU)는 정수 산술 및 비트 논리 연산을 수행하는 프로세서 내의 디지털 회로이다. ALU의 입력은 연산될 데이터 워드(피연산자라고 함), 이전 연산의 상태 정보, 그리고 제어 장치로부터 어떤 연산을 수행할지 지시하는 코드이다. 실행되는 명령에 따라 피연산자는 내부 CPU 레지스터, 외부 메모리 또는 ALU 자체에서 생성된 상수로부터 올 수 있다.
중앙 처리 장치 구조와 구현
모든 입력 신호가 안정되고 ALU 회로를 통해 전파되면, 수행된 연산의 결과가 ALU의 출력에 나타난다. 결과는 레지스터나 메모리에 저장될 수 있는 데이터 워드와 일반적으로 이 목적을 위해 예약된 특수 내부 CPU 레지스터에 저장되는 상태 정보로 구성된다.
최신 CPU는 성능 향상을 위해 일반적으로 하나 이상의 ALU를 포함한다.
주소 생성 장치(AGU)는 때때로 주소 계산 장치(ACU)라고도 불리는데, CPU가 메인 메모리에 접근하는 데 사용하는 주소를 계산하는 CPU 내부의 실행 장치이다. 주소 계산을 CPU의 나머지 부분과 병렬로 작동하는 별도의 회로로 처리함으로써 다양한 기계어 명령어를 실행하는 데 필요한 CPU 사이클 수가 줄어들어 성능 향상을 가져올 수 있다.
중앙 처리 장치 구조와 구현
다양한 연산을 수행하는 동안 CPU는 메모리에서 데이터를 가져오는 데 필요한 메모리 주소를 계산해야 한다. 예를 들어, 배열 요소의 메모리 내 위치는 CPU가 실제 메모리 위치에서 데이터를 가져오기 전에 계산되어야 한다. 이러한 주소 생성 계산에는 덧셈, 뺄셈, 모듈로 연산, 또는 비트 시프트와 같은 다양한 정수 산술 연산이 포함된다. 종종 메모리 주소를 계산하는 것은 하나 이상의 범용 기계 명령어를 포함하며, 이는 반드시 빠르게 디코딩 및 실행되지 않는다. CPU 설계에 AGU를 통합하고 AGU를 사용하는 특수 명령어를 도입함으로써 다양한 주소 생성 계산을 CPU의 나머지 부분에서 오프로드할 수 있으며, 종종 단일 CPU 사이클 내에서 빠르게 실행될 수 있다.
중앙 처리 장치 구조와 구현
AGU의 기능은 특정 CPU와 그 아키텍처에 따라 다르다. 따라서 일부 AGU는 더 많은 주소 계산 연산을 구현하고 노출하는 반면, 일부는 한 번에 여러 피연산자에 대해 작동할 수 있는 더 고급 전문 명령어도 포함한다. 일부 CPU 아키텍처는 여러 AGU를 포함하여 두 개 이상의 주소 계산 연산이 동시에 실행될 수 있도록 하며, 이는 고급 CPU 설계의 슈퍼스칼라 특성으로 인해 추가적인 성능 향상을 가져온다. 예를 들어, 인텔은 샌디브리지 및 하스웰 마이크로아키텍처에 여러 AGU를 통합하여 여러 메모리 접근 명령어를 병렬로 실행할 수 있도록 함으로써 CPU 메모리 서브시스템의 대역폭을 증가시킨다.
많은 마이크로프로세서(스마트폰 및 데스크톱, 노트북, 서버 컴퓨터에 사용됨)에는 메모리 관리 장치가 있어, 논리적 주소를 물리적 RAM 주소로 변환하고, 메모리 보호 및 페이징 기능을 제공하며, 이는 가상 메모리에 유용하다. 더 간단한 프로세서, 특히 마이크로컨트롤러는 일반적으로 MMU를 포함하지 않는다.
중앙 처리 장치 구조와 구현
CPU 캐시는 컴퓨터의 중앙 처리 장치(CPU)가 주기억장치에서 데이터에 접근하는 평균 비용(시간 또는 에너지)을 줄이기 위해 사용하는 하드웨어 캐시이다. 캐시는 프로세서 코어에 더 가깝고 더 빠르며 작은 메모리로, 자주 사용되는 주 메모리 위치의 데이터 사본을 저장한다. 대부분의 CPU는 명령어 캐시 및 데이터 캐시를 포함하여 서로 다른 독립적인 캐시를 가지며, 데이터 캐시는 일반적으로 여러 캐시 레벨(L1, L2, L3, L4 등)의 계층 구조로 구성된다. 각 상위 캐시 레벨은 일반적으로 이전 레벨보다 느리지만 크며, L1이 가장 빠르고 CPU에 가장 가깝다.
중앙 처리 장치 구조와 구현
모든 현대 (빠른) CPU는 (몇 가지 특수한 예외를 제외하고 ) 여러 수준의 CPU 캐시를 가지고 있다. 캐시를 사용한 최초의 CPU는 하나의 캐시 수준만 가졌다. 나중에 등장한 레벨 1 캐시와 달리 L1d(데이터용)와 L1i(명령어용)로 분할되지 않았다. 현재 캐시를 사용하는 거의 모든 CPU는 분할된 L1 캐시를 가지고 있다. 또한 L2 캐시와 더 큰 프로세서의 경우 L3 캐시도 가지고 있다. L2 캐시는 일반적으로 분할되지 않고 이미 분할된 L1 캐시의 공통 저장소 역할을 한다. 멀티 코어 프로세서의 각 코어는 전용 L2 캐시를 가지며 일반적으로 코어 간에 공유되지 않는다. L3 캐시 및 더 높은 수준의 캐시는 코어 간에 공유되며 분할되지 않는다. L4 캐시는 현재 흔하지 않으며, 일반적으로 별도의 다이 또는 칩에 있는 SRAM이 아닌 DRAM에 있다. 이는 역사적으로 L1에서도 마찬가지였지만, 더 큰 칩은 마지막 레벨을 제외하고 모든 캐시 레벨을 통합할 수 있게 했다. 각 추가 캐시 레벨은 더 크고 다르게 최적화되는 경향이 있다.
중앙 처리 장치 구조와 구현
대부분의 CPU가 가지고 있는 메모리 관리 장치(MMU)의 일부인 변환 색인 버퍼(TLB)와 같이 다른 유형의 캐시도 존재한다(위에서 언급한 가장 중요한 캐시의 "캐시 크기"에는 포함되지 않음).
캐시는 일반적으로 2의 거듭제곱(예: 2, 8, 16 등 키비바이트 또는 메비바이트(더 큰 비L1 캐시의 경우) 크기로 되어 있지만, IBM z13은 96 KiB의 L1 명령어 캐시를 가지고 있다.
대부분의 CPU는 동기 회로이다. 이는 순차적인 연산의 속도를 조절하기 위해 클럭 신호를 사용한다는 것을 의미한다. 클럭 신호는 외부 발진 회로에 의해 생성되며, 이 회로는 주기적인 방형파 형태로 초당 일정한 수의 펄스를 생성한다. 클럭 펄스의 주파수는 CPU가 명령어를 실행하는 속도를 결정하며, 결과적으로 클럭이 빠를수록 CPU는 초당 더 많은 명령어를 실행한다.
중앙 처리 장치 구조와 구현
CPU의 적절한 작동을 보장하기 위해 클럭 주기는 모든 신호가 CPU를 통해 전파(이동)하는 데 필요한 최대 시간보다 길다. 클럭 주기를 최악의 전달 지연보다 훨씬 높은 값으로 설정함으로써, 전체 CPU와 CPU가 상승 및 하강하는 클럭 신호의 "가장자리"를 따라 데이터를 이동시키는 방식을 설계할 수 있다. 이는 설계 관점과 부품 수 관점 모두에서 CPU를 크게 단순화하는 장점이 있다. 그러나 이는 CPU의 일부 부분이 훨씬 빠르더라도 전체 CPU가 가장 느린 요소들을 기다려야 한다는 단점도 수반한다. 이러한 한계는 CPU 병렬성을 높이는 다양한 방법(아래 참조)에 의해 크게 보완되었다.
중앙 처리 장치 구조와 구현
그러나 아키텍처 개선만으로는 전역 동기 CPU의 모든 단점을 해결할 수 없다. 예를 들어, 클럭 신호는 다른 전기 신호의 지연에 영향을 받는다. 점점 더 복잡해지는 CPU에서 높은 클럭 속도는 전체 장치에서 클럭 신호의 위상(동기화)을 유지하기 어렵게 만든다. 이로 인해 많은 현대 CPU는 단일 신호가 CPU 오작동을 유발할 정도로 크게 지연되는 것을 방지하기 위해 여러 개의 동일한 클럭 신호가 제공되어야 한다. 클럭 속도가 급격히 증가함에 따라 또 다른 주요 문제는 CPU에서 소산되는 열량이다. 지속적으로 변하는 클럭은 사용 여부와 관계없이 많은 구성 요소를 전환시킨다. 일반적으로 전환하는 구성 요소는 정적 상태의 요소보다 더 많은 에너지를 사용한다. 따라서 클럭 속도가 증가할수록 에너지 소비도 증가하여 CPU는 CPU 냉각 솔루션 형태의 더 많은 열 방출을 필요로 한다.
중앙 처리 장치 구조와 구현
불필요한 구성 요소의 스위칭을 처리하는 한 가지 방법은 클럭 게이팅이라고 불리며, 이는 불필요한 구성 요소에 대한 클럭 신호를 차단하는 것(실질적으로 비활성화)을 포함한다. 그러나 이는 구현하기 어렵다고 여겨지며, 따라서 매우 낮은 전력 설계 외에는 일반적인 용도로 사용되지 않는다. 광범위한 클럭 게이팅을 사용하는 주목할 만한 최근 CPU 설계 중 하나는 엑스박스 360에 사용된 IBM 파워PC 기반 제논이다. 이는 엑스박스 360의 전력 요구 사항을 줄인다.
전역 클럭 신호의 일부 문제를 해결하는 또 다른 방법은 클럭 신호를 아예 없애는 것이다. 전역 클럭 신호를 제거하면 여러 면에서 설계 프로세스가 상당히 복잡해지지만, 비동기(또는 클럭 없는) 설계는 유사한 동기 설계에 비해 전력 소비 및 열 방출 측면에서 뚜렷한 장점을 제공한다. 다소 흔하지는 않지만, 전역 클럭 신호를 사용하지 않고 완전한 비동기 CPU가 구축되기도 했다. 이 중 주목할 만한 두 가지 예로는 ARM 호환 AMULET과 MIPS R3000 호환 MiniMIPS가 있다.
중앙 처리 장치 구조와 구현
클럭 신호를 완전히 제거하는 대신, 일부 CPU 설계는 장치의 특정 부분이 비동기식으로 작동하도록 허용한다. 예를 들어, 비동기식 ALU와 슈퍼스칼라 파이프라인을 함께 사용하여 일부 산술 성능 향상을 달성하는 식이다. 완전히 비동기식 설계가 동기식 설계와 유사하거나 더 나은 수준의 성능을 발휘할 수 있는지 여부는 아직 명확하지 않지만, 최소한 간단한 수학 연산에서는 탁월한 성능을 보여준다. 이러한 점은 우수한 전력 소비 및 열 방출 특성과 결합되어 임베디드 컴퓨터에 매우 적합하게 만든다.
많은 현대 CPU는 다이 통합 전력 관리 모듈을 가지고 있으며, 이는 CPU 회로에 온디맨드 전압 공급을 조절하여 성능과 전력 소비의 균형을 유지할 수 있도록 한다.
모든 CPU는 수치 값을 특정 방식으로 표현한다. 예를 들어, 일부 초기 디지털 컴퓨터는 숫자를 친숙한 10진법 기수법 값으로 표현했으며, 다른 컴퓨터는 2-5진법 또는 3진법과 같은 더 특이한 표현을 사용하기도 했다. 거의 모든 현대 CPU는 숫자를 이진 형태로 표현하며, 각 숫자는 "높음" 또는 "낮음" 전압과 같은 두 값의 물리량으로 표현된다.
중앙 처리 장치 구조와 구현
수치 표현과 관련하여 CPU가 표현할 수 있는 정수 숫자의 크기와 정밀도가 있다. 이진 CPU의 경우, 이는 CPU가 한 번의 연산으로 처리할 수 있는 비트 수(이진 인코딩된 정수의 유효 숫자)로 측정되며, 일반적으로 워드 크기, 비트 너비, 데이터 경로 너비, 정수 정밀도 또는 정수 크기라고 불린다. CPU의 정수 크기는 CPU가 직접 작동할 수 있는 정수 값의 범위를 결정한다. 예를 들어, 8비트 CPU는 8비트로 표현되는 정수를 직접 조작할 수 있으며, 이는 256(28)개의 이산 정수 값의 범위를 가진다.
정수 범위는 CPU가 직접 주소 지정할 수 있는 메모리 위치의 수에도 영향을 미칠 수 있다(주소는 특정 메모리 위치를 나타내는 정수 값임). 예를 들어, 이진 CPU가 메모리 주소를 나타내는 데 32비트를 사용하면 232개의 메모리 위치를 직접 주소 지정할 수 있다. 이러한 한계를 우회하고 다양한 다른 이유로 인해 일부 CPU는 추가 메모리를 주소 지정할 수 있는 메커니즘(메모리 관리 또는 뱅크 전환과 같은)을 사용한다.
중앙 처리 장치 구조와 구현
워드 크기가 큰 CPU는 더 많은 회로를 필요로 하므로 물리적으로 더 크고, 비용이 더 많이 들며, 더 많은 전력을 소비한다(따라서 더 많은 열을 발생시킨다). 그 결과, 훨씬 더 큰 워드 크기(예: 16, 32, 64, 심지어 128비트)의 CPU를 사용할 수 있음에도 불구하고, 더 작은 4비트 또는 8비트 마이크로컨트롤러가 현대 애플리케이션에서 흔히 사용된다. 그러나 더 높은 성능이 요구될 때는 더 큰 워드 크기의 이점(더 넓은 데이터 범위 및 주소 공간)이 단점을 능가할 수 있다. CPU는 크기와 비용을 줄이기 위해 워드 크기보다 짧은 내부 데이터 경로를 가질 수 있다. 예를 들어, IBM 시스템/360의 명령어 집합은 32비트 명령어 집합이었지만, 시스템/360 모델 30과 모델 40은 산술 논리 장치에 8비트 데이터 경로를 가지고 있었으므로, 32비트 덧셈은 피연산자의 각 8비트마다 한 사이클씩 총 4사이클이 필요했다. 그리고 모토로라 68000 시리즈 명령어 집합은 32비트 명령어 집합이었지만, 모토로라 68000과 모토로라 68010은 산술 논리 장치에 16비트 데이터 경로를 가지고 있었으므로, 32비트 덧셈은 두 사이클이 필요했다.
중앙 처리 장치 구조와 구현
더 낮은 비트 길이와 더 높은 비트 길이 모두의 이점을 얻기 위해, 많은 명령어 집합은 정수 및 부동소수점 데이터에 대해 다른 비트 너비를 가지며, 해당 명령어 집합을 구현하는 CPU가 장치의 다른 부분에 대해 다른 비트 너비를 가질 수 있도록 한다. 예를 들어, IBM 시스템/360 명령어 집합은 주로 32비트였지만, 부동소수점 숫자의 정확성과 범위 확장을 용이하게 하기 위해 64비트 부동소수점 값을 지원했다. 시스템/360 모델 65는 십진 및 고정 소수점 이진 산술을 위한 8비트 가산기와 부동소수점 산술을 위한 60비트 가산기를 가졌다. 많은 후기 CPU 설계는 유사한 혼합 비트 너비를 사용하는데, 특히 프로세서가 정수 및 부동소수점 기능의 합리적인 균형이 요구되는 범용 용도로 사용될 때 그렇다.
이전 섹션에서 설명한 CPU의 기본 작동 방식은 CPU가 취할 수 있는 가장 간단한 형태를 설명한다. 일반적으로 서브스칼라라고 불리는 이러한 유형의 CPU는 한 번에 하나 또는 두 개의 데이터 조각에 대해 하나의 명령을 작동하고 실행한다. 즉, 클럭 사이클당 명령어 처리 횟수(IPC < 1)가 1 미만이다.
중앙 처리 장치 구조와 구현
이러한 과정은 서브스칼라 CPU에서 본질적인 비효율성을 야기한다. 한 번에 하나의 명령어만 실행되기 때문에, 전체 CPU는 다음 명령어로 진행하기 전에 해당 명령어가 완료될 때까지 기다려야 한다. 결과적으로 서브스칼라 CPU는 실행을 완료하는 데 한 클럭 사이클 이상이 걸리는 명령어에서 "멈추게" 된다. 두 번째 실행 장치를 추가해도(아래 참조) 성능이 크게 향상되지 않는다. 한 경로가 멈추는 대신 이제 두 경로가 멈추고 사용되지 않는 트랜지스터 수가 증가한다. CPU의 실행 리소스가 한 번에 하나의 명령만 작동할 수 있는 이러한 설계는 스칼라 성능(클럭 사이클당 하나의 명령어, IPC = 1)에만 도달할 수 있다. 그러나 성능은 거의 항상 서브스칼라(클럭 사이클당 명령어 처리 횟수 1 미만, IPC < 1)이다.
스칼라 및 그 이상의 성능을 달성하려는 시도는 CPU가 선형적으로 작동하는 대신 병렬적으로 작동하도록 하는 다양한 설계 방법론을 낳았다. CPU의 병렬성을 언급할 때, 이러한 설계 기술을 분류하는 데 두 가지 용어가 일반적으로 사용된다:
각 방법론은 구현 방식과 애플리케이션의 CPU 성능 향상에 미치는 상대적인 효과 측면에서 다르다.
중앙 처리 장치 구조와 구현
병렬성 증가를 위한 가장 간단한 방법 중 하나는 이전 명령어가 실행을 마치기 전에 명령어 가져오기 및 디코딩의 첫 단계를 시작하는 것이다. 이는 명령어 파이프라인이라고 알려진 기술이며, 거의 모든 현대 범용 CPU에서 사용된다. 파이프라이닝은 실행 경로를 이산적인 단계로 분할함으로써 여러 명령어를 동시에 실행할 수 있도록 한다. 이러한 분리는 조립 라인에 비유될 수 있으며, 각 단계에서 명령어가 더 완성되어 실행 파이프라인을 벗어나 은퇴된다.
그러나 파이프라이닝은 다음 작업을 완료하는 데 이전 작업의 결과가 필요한 상황을 발생시킬 수 있다. 이러한 상황을 종종 데이터 종속성 충돌이라고 부른다. 따라서 파이프라인 프로세서는 이러한 종류의 조건을 확인하고 필요한 경우 파이프라인의 일부를 지연시켜야 한다. 파이프라인 프로세서는 파이프라인 스톨(명령어가 한 단계에서 한 클럭 사이클 이상을 소비하는 경우)에 의해서만 저해되어 거의 스칼라에 가까워질 수 있다.
중앙 처리 장치 구조와 구현
명령어 파이프라이닝의 개선은 CPU 구성 요소의 유휴 시간 감소로 이어졌다. 슈퍼스칼라라고 불리는 설계에는 긴 명령어 파이프라인과 로드-스토어 장치, 산술 논리 장치, 부동소수점 장치, 주소 생성 장치와 같은 여러 개의 동일한 실행 장치가 포함된다. 슈퍼스칼라 파이프라인에서 명령어는 읽혀져 디스패처로 전달되며, 디스패처는 명령어를 병렬(동시)로 실행할 수 있는지 여부를 결정한다. 만약 가능하다면, 명령어는 실행 장치로 디스패치되어 동시 실행된다. 일반적으로 슈퍼스칼라 CPU가 한 사이클에 완료할 명령어 수는 동시에 실행 장치로 디스패치할 수 있는 명령어 수에 따라 달라진다.
중앙 처리 장치 구조와 구현
슈퍼스칼라 CPU 아키텍처 설계의 가장 큰 어려움은 효율적인 디스패처를 만드는 데 있다. 디스패처는 명령어를 병렬로 실행할 수 있는지 여부를 신속하게 결정할 수 있어야 하며, 가능한 한 많은 실행 장치를 바쁘게 유지하는 방식으로 명령어를 디스패치해야 한다. 이를 위해서는 명령어 파이프라인이 가능한 한 자주 채워져야 하며, 상당한 양의 CPU 캐시가 필요하다. 또한 분기 예측, 투기적 실행, 레지스터 이름 변경, 비순차적 명령어 처리 및 트랜잭셔널 메모리와 같은 해저드 회피 기술이 높은 수준의 성능을 유지하는 데 중요하다. 조건부 명령어가 어떤 분기(또는 경로)를 택할지 예측하려고 시도함으로써 CPU는 전체 파이프라인이 조건부 명령어가 완료될 때까지 기다려야 하는 횟수를 최소화할 수 있다. 투기적 실행은 조건부 연산이 완료된 후 필요하지 않을 수도 있는 코드 부분을 실행함으로써 종종 미미한 성능 향상을 제공한다. 비순차적 명령어 처리는 데이터 종속성으로 인한 지연을 줄이기 위해 명령어 실행 순서를 다소 재정렬한다. 또한 단일 명령어 스트림, 다중 데이터 스트림의 경우, 동일한 유형의 많은 데이터를 처리해야 할 때, 현대 프로세서는 파이프라인의 일부를 비활성화하여 단일 명령어가 여러 번 실행될 때 CPU가 가져오기 및 디코딩 단계를 건너뛰고 특정 경우, 특히 비디오 제작 소프트웨어 및 사진 처리와 같은 고도로 단조로운 프로그램 엔진에서 성능을 크게 향상시킬 수 있다.
중앙 처리 장치 구조와 구현
CPU의 일부가 슈퍼스칼라일 때, 그렇지 않은 부분은 스케줄링 스톨로 인해 성능 저하를 겪는다. P5 펜티엄은 클럭 사이클당 하나의 명령어를 받아들일 수 있는 두 개의 슈퍼스칼라 ALU를 가졌지만, FPU는 그러지 못했다. 따라서 P5는 정수 슈퍼스칼라였지만 부동소수점 슈퍼스칼라는 아니었다. P5 아키텍처의 후속 모델인 인텔의 P6는 부동소수점 기능에 슈퍼스칼라 기능을 추가했다.
간단한 파이프라이닝과 슈퍼스칼라 설계는 CPU가 클럭 사이클당 한 명령어 이상의 속도로 명령어를 실행할 수 있도록 하여 CPU의 ILP를 증가시킨다. 대부분의 현대 CPU 설계는 적어도 어느 정도는 슈퍼스칼라이며, 지난 10년 동안 설계된 거의 모든 범용 CPU는 슈퍼스칼라이다. 최근 몇 년 동안 고성능 ILP 컴퓨터 설계의 일부 초점은 CPU 하드웨어에서 소프트웨어 인터페이스 또는 명령어 집합(ISA)으로 옮겨졌다. 매우 긴 명령어 워드(VLIW) 전략은 일부 ILP가 소프트웨어에 의해 직접 암시되도록 하여 ILP를 높이는 CPU의 작업을 줄이고 설계 복잡성을 줄인다.
중앙 처리 장치 구조와 구현
성능을 달성하기 위한 또 다른 전략은 여러 스레드 또는 프로세스를 병렬로 실행하는 것이다. 이 연구 분야는 병렬 컴퓨팅으로 알려져 있다. 플린 분류에서 이 전략은 다중 명령어 스트림, 다중 데이터 스트림(MIMD)으로 알려져 있다.
중앙 처리 장치 구조와 구현
이를 위해 사용되는 한 가지 기술은 다중 처리(MP)이다. 이 기술의 초기 유형은 대칭형 다중 처리(SMP)로 알려져 있으며, 소수의 CPU가 메모리 시스템의 일관된 뷰를 공유한다. 이 방식에서 각 CPU는 메모리의 최신 뷰를 지속적으로 유지하기 위한 추가 하드웨어를 가지고 있다. 메모리의 오래된 뷰를 피함으로써 CPU는 동일한 프로그램에서 협력할 수 있으며 프로그램은 한 CPU에서 다른 CPU로 마이그레이션할 수 있다. 소수를 넘어 협력하는 CPU의 수를 늘리기 위해 1990년대에는 불균일 기억 장치 접근(NUMA) 및 디렉토리 기반 일관성 프로토콜(directory-based coherence protocols)과 같은 방식이 도입되었다. SMP 시스템은 소수의 CPU로 제한되는 반면 NUMA 시스템은 수천 개의 프로세서로 구축되었다. 처음에는 다중 처리가 여러 개의 개별 CPU와 보드를 사용하여 프로세서 간의 상호 연결을 구현했다. 프로세서와 그 상호 연결이 모두 단일 칩에 구현될 때, 이 기술은 칩 수준 다중 처리(CMP)로 알려져 있으며, 단일 칩은 멀티 코어 프로세서라고 불린다.
중앙 처리 장치 특권 모드
대부분의 현대 CPU는 운영 체제와 가상화를 지원하기 위해 특권 모드를 가지고 있다.
클라우드 컴퓨팅은 가상화를 사용하여 별도의 사용자를 위한 가상 중앙 처리 장치(vCPU)를 제공할 수 있다.
vCPU는 가상 사설 서버(VPS)와 혼동해서는 안 된다.
호스트는 가상 시스템이 작동하는 물리적 머신과 같은 가상 시스템이다. 여러 물리적 머신이 함께 작동하고 전체적으로 관리될 때, 그룹화된 컴퓨팅 및 메모리 자원은 클러스터를 형성한다. 일부 시스템에서는 클러스터에 동적으로 추가하고 제거할 수 있다. 호스트 및 클러스터 수준에서 사용 가능한 자원은 리소스 풀로 세분화될 수 있다.
중앙 처리 장치 성능
프로세서의 성능 또는 속도는 클럭 속도(일반적으로 헤르츠의 배수로 주어짐) 및 클럭당 명령어 수(IPC)를 비롯한 여러 요인에 따라 달라지며, 이들 요인들이 함께 CPU가 수행할 수 있는 초당 명령 수의 요인으로 작용한다.
많은 보고된 IPS 값은 분기가 거의 없는 인위적인 명령어 시퀀스에서 "최고" 실행 속도를 나타내지만, 실제 작업 부하는 다양한 명령어와 애플리케이션의 혼합으로 구성되며, 일부는 다른 것보다 실행하는 데 더 오래 걸린다. 메모리 계층 구조의 성능 또한 프로세서 성능에 크게 영향을 미치며, 이는 IPS 계산에서 거의 고려되지 않는 문제이다. 이러한 문제 때문에 SPECint와 같이 이 목적을 위한 –  "벤치마크"라고 불리는 다양한 표준화된 테스트가 일반적으로 사용되는 애플리케이션에서 실제 유효 성능을 측정하기 위해 개발되었다.
중앙 처리 장치 성능
컴퓨터의 처리 성능은 멀티 코어 프로세서를 사용하여 향상된다. 이는 본질적으로 두 개 이상의 개별 프로세서(이러한 맥락에서는 코어라고 함)를 하나의 집적 회로에 연결하는 것이다. 이상적으로는 듀얼 코어 프로세서가 단일 코어 프로세서보다 거의 두 배 강력할 것이다. 실제로는 불완전한 소프트웨어 알고리즘 및 구현으로 인해 성능 향상은 훨씬 작아 약 50%에 불과하다. 프로세서의 코어 수를 늘리면(예: 듀얼 코어, 쿼드 코어 등) 처리할 수 있는 작업량이 증가한다. 이는 프로세서가 이제 수많은 비동기 이벤트, 인터럽트 등을 처리할 수 있음을 의미하며, 이는 CPU가 과부하될 때 부담을 줄 수 있다. 이 코어는 처리 공장의 다른 층으로 생각할 수 있으며, 각 층은 다른 작업을 처리한다. 때때로 이 코어는 단일 코어만으로는 정보를 처리하기에 충분하지 않은 경우 인접한 코어와 동일한 작업을 처리한다. 멀티 코어 CPU는 추가 처리 능력을 제공함으로써 컴퓨터가 여러 작업을 동시에 실행하는 능력을 향상시킨다. 그러나 속도 증가는 추가된 코어 수에 정비례하지 않는다. 이는 코어들이 특정 채널을 통해 상호 작용해야 하며, 이러한 코어 간 통신이 사용 가능한 처리 속도의 일부를 소비하기 때문이다.
중앙 처리 장치 성능
동시 멀티스레딩 및 언코어(uncore)와 같은 현대 CPU의 특정 기능(실제 CPU 자원을 공유하면서 활용도를 높이는 것을 목표로 함)으로 인해 성능 수준 및 하드웨어 사용 모니터링은 점차 복잡한 작업이 되었다. 이에 대한 응답으로 일부 CPU는 CPU의 다양한 부분의 실제 사용을 모니터링하고 소프트웨어에서 접근 가능한 다양한 카운터를 제공하는 추가 하드웨어 논리를 구현한다. 예를 들어 인텔의 성능 카운터 모니터 기술이 있다.
중앙 처리 장치 오버클럭
오버클럭은 CPU 성능을 높이기 위해 CPU(및 기타 구성 요소)의 클럭 속도를 높이는 과정이다. 오버클럭은 CPU 온도를 높여 과열을 유발할 수 있으므로, 대부분의 사용자는 오버클럭을 하지 않고 클럭 속도를 변경하지 않는다. 일부 구성 요소 버전(예: 인텔의 U 버전 CPU 또는 엔비디아의 OG GPU)은 오버클럭을 허용하지 않는다.
핵 (수학)
수학에서, 어떤 사상의 핵(核, kernel 커널[*])은 0의 원상의 포함 사상으로 생각할 수 있는 특별한 단사 사상이다. 범주론을 통해 추상적으로 정의할 수 있으나, 적절한 조건을 만족시키는 구체적 범주에서는 특정 원소의 원상의 포함 함수가 된다.
핵 (수학) 정의
영 사상을 갖는 범주  속의 사상 의 핵 은 다음과 같은 영 사상과의 동등자이다.
영 대상을 갖는 범주 속의 사상 에 대하여, 인 가 존재한다면 를 정규 단사 사상(正規單射寫像, 영어: normal monomorphism)이라고 한다. "정규"라는 용어는 군론의 정규 부분군에서 유래하였다.  임의의 영 대상을 갖는 범주에서, 정규 단사 사상은 (동등자이므로) 단사 사상이다.
모든 단사 사상이 정규 단사 사상인 영 사상을 갖는 범주를 정규 범주(正規範疇, 영어: normal category)라고 한다.
핵 (수학) 성질
준가법 범주 (아벨 군의 모노이드 범주  위의 풍성한 범주)에서, 두 사상의 동등자는 그 차의 핵과 같다.
아벨 범주에서 모든 사상은 핵을 가지며, 모든 단사 사상은 정규 단사 사상이다. 구체적으로, 아벨 범주에서 모든 단사 사상은 그 여핵의 핵과 같으며, 모든 전사 사상은 그 핵의 여핵과 같다.
핵 (수학) 예
환  위의 왼쪽 가군의 범주 는 영 사상을 갖는 범주이며, 이 범주에서 모든 사상(가군 준동형)은 핵을 갖는다.
구체적으로, 의 핵 는 다음과 같은 포함 함수이다.
에서 모든 단사 사상은 정규 단사 사상이다. 이는 (군이나 유사환의 경우와 달리) 임의의 부분 가군에 대한 몫가군을 정의할 수 있기 때문이다.
특히, 선형대수학에서 가 체일 경우, 체 위의 가군들은 벡터 공간이며, 벡터 공간의 범주에서는 핵이 존재한다. 특히, 행렬은 유한 차원 벡터 공간 사이의 선형 변환을 정의하며, 행렬의 핵은 벡터 공간의 범주에서의 핵이다. 선형대수학에서 핵은 영공간(零空間, 영어: null space)이라고 불리기도 한다.
군과 군 준동형의 범주 에서, 영 사상은 1(군 연산의 항등원)로 가는 상수 함수이다. 에서 모든 사상(군 준동형)은 핵을 갖는다.
구체적으로, 의 핵 는 다음과 같은 포함 함수이다.
이 경우, 는 의 정규 부분군을 이룬다.
군의 범주에서, 임의의 군 준동형 에 대하여 다음 두 조건이 서로 동치이다.
핵 (수학) 예
아벨 군과 군 준동형의 범주 에서, 영 사상과 핵은 에서와 같다. 즉, 영 사상은 0(군 연산의 항등원)으로 가는 상수 함수이며, 핵은 0의 원상으로 가는 포함 함수이다. 에서 단사 함수인 모든 군 준동형은 정규 단사 사상이다. 이는 아벨 군의 모든 부분군이 정규 부분군이기 때문이다.
유사환과 유사환 준동형의 범주 에서, 영 사상은 0 (덧셈 항등원)으로 가는 상수 함수이다. 에서 모든 사상은 핵을 갖는다.
구체적으로, 의 핵 는 다음과 같은 포함 함수이다.
이 경우, 는 의 아이디얼을 이룬다.
유사환의 범주에서, 임의의 유사환 준동형 에 대하여 다음 두 조건이 서로 동치이다.
(곱셈 단위원을 갖는) 환과 환 준동형의 범주 에서 핵은 존재하지 않는다. 이는 아이디얼은 1을 포함하지 않을 수 있어 부분환을 이루지 못할 수 있기 때문이다.
점을 가진 공간의 범주 에서, 영 사상은 으로 가는 상수 함수이다. 이 범주에서 모든 사상 은 핵 을 가지며, 이는 의 원상에 대한 포함 함수이다.
정당
정당(政黨) 또는 당(黨)은 공공 이익의 실현을 목표로 하여 정치적 견해를 같이 하는 사람들이 자발적으로 조직한 집단을 일컫는다. 정당은 정치의 기구·조직 가운데서 비교적 최근에 발달한 편에 속한다. 사회가 근대화됨에 따라 정치가 다원화하는 것을 반영하는 데 있어서 의회만으로는 충분하지 못하게 되어 여기서 생기는 투입과정의 차질을 보완하기 위하여 점차 정당이 형성되기 시작되었다.
정당
서구의 정치사에서는 근대정당의 성립과 발전을 대체로 19세기 초부터 잡고 있으며 의회정치를 기준으로 해서 볼 때에는 나라에 따라 19세기 말에 이르러서야 정당정치의 전통이 확립되는 경우도 있다. 근세 이전은 말할 것도 없고 16세기에 이르는 사이에 정당이 발달하지 못했던 이유는 정치에 참여하는 인구가 한정되어 있었기 때문이다. 정치가 귀족이나 지식을 가진 계층에 의하여서만 이루어질 때 정치를 좌우하는 것은 합리성이며 또한 그 바탕은 동질적인 것이다. 이러한 단일의 정치적 주체에 대하여 처음에는 부르주아지가, 그리고 뒤이어서 프로레타리아가 도전하면서 정치는 복잡한 투쟁관계로 변모하게 되었다. 투쟁의 첫단계에서는 주로 폭력이 이기고 지는 것을 가름했으나 어느 쪽의 종국적인 승리도 있을 수 없다는 사실을 깨닫게 되어서는 타협과 선의의 경쟁이 룰(rule)이 되었고 이에 정당이 필요 불가결한 것으로 등장하게 된 것이다. 정당의 기본적인 개념을 정치사회적으로 보아 다원적 경쟁사회에서 성립하는 것으로 여길 때 현대의 전체주의적 국가에서 볼 수 있는 단일정당은 정당이라고 하기보다는 특수 기능을 장악한 정부의 한 조직으로 판단할 수 있다. 정당이란 어휘 자체가 원래 '부분적인 모임'이라는 뜻에서 만들어진 것이다. 또 현대의 신생 제국에서 대개의 경우 정당의 존재를 확인할 수 있긴 하나 서구적인 기준에서 보면 정당이라고 하기보다는 지배자의 손발과 같은 사조직이라고 하는 것이 타당할 때가 많다.
정당 특징
정당의 특징을 몇 가지 들어 보면 다음과 같다.
정당은 집단적 조직이다. 어떤 나라에서는 법률로써 최저 몇 명 이상의 구성원이 있어야 정식으로 정당이 될 수 있다고 규정하고 있지만 일반적으로 생각할 때에도 어느 정도 이상의 사람이 모여 있지 않으면 안 된다. 대중정당은 수만에서부터 수백만의 당원을 가지는 규모로서 영국의 보수당은 8백만 명 이상이며 대한민국의 민주자유당은 4백만 명 이상이다. 코커스적 조직을 기반으로 하거나 명망가들을 중심으로 하여 조직된 정당은 몇만 명도 채 안 되는 제한된 당원을 가지고 운영되는 경우가 많다.
정당은 독특한 조직을 갖는다. 정당에만 고유한 어떤 조직이 있는 것이라기보다는 사회에 존재하는 조직의 모든 종류 가운데 정당 목적에 합당한 것이면 곧 이용된다. 가부장제적 조직, 군대식 조직, 세포와 같은 비밀조직, 또는 민주적 조직이 있다. 20세기에 들어와 마이헬스(R. Michels)가 민주주의를 표방하는 대중정당의 조직에서 과두적 경향을 적발해 내었던 사실은 유명하다.
정당 특징
정당은 사회단체와는 달리 정치 권력의 획득을 수단으로 정치에 영향을 끼칠 수 있다. 양당정치라고 하는 것은 두 개의 정당이 교대하여 정권을 담당할 때 일컫는 말이며 다당제에서의 군소정당은 정권을 획득하는 데 목표를 두기보다는 정권에 참여하거나 또는 영향을 미침으로써 만족한다. 정당은 정권을 지향한다는 점에서 교회나 노동조합, 그리고 기타 사회단체 및 압력집단과 구별된다.
정당 특징
정당은 공익성을 그 요건으로 한다. 18세기의 영국에서 정당과 의회의 공익성을 주창했던 버크(E. Burke)의 말을 빌려보자. "정당이란 여러 사람이 한데 뭉쳐 공동의 노력으로 국가적 이익의 향상을 위해 활동하는 집단인데 이때 각당은 자체의 합의에 입각한 독특한 주장을 내세운다" 이 기준에 의하여 우리는 정당과 파벌(faction)을 구별할 수 있다. 현대는 정당의 대부분이 국민 정당으로 되어 있으나 지난날에는 한때 계급정당이 발달하여 배타적으로 싸웠고 또한 사당이 존재하여 국가 이익 같은 것은 돌보지 않았었다.
정당 특징
정당은 선거와 병존한다. 정당이 민주정치에 반드시 필요한 이유는 선거를 치르는 데 있어서 후보자를 내고 선거의 쟁점을 내어놓으며, 국민이 정치에 참여하도록 권하며, 당선 뒤에 책임정치를 하게 하는 일을 모두 정당이 맡아 보는 까닭이다. 이와 같이 정당의 일반적인 공통점을 말할 수는 있으나 정당은 각국의 정치문화 및 정치기구의 특징에 따라 그 면모는 각양 각색이 된다. 그러나 대체로 의원내각제와 대통령중심제 및 후진국의 유형으로 나누어 볼 수 있다. 의원중심제 정부형태의 모델로는 영국이 가장 적절하다. 그 나라에서는 정당이 생기기 훨씬 이전부터 의회가 발달하였으므로 의회정치를 중심으로 하여 정당이 생겨났다. 따라서 원내 정당이 커다란 비중을 차지한다. 한 정당이 선거에서 이기면 그 당의 수상으로 되며 반대당이 되었을 때에도 응분의 책임을 지기 때문에 수상과 같은 보수를 받으며, 항상 집권 태세를 갖추어 이른바 '섀도 캐비닛'을 구성하고 있다. 이 체제에서는 강력한 정당조직이 필요한 동시에 선거때만이 아니라 평소에도 정당활동을 전개하여 언제나 선거를 할 수 있도록 준비한다. 이에 대하여 미국을 예로 들 수 있는 대통령제에서는 정당은 '선거를 위한 기구(the election machine)'에 불과하며 상설된 조직을 갖지 않고 당수도 없으며, 당을 바꾸어도 변절로 생각하지 않는다. 이와 같은 느슨한 정당제도를 갖고 있기 때문에 비로소 권력의 분립과 견제의 작용이 효력을 발생한다. 대통령은 같은 당이 의회에서 다수를 확보하고 있을 경우일지라도 정당을 통하여 의회를 조종할 수 없게 되어 있다. 제2차 세계 대전 후에 수많은 나라들이 독립하였고 대부분의 나라들은 서구의 정치를 모방하는 과정에서 정당을 만들었다. 그러나 서구의 사회, 경제, 정치적인 여러 여건이 구비되어 있지 않은 처지에서 정당정치는 흔히 비뚤어져 갔다. 선거에 의하여 정권이 교체되지 않기 때문에 이른바 1과 ½의 정당제가 되고 말며 또한 정당은 정치과정에서 국민과 연결되지 못하고 지배자의 친위당이 되고 말아 책임정치를 수행하는 데 아무런 도움도 주지 못한다.
정당 역사
인간이 도당 또는 당파를 조직해서 정치적 목적을 달성하려고 한 역사는 오래된다. 이것을 인간의 투쟁본능의 표현으로 보는 설도 있으나, 어떻든 단결이 힘의 결집수단으로서 효과적이라는 단순한 이유가 작용하고 있음은 틀림이 없다. 정당도 이러한 당파현상이라고 할 수 있겠으나 단순한 도당과 정당 사이에서는 유사점보다도 상위점 쪽이 중요한 의미를 갖는다. 정당은 근대적 의회제도 아래서 정치권력을 위해 투쟁하는 조직이지만, 도당은 역사적으로 그 이전의 현상이며, 정치권력이 개인 내지 폐쇄적인 집단에 독점되었던 시대에 거기에 대항하는 집단으로서의 도당은 직접 폭력수단에 호소하지 않으면 안 되었다. 즉 암살이나 협박, 반란 같은 수단에 의존했는데, 권력측도 이에 대항해서 투옥, 사형 등의 위력수단으로 준열한 탄압을 가했다. 그 결과 반정부세력은 종종 비밀결사의 형태를 취하게 되고, 당파의 목적·구성원·조직·활동은 일체 비밀에 붙여지고, 이 비밀의 유지를 위해서는 엄격한 규율이 준수되었다. 한편 정당은 근대적 의회정치와 더불어 발전해 온 조직이다.
정당 역사
근대적 의회정치는
제도를 말한다.
‘전국민을 대표하는 의원’의 개념은 고정적 이해의 대립을 초월한 공적인 국가의 성립을 전제로 하며, 이해관계나 의견의 대립을 무력이 아니라 토론과 다수결로 해결한다는 것은 다수와 소수를 초월한 전체라는 개념이 인정되고 있는 것을 의미하며, 근대적 의회정치가 시민사회를 기초로 하는 근대국가에서 비로소 가능하게 되었다는 것을 말해 주고 있다. 이리하여 의회 내부에서 동지로서 의원을 모아 다수파의 자리를 차지하기 위한 노력이 벌어지고, 의원의 원내조직으로서 정당이 생기게 된 것은 극히 당연한 일이었다. 의회의 세력이 한층 더 강화되어 정부가 의회의 다수파를 기초로 해서 설립되게 되자 정당도 정권의 획득·유지를 위해 그 결속을 한층 더 강화하게 되었고, 또 유권자의 범위가 한층 더 확대됨에 따라 정당 자체가 선거활동의 영역에까지 그 활동범위를 넓히게 되었다. 이렇게 정당의 활동은 의회정치의 구조와 불가분의 관계에 있다.
정당 목적
정당이라는 조직의 목적을 어떻게 보는가에 관해서는 특정의 주의 및 정책의 실현이라고 하는 설과 정권의 획득·유지라고 하는 설이 있는데, 보다 현실적인 관점에서 후자의 설이 타당하다고 해야 할 것이다. 버크(1729년-1797년)는 '정당이란 그 성원 전원의 지지를 받는 특정원리에 입각해서 공동의 노력으로 국가적 이익을 추진시키는 것을 목적으로 하는 일단의 사람들의 결합체'라고 하는 유명한 정의를 내렸으나 실제로는 정책단체라고 볼 수 없는 정당이 적지 않다. 가령 미국의 양대 정당은 대통령선거가 있는 해의 여름에 각기 당대회를 열어 당의 강령을 발표하나, 양당 사이에 정책상의 차이는 별로 없고, 또 어느 당이건 선거강령과 집권 후의 정책 사이에는 차이가 있게 마련이다. 뿐만 아니라 의회에서 의안이 채결될 때에는 같은 당 소속의 의원이 찬반 양진영으로 갈라지는 것이 보통이다. 이러한 정당을 정책을 중심으로 결집한 사람들의 집단으로 보는 것은 비현실적이며, 오히려 정권의 획득과 유지를 목적으로 하는 정치단체로 보는 편이 타당할 것이다.