임베디드 시스템은 시장에서 구할 수있는 대부분의 전자 제품의 핵심입니다. 하드웨어와 소프트웨어가 만나는 엔지니어링 구현입니다. 우리는 생체 인식 도어락, 비행기, 자동차, 심장 박동기 등의 미니 컴퓨터가있는 임베디드 시스템의 세계로 둘러싸여 있습니다. 이러한 자원이 제한되고 작고 스마트하며 강력한 시스템은 일상 업무에 도움이됩니다.
우리 몸이 어떻게 기능하는지, 신경계, 뇌 및 멀티 태스킹 능력에 대해 생각해 본 적이 있습니다. 이 모든 기능을 결합하면 생물학적 임베디드 시스템의 대략적인 그림을 얻을 수 있습니다. 우리의 뇌는 내부에서 발생하는 복잡한 기능을 숨기지 만 최대한의 잠재력을 제어 할 수 있습니다. 임베디드 시스템에 사용되는 프로세서 또는 컨트롤러의 복잡성도 동일합니다. 복잡한 세부 사항을 숨기고 작업 할 수있는 높은 수준의 인터페이스를 제공합니다. 추상화 수준의 경우 높은 수준의 프로그래밍 언어에서 두 개의 숫자를 추가하는 코드가 칩의 레지스터가 비트를 처리하고 사용자에게 출력을 다시 제공하는 방법을 관련시킬 수 있습니다.
프로세서 아키텍처
마이크로 프로세서와 마이크로 컨트롤러를 모두 지칭하는 중앙 처리 장치는 제어 장치 (CU) 및 산술 논리 장치 (ALU) 의 도움으로 특정 작업을 수행합니다. 명령이 RAM에서 전달됨에 따라 CPU는 변수를 만들고 값과 메모리를 할당하여 두 개의 도움 장치를 사용하여 작동합니다. CPU가 아키텍처의 도움을 받아이 모든 작업을 수행하는 방법을 아는 것이 정말 중요합니다. 마이크로 컨트롤러의 작동 방식에 대해 더 알고 싶다면이 기본 마이크로 컨트롤러 기사를 읽어보세요.
모든 CPU에는 프로그램과 데이터를 저장하기 위해 관련된 메모리가 있습니다. 프로그램 및 데이터는 CPU와 함께 작동하여 출력을 얻습니다. 프로그램은 지침을 제공하고 데이터는 작업 할 정보를 제공합니다. 프로그램 및 데이터에 액세스하기 위해 CPU는 버스를 사용합니다. 이러한 버스는 와이어이며보다 정확하게는 인쇄 회로 기판에서 볼 수있는 와이어 트레이스입니다. 지난 몇 년 동안 마이크로 컨트롤러와 마이크로 프로세서는 애플리케이션 또는 설계 요구 사항에 따라 다양한 아키텍처를 채택하여 진화 해 왔습니다. 마이크로 컨트롤러의 선택은 사용되는 아키텍처 유형에 영향을받습니다. 인기있는 아키텍처를 살펴 보겠습니다.
Von-Neumann / Princeton 건축
CPU가 프로그램 및 데이터에 액세스하는 방식은 CPU의 아키텍처에 대해 알려줍니다. 이전에는 프로그램 및 데이터에 액세스하기 위해 단일 버스가 사용되었습니다. 이러한 유형의 아키텍처는 Von Neumann Architecture 또는 더 간단히 Princeton Architecture 로 알려져 있습니다. 코드와 데이터를 얻기위한 단일 버스는 서로에게 방해 가되어 CPU의 처리 속도를 늦추는 것을 의미합니다. 각각은 서로가 가져 오기를 완료 할 때까지 기다려야하기 때문입니다. 이 제한은 Von-Neumann 병목 상태 라고도 합니다.
하버드 건축
프로세스 속도를 높이기 위해 Harvard Architecture 가 제안되었습니다. 이 아키텍처에는 데이터 및 프로그램을위한 별도의 데이터 버스가 있습니다. 따라서이 아키텍처가 4 개의 버스 사용을 제안했음을 의미합니다.
- CPU 안팎으로 데이터를 전달하는 데이터 버스 세트입니다.
- 데이터에 액세스하기위한 주소 버스 세트.
- 코드를 CPU로 전달하기위한 데이터 버스 세트.
- 코드에 액세스하기위한 주소 버스.
별도의 주소 버스와 데이터 버스를 사용한다는 것은 CPU 실행 시간이 짧다는 것을 의미하지만 아키텍처 설계시 복잡성이 발생합니다. Von Neumann 아키텍처는 약간 게으른 것처럼 들릴 수 있지만 단순한 디자인의 장점이 있습니다.
하버드 아키텍처는 CPU와 메모리 장치가 동일한 공간을 공유하거나 RAM 및 ROM이 처리 장치와 함께 내장 (온칩) 될 때 (예: 거리가 마이크론 및 밀리미터 단위 인 마이크로 컨트롤러에서) 구현하기가 훨씬 쉽습니다. 그러나 x86 IBM PC 와 같이 코드를 보유하는 메모리가 처리 장치 외부에있는 경우 동일한 아키텍처를 구현하기가 어렵습니다. 마더 보드 의 데이터와 주소 에 대한 별도의 와이어 트레이스 세트 는 보드를 복잡하고 비싸게 만듭니다. 프로세서의 예를 들어 이해합시다.
64 비트 데이터 버스와 32 비트 주소 버스가있는 프로세서는 Von-Neumann 아키텍처를 구현하기 위해 약 100 개의 버스 (데이터 및 주소 버스 용으로 96 개, 제어 신호용으로 몇 개)가 필요합니다. Harvard 아키텍처로 구현 된 경우 동일한 구조를 사용하면 프로세서에서 많은 핀이 나오면서 약 200 개의 이중 와이어 트레이스 비용이 발생합니다. PC와 워크 스테이션을 위해 구현 된 순수한 Harvard 아키텍처를 보지 못하는 것과 같은 이유입니다. 대신 CPU 캐시 메모리가있는 메모리 계층 구조가 프로그램과 데이터를 분리하는 데 사용되는 수정 된 Harvard 아키텍처 가 사용됩니다. 메모리 계층은 프로세스의 응답 시간 계층에 따라 스토리지를 분리합니다.
명령어 세트 아키텍처
프로그램 (코드)이 시스템 (RAM)의 메모리에로드되면 CPU (마이크로 프로세서와 마이크로 컨트롤러 모두를 지칭함)에서 가져 와서 데이터에 대해 작동합니다. 특정 작업 및 명령. 이러한 명령이 특정 트랜지스터에서 작동함에 따라 한 로직 레벨에서 다른 로직 레벨로 이동하여이를 발생시킵니다. 따라서 기본적으로 인간 프로그래머는 명령의 도움으로 프로세서와 통신합니다. 모든 CPU에는 아키텍처와 기능을 기반으로 한 명령어 모음 인 자체 명령어 세트가 있습니다.
CPU는 이러한 명령어를 opcode 라고도하는 0과 1의 조합으로 이해합니다. 인간 프로그래머의 경우 CPU와 관련된 모든 명령에 대해 0과 1의 조합을 기억하기가 정말 어렵습니다. 인간 프로그래머의 작업을 쉽게 유지하기 위해 이러한 명령어의 고급 인터페이스가 제공되며 컴파일러는 처리를 위해이를 0과 1의 형태로 변환합니다. 또한 각 CPU의 명령어 세트에는 이해할 수있는 명령어 수가 제한되어 있습니다.
CPU의 성능
CPU 성능과 관련된 CPU 클럭 속도 라는 용어를 들어 보셨을 것 입니다. CPU는 일반적으로 25GHz 클럭 속도와 같은 MHz (Mega-Hertz) 또는 GHz (Giga-Hertz) 단위의 클럭 속도를 갖습니다. 클럭 속도와 관련된 숫자는 CPU 내부의 클럭이 초당 사이클로 몇 번 틱하는지 알려줍니다. 클럭 속도의 실용성은 CPU가 한 번에 실행할 수있는 프로그램 수에 비례하는 CPU의 클럭 사이클을 기반으로 명령이 수행된다는 사실로 이해할 수 있습니다.
CPU 의 성능은 프로그램에 기록 된 명령어의 수, 명령어가 많을수록 CPU가이를 수행하는 데 걸리는 시간에 따라 달라집니다. 또한 각 명령어가 실행되는 클럭 사이클 수에 따라 달라지며, 특정 명령어는 다른 명령어보다 실행되는 데 더 많은 클럭 사이클이 필요하므로 CPU 성능이 저하됩니다. 프로그램의 명령어와 각 명령어를 수행하는 데 필요한 사이클은 서로 반비례합니다. 하나를 변경하면 다른 하나에 영향을 미칩니다. 이것이 CPU 산업이 분열되는 지점입니다.
RISC 및 CISC 명령어 세트 아키텍처
위에서 말했듯이 프로그램의 실행과 CPU의 성능은 프로그램의 명령어 수에 따라 달라지며, 여기서 명령어는 명령어 세트의 일부로 특정 CPU에 제안되고 두 번째 요소는 클럭 사이클의 수입니다. 각 명령이 실행됩니다. 이 두 가지 요소를 기반으로 현재 두 가지 명령어 세트를 사용할 수 있습니다. 가장 빠른 것은 복잡한 명령어 세트 컴퓨팅 (CISC) 이고 다른 하나는 감소 된 명령어 세트 컴퓨팅 (RISC)입니다. RIC과 CISC Architecture 의 차이점 을 이해하기 위해 이러한 각 아키텍처에 대해 자세히 논의 해 보겠습니다.
복잡한 명령어 세트 컴퓨팅 (CISC)
CISC는 Complex Instruction Set Computing을 의미합니다. CISC의 주된 동기는 프로그램이 실행하는 명령어 수 를 줄이는 것입니다. 이것은 주소 모드, 로딩 등과 같은 많은 간단한 명령어를 결합하여 단일 복합 명령어를 형성함으로써 수행됩니다. CISC 명령은 간단한 명령의 일련뿐만 아니라 실행하는 하나 이상의 클록 사이클을 소요 특별한 지침이 포함되어 있습니다. CISC 명령어는 레지스터의 개입없이 메모리에서 직접 작동 할 수 있습니다. 즉, 값로드 및 메모리 (RAM) 요구 사항과 같은 몇 가지 기본 명령어가 필요하지 않습니다. CISC 명령어 는 소프트웨어보다 하드웨어를 더 강조 합니다. 즉, 컴파일러에 부하를 가하는 대신CISC 는 트랜지스터를 하드웨어로 사용하여 명령어를 디코딩하고 구현합니다. 그러나 명령이 복잡하고 여러 단계로 구성되어 있기 때문에 더 많은 클럭 사이클에서 실행됩니다.
당신이 책을 열고 3 읽어 말했다 때 관련하는 간단한 비유이다 번째의 장의 2 차 페이지를. 이 일련의 활동에서는 페이지를 3 장으로 셔플 링 한 다음 장의 두 번째 페이지로 이동 한 다음 읽기를 시작하는 것보다 가방에서 책을 찾는 것과 같은 여러 단계를 수행합니다. 44 페이지 (3 번째 장의 2 번째 페이지 번호)를 읽는 단일 명령어에 결합 된 일련의 단계 는 CISC 명령어를 얻습니다.
감소 된 명령어 세트 컴퓨팅 (RISC)
최초의 통합 칩은 오실레이터였던 1958 년 Jack Kilby가 설계했으며 1970 년에는 인텔에서 처음으로 상용 마이크로 프로세서가 나왔습니다. 프로세서의 시작 부분에는 CISC가 없었습니다. 그러나 무거운 컴퓨팅 요구로 인해 CISC 아키텍처는 더욱 복잡해지고 다루기가 어려워졌습니다. RISC로 알려진 CISC 아키텍처의 전체 재 설계는 John Coke 가 IBM 에서 나왔습니다. 따라서 두 아키텍처를 구별하기 위해 RISC 및 CISC 라는 용어 가 도입되었습니다.
RISC는 감소 된 명령어 세트 컴퓨팅을 나타냅니다. RISC의 주된 동기 는 명령의 크기와 실행에 균일 성 을 도입하는 것이 었습니다. 이는 사이클 당 하나의 명령어로 실행될 수있는 간단한 명령어 세트를 도입하여 수행되었으며, 이는 각 명령어를 실행하는 데 대략 한 클럭 사이클이 걸리는 다른 명령어로로드 및 저장하는 것과 같은 복잡한 명령어를 분리하여 수행됩니다. RISC 아키텍처는 단일 클록 사이클에서 실행 될 수있는 동일한 크기의 간단한 지침이 포함되어 있습니다. RISC 기반 머신은 각 명령어를 레지스터에로드 할 때 값을 보유하기 위해 CISC보다 더 많은 RAM이 필요합니다. 주기 당 단일 명령을 실행하면 RISC 기반 기계에 파이프 라이닝의 이점이 있습니다.(파이프 라이닝은 첫 번째 명령이 실행되기 전에 다음 명령이로드되는 프로세스이므로 실행 효율성이 높아집니다.) RISC 아키텍처 는