x86 아키텍처는 특별히 키보드와 함께 작동하도록 설계 되었습니까? 이 둘의 주요 차이점은 무엇입니까?
x86 아키텍처는 특별히 키보드와 함께 작동하도록 설계 되었습니까? 이 둘의 주요 차이점은 무엇입니까?
답변:
ARM
A는 RISC 동안 (축소 명령어 세트 컴퓨팅) 아키텍처 x86
A는 CISC (복합 명령 집합 컴퓨팅) 하나.
이러한 측면에서 핵심 차이점은 ARM 명령어는 레지스터에서 데이터를로드 및 저장하기위한 명령어가 몇 개있는 레지스터에서만 작동하고 x86은 메모리에서 직접 작동 할 수 있다는 것입니다. v8 ARM까지는 기본 32 비트 아키텍처로 다른 바이트보다 4 바이트 작업을 선호했습니다.
따라서 ARM은 더 간단한 아키텍처로, 작은 실리콘 영역과 많은 절전 기능을 제공하는 동시에 x86은 전력 소비와 생산 측면에서 전력 소모자가됩니다.
" x86 아키텍처는 특별히 키보드와 함께 작동하도록 설계 되었습니까? ARM은 이동성을 기대합니까? " 모바일 용 x86
키보드와 함께 작동하도록 특별히 설계되지 않았습니다 ARM
. 그러나 핵심 아키텍처 선택으로 인해 실제로 x86에는 IO
ARM과는 달리 직접 작업하기위한 지침이 있습니다 . 그러나 USB와 같은 특수 IO 버스에서는 이러한 기능에 대한 요구도 사라지고 있습니다.
인용 할 문서가 필요한 경우 Cortex-A 시리즈 프로그래머 안내서 (4.0) 에서 RISC와 CISC 아키텍처의 차이점에 대해 설명합니다.
ARM 프로세서는 RISC (Reduced Instruction Set Computer) 프로세서입니다.
x86과 같은 CISC (복합 명령 세트 컴퓨터) 프로세서에는 단일 명령으로 복잡한 작업을 수행 할 수있는 풍부한 명령 세트가 있습니다. 이러한 프로세서는 종종 기계 명령을 내부 작업 시퀀스 (마이크로 코드)로 디코딩하는 상당한 양의 내부 로직을 가지고 있습니다.
반대로 RISC 아키텍처는 더 적은 수의 더 많은 범용 명령을 가지고 있으며,이 명령은 훨씬 적은 수의 트랜지스터로 실행될 수있어 실리콘을보다 저렴하고 전력 효율적으로 만듭니다. 다른 RISC 아키텍처와 마찬가지로 ARM 코어에는 많은 수의 범용 레지스터가 있으며 많은 명령이 단일 주기로 실행됩니다. 간단한 주소 지정 모드가있어 레지스터 내용과 명령어 필드에서 모든로드 / 저장 주소를 확인할 수 있습니다.
ARM 회사는 또한 이러한 용어가 비즈니스에 적용되는 방법을 설명하는 아키텍처, 프로세서 및 장치 개발 문서 라는 제목의 문서를 제공합니다 .
명령어 세트 아키텍처를 비교하는 예제 :
예를 들어 응용 프로그램에서 일종의 바이트 단위 메모리 비교 블록 (컴파일러에서 생성, 세부 정보 건너 뛰기)이 필요한 경우 다음과 같이 보일 수 있습니다. x86
repe cmpsb /* repeat while equal compare string bytewise */
에있는 동안 ARM
가장 짧은 형태처럼 보일 수 있습니다 (등 오류 검사없이)
top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2 /* subtract r2 from r3 and put result into r2 */
beq top /* branch(/jump) if result is zero */
RISC 및 CISC 명령어 세트의 복잡성이 어떻게 다른지에 대한 힌트를 제공해야합니다.
몇 년 동안 ARM이 전력 소비 측면에서 상당히 실질적인 이점을 가지고있어 모든 종류의 배터리 작동 장치에 매력적이라는 사실을 제외하고는 키보드 또는 모바일에만 특정한 것은 없습니다.
실제 차이점에 비해 ARM에는 레지스터가 더 많고 인텔이 추가하기 훨씬 전에 대부분의 명령어에 대한 예측이 지원되며 거의 모든 곳에서 전력을 절약하기 위해 모든 종류의 기술 (원하는 경우 "트릭"이라고 함)을 오랫동안 통합했습니다.
두 인코딩 명령어의 방식에도 상당한 차이가 있습니다. 인텔은 매우 복잡한 가변 길이 인코딩을 사용하여 명령이 1에서 최대 15 바이트까지 차지할 수 있습니다. 이렇게하면 프로그램이 매우 작을 수 있지만 명령어 디코딩이 비교적 어려워집니다 (명령을 빠르게 병렬로 디코딩하는 것은 완전한 악몽과 같습니다).
ARM에는 ARM과 THUMB의 두 가지 명령어 인코딩 모드가 있습니다. ARM 모드에서는 모든 명령어에 액세스 할 수 있으며 인코딩은 매우 간단하고 빠르게 디코딩 할 수 있습니다. 불행히도 ARM 모드 코드는 상당히 큰 경향이 있으므로 프로그램이 인텔 코드보다 약 두 배의 메모리를 차지하는 것이 일반적입니다. Thumb 모드는이를 완화하려고합니다. 여전히 규칙적인 명령어 인코딩을 사용하지만 레지스터 수를 줄이거 나 대부분의 명령어에서 예측을 제거하고 분기 범위를 줄이는 등 대부분의 명령어를 32 비트에서 16 비트로 줄입니다. 내 경험에 적어도, 이것은 여전히 일반적으로 제공하지 않습니다 매우x86 코드가 얻을 수있는 밀도가 높은 코딩이지만 상당히 가깝고 디코딩은 여전히 간단하고 간단합니다. 코드 밀도가 낮다는 것은 일반적으로 동등한 성능을 얻기 위해 최소한 더 많은 메모리와 일반적으로 더 큰 캐시가 필요하다는 것을 의미합니다.
한 번에 인텔은 전력 소비보다 속도에 더 중점을 두었습니다. 그들은 주로 노트북의 맥락에서 전력 소비를 강조하기 시작했습니다. 랩톱의 경우 일반적인 전력 목표는 상당히 작은 랩톱의 경우 6 와트 정도였습니다. 가장 최근에 ( 훨씬 더 최근에) 휴대 기기 (휴대 전화, 태블릿 등)를 타겟팅하기 시작했습니다.이 시장에서 그들은 몇 와트 정도를보고 있습니다. ARM의 접근 방식은 ARM과 상당히 다르지만 ARM이 주로 마이크로 아키텍처를 강조한 제조 기술을 강조하면서 (ARM이 디자인을 판매하고 다른 사람들에게 제조를 떠난다는 것을 고려하면 놀라운 것은 아닙니다) 상당히 잘 해내 고있는 것 같습니다.
상황에 따라 CPU의 에너지 소비가 종종 전력 소비보다 더 중요합니다. 적어도 용어를 사용하면서 전력 소비는 (거의) 순간적으로 전력 사용량을 말합니다. 그러나 에너지 소비는 속도를 위해 정규화되므로 (예를 들어) CPU A가 작업을 수행하기 위해 2 초 동안 1 와트를 소비하고 CPU B가 동일한 작업을 수행하기 위해 1 초 동안 2 와트를 소비하는 경우 두 CPU 모두 동일한 총량을 소비합니다 CPU B를 사용하면 두 배 빠른 결과를 얻을 수 있습니다.
ARM 프로세서는 전력 소비 측면에서 매우 잘 작동합니다. 따라서 프로세서의 "존재"가 거의 지속적으로 필요하지만 실제로 많은 작업을 수행하지 않는 것이 필요한 경우 잘 작동 할 수 있습니다. 예를 들어 화상 회의를하는 경우 몇 밀리 초의 데이터를 수집하고 압축하여 전송하고 다른 사람으로부터 데이터를 수신하고 압축을 풀고 재생하고 반복합니다. 정말 빠른 프로세서조차도 많은 시간을 할애 할 수 없으므로 이와 같은 작업에서는 ARM이 실제로 잘 작동합니다.
인텔 프로세서 (특히 저전력 응용 제품을위한 Atom 프로세서)는 에너지 소비 측면에서 매우 경쟁력이 있습니다. 최대 속도에 가깝게 작동하는 동안 대부분의 ARM 프로세서보다 더 많은 전력을 소비하지만 빠르게 작업을 완료하므로 더 빨리 절전 모드로 돌아갈 수 있습니다. 결과적으로 우수한 배터리 수명과 우수한 성능을 결합 할 수 있습니다.
따라서이 두 가지를 비교할 때는 측정 대상에주의를 기울여야하며 정직한 관심 대상을 반영해야합니다. ARM은 전력 소비가 매우 우수하지만 상황에 따라 순간 전력 소비보다 에너지 소비에 대해 더 많은 관심을 가질 수 있습니다.
Jerry Coffin의 첫 번째 단락에 추가됩니다 . 즉, ARM 설계는 낮은 전력 소비를 제공합니다.
회사 ARM
는 CPU 기술 만 라이센스합니다. 그들은 물리적 칩을 만들지 않습니다. 이를 통해 다른 회사는 일반적으로 SOC 또는 시스템 온 칩 이라고하는 다양한 주변 기술을 추가 할 수 있습니다 . 기기가 태블릿, 휴대 전화 또는 차량 내 엔터테인먼트 시스템인지 여부 이를 통해 칩 공급 업체는 나머지 칩을 특정 응용 프로그램에 맞출 수 있습니다. 추가 혜택이 있습니다.
ARM
AMBA 를 통해 SOC 공급 업체를 지원 하여 SOC 구현자가 선반 타사 모듈을 구매할 수 있도록합니다. 이더넷, 메모리 및 인터럽트 컨트롤러와 같은 MIPS 와 같은 일부 다른 CPU 플랫폼은 이것을 지원 하지만 MIPS는 전력을 의식하지 않습니다.
이들 모두는 휴대용 / 배터리 작동 설계에 유리하다. 일부는 모든 곳에서 훌륭합니다. 또한 ARM
배터리 작동 장치의 역사가 있습니다. 애플 뉴턴 , Psion Organizers . PDA 소프트웨어 인프라 구조를 만들기 위해 일부 기업에 의해 활용 한 스마트 폰 입력 장치. 그러나 스마트 폰 과 함께 사용하기 위해 GUI를 다시 발명 한 사람들은 더 많은 성공을 거두었습니다 .
Open source
툴 세트 의 등장으로 operating systems
다양한 SOC
칩이 사용되었습니다. 폐쇄 된 조직은 ARM에 사용 가능한 모든 다양한 장치를 지원하려는 데 문제가 있습니다. 가장 인기있는 두 가지 셀룰러 플랫폼 인 Andriod 및 OSx / IOS는 Linux 및 FreeBSD, Mach 및 NetBSD OS를 기반으로합니다 . 공급 업체가 칩셋에 대한 소프트웨어 지원을 제공 할 수 Open Source
있도록 도와줍니다 SOC
.
x86 이 키보드에 사용되는 이유 는 자명합니다. 여기에는 소프트웨어가 있으며 더 중요하게는 해당 소프트웨어를 사용하도록 훈련 된 사람들이 있습니다. Netwinder 는 ARM
원래 키보드 용으로 설계된 시스템 중 하나 입니다. 또한 제조업체는 현재 서버 시장에서 ARM64를보고 있습니다. 연중 무휴 데이터 센터의 전력 / 열 문제입니다.
따라서이 칩을 중심으로 성장 하는 생태계 는 저전력 소비와 같은 기능만큼 중요합니다. ARM
1980 년대 중반에서 후반까지 저전력 고성능 컴퓨팅을 위해 노력해 왔으며 많은 사람들이 탑승하고 있습니다.
참고 1 : 알려진 전압에서 서로 통신하고 구동하려면 여러 칩에 버스 드라이버가 필요합니다. 또한 일반적으로 별도의 칩은 SOC 시스템 에서 공유 할 수있는 커패시터 및 기타 전원 구성 요소를 지원해야 합니다.
ARM은 이탈리아 스포츠카와 같습니다.
x86은 미국의 근육 자동차와 같습니다.
요약하자면, x86은 1974 년의 디자인을 기반으로 한 직선형이지만 많은 연료를 사용합니다. 팔은 연료를 거의 사용하지 않으며 모서리 (지점)의 속도가 느려지지 않습니다.
은유, 여기에 몇 가지 실제 차이점이 있습니다.
ARM 아키텍처는 원래 x86 기반 IBM PC 모델만큼 키보드 기반 개인용 컴퓨터 인 Acorn 개인용 컴퓨터 ( 1987 년경 Acorn Archimedes 및 RiscPC 참조)를 위해 설계되었습니다 . 이후 ARM 구현은 주로 모바일 및 임베디드 시장 부문을 대상으로했습니다.
원래 인텔에서 x86 개발을 수행하는 팀보다 훨씬 작은 엔지니어링 팀 ( Berkeley RISC 참조 )이 거의 동등한 성능의 단순한 RISC CPU를 설계 할 수있었습니다 .
그러나 현재 가장 빠른 ARM 칩은 대규모 엔지니어링 팀이 설계 한 매우 복잡한 다중 문제의 비 순차적 명령어 디스패치 단위를 가지고 있으며 x86 코어에는 명령어 변환 단위에서 제공하는 RISC 코어와 같은 것이있을 수 있습니다.
따라서 두 아키텍처 간의 현재 차이점은 개발 팀이 목표로하는 제품 틈새 시장의 특정 시장 요구와 더 관련이 있습니다. (임의의 견해 : ARM은 아마도 훨씬 더 강력한 전력 및 비용 제약이있는 임베디드 응용 프로그램으로 인해 라이센스 비용이 더 많이들 것입니다. 인텔은 PC 및 서버에서 수익 마진을 위해 성능 우위를 유지해야합니다. 따라서 구현 최적화가 다릅니다.)