운영 체제는 ISA를 기반으로 합니까, 아니면 마이크로아키텍처를 기반으로 합니까?

운영 체제는 ISA를 기반으로 합니까, 아니면 마이크로아키텍처를 기반으로 합니까?

예를 들어 'Linux'와 같은 운영 체제가 개발되면 서로 다른 마이크로아키텍처(Intel Pentium 및 AMD Athlon)에 대해 필요한 곳에 약간 다르게 작성(프로파일링)됩니까?

스택 교환 스레드 중 하나에서 AMD의 x64용 Linux 바이너리가 Intel x64 아키텍처에서도 실행될 수 있음을 확인했습니다. 여기에 링크 설명을 입력하세요

즉, Intel Pentium과 AMD Athlon이 동일한 ISA(x86)를 공유하더라도 서로 다른 Linux 소스 코드가 있어야 합니까? ISA를 구현하는 이유는 서로 다른 제어 및 데이터 레지스터 세트를 사용하기 때문입니다!

답변1

나는 개념의 핵심에 도달할 수 없었지만 운영 체제는 마이크로아키텍처(Intel Pentium 및 AMD Athlon)가 아닌 ISA(예: x86 및 x64)에 따라 다르다는 것을 스스로 확신하는 데 필요한 충분한 정보를 수집했습니다.

간단한 비유는 -

ISA처럼C 언어; '표준', 어떤 일을 하기 위해 따라야 하는 것.

반면마이크로아키텍처처럼C 컴파일러; 해당 규칙이나 표준을 시행하기 위한 '구현'입니다.

위키에서 발췌 -마이크로아키텍처

특정 ISA는 다양한 마이크로아키텍처로 구현될 수 있습니다. 구현은 주어진 설계의 다양한 목표나 기술 변화로 인해 달라질 수 있습니다.

ISA는 어셈블리 언어 프로그래머나 컴파일러 작성자가 보는 프로세서의 프로그래밍 모델과 거의 동일합니다.ISA에는 무엇보다도 실행 모델, 프로세서 레지스터, 주소 및 데이터 형식이 포함됩니다.마이크로아키텍처에는 프로세서의 구성 부분과 이러한 부분이 어떻게 상호 연결되고 상호 운용되어 ISA를 구현하는지가 포함됩니다.

서로 다른 마이크로아키텍처를 가진 머신은 동일한 명령어 세트 아키텍처를 가질 수 있으므로 동일한 프로그램을 실행할 수 있습니다.새로운 마이크로아키텍처 및/또는 회로 솔루션은 반도체 제조의 발전과 함께 새로운 세대의 프로세서가 동일한 ISA를 사용하면서 더 높은 성능을 달성할 수 있게 해줍니다.

서로 다른 마이크로아키텍처를 구별하지만 여전히 동일한 ISA를 구현하는 요소는 다음과 같습니다.

실행 유닛은 마이크로아키텍처에도 필수적입니다. 실행 단위에는 산술 논리 단위(ALU), 부동 소수점 단위(FPU), 로드/저장 단위, 분기 예측 및 SIMD가 포함됩니다. 이러한 장치는 프로세서의 작업이나 계산을 수행합니다. 실행 단위 수, 대기 시간 및 처리량을 선택하는 것은 핵심적인 마이크로 아키텍처 설계 작업입니다. 시스템 내 메모리의 크기, 대기 시간, 처리량 및 연결성 역시 마이크로아키텍처에 따른 결정입니다.

메모리 컨트롤러와 같은 주변 장치를 포함할지 여부와 같은 시스템 수준 설계 결정은 마이크로아키텍처 설계 프로세스의 일부로 간주될 수 있습니다. 여기에는 이러한 주변 장치의 성능 수준 및 연결성에 대한 결정이 포함됩니다.

관련 정보