• 인텔 맥은?

    • 멀티 코어 -> 모두 동일한 사양의 코어
    • GPU
    • 별도 T2 칩
  • 실리콘은?

    • 단일 SoC(System on a Chip)

    • 통합 메모리 아키텍처: CPU와 GPU가 메모리를 공유한다.

      • GPU 연산(Metal 이용)을 할 때, 전환 비용이 줄어서 좀 더 빠르다.
    • Video encoder & decoder

      • 효율적인 Pixel Format 사용(kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange)
    • Neural Engine

    • 머신러닝 가속기 -> 행렬 곱셉을 빠르게 할 수 있는 연산 유닛

      • 인텔 맥보다 더 빠르게 사용 가능

    • 비대칭 멀티프로세싱(AMP) -> 퍼포먼스용과 절전용 코어가 분리 되어 있음

      • Qos에 맞춰서 스케쥴링 되므로, 적절한 Qos 지정이 중요하다.

      • GCD를 사용하면 된다.

  • 보안 기능

    • Write XOR execute(W^X)

      • 메모리 페이지는 동시에 Writable하면서 Executable할 수 없다
      • 메모리 상태를 빠르게 바꿔주는 API 추가
        • 스레드 단위로 다른 권한을 가질 수 있다.
    • Kernel Integrity Protection

      • 하드웨어 레벨에서 커널의 무결성을 보증할 수 있다.
    • Pointer authentication

      • 포인터를 잘못쓰는 것을 방지해주는 기능
      • 아직 어플리케이션 단계에서는 적용되지 않았으나, 활성화 가능
        • https://developer.apple.com/documentation/security/preparing_your_app_to_work_with_pointer_authentication

    • Device Isolation

      • IO Device마다 별도의 IOMMU(I/O Memory Management Unit) 할당
      • 디바이스 끼리의 간섭을 막음
    • Kernel extension이 호환되지 않음 -> DriverKit으로의 전환을 권장

  • Rosseta

    • 돌릴 수 있는 어플리케이션

      • macOS 앱
      • 카탈리스트 앱
      • 게임
      • 웹 브라우저
      • JIT 컴파일러
      • APPLE GPU에서 직접 돌아가는 메탈
      • Core ML
    • 앱 설치 시점과 첫 실행때 변환을 시작

      • x86_64 시스템 콜을 에뮬레이트

      • 새로운 코드로의 JIT컴파일

      • 런타임 강화

      • XCode와 Instrument지원

    • AVX 는 미지원하므로 해당 기능이 있는 앱은 실행 불가능함

  • 부팅 과정

    • iOS, iPad OS의 secure boot 기반
    • 다양한 버전, 다수의 macOS 지원 강화
  • 부팅 옵션 버튼을 전원 버튼 길게 누르기로 일원화

  • 외장 디스크 부팅을 보안 수준을 낮추지 않아도 가능

  • csrutil을 통해서 임의적으로 낮출수도 있음 -> 개발의 편의를 위해서!

  • os별로 별도의 보안 정책 설정 가능

  • 로그인 기능

    • 외장 토큰 자원
    • 보이스 오버 지원
  • secure hibernation

  • 리커버리 모드

    • System Recovery 추가
      • Recovery 파티션도 복구 가능