Trải nghiệm thực tế với máy Mac M1 mới đã bắt đầu tích cực. Chúng rất nhanh. Nhanh thật. Nhưng tại sao? Điều kỳ diệu là gì?

Trên Youtube, tôi đã xem một người dùng Mac đã mua iMac vào năm ngoái. Nó đã được tối đa hóa với 40 GB RAM có giá khoảng 4000 đô la. Anh ta không tin vào việc chiếc iMac siêu đắt tiền của mình đã bị phá hủy bởi chiếc M1 Mac Mini mới của anh ta, thứ mà anh ta đã trả khoảng 700 USD.

Trong thử nghiệm thực tế sau khi thử nghiệm, các máy Mac M1 không chỉ đơn thuần nhích qua các máy Mac hàng đầu của dòng Intel mà chúng đang phá hủy chúng. Trong sự hoài nghi, mọi người bắt đầu hỏi làm thế quái nào mà điều này lại có thể xảy ra?

Nếu bạn là o ne của những người đó, bạn đã đến đúng nơi. Ở đây, tôi dự định chia nhỏ nó thành những phần dễ tiêu hóa chính xác những gì Apple đã làm với M1. Cụ thể những câu hỏi mà tôi nghĩ rằng rất nhiều người có là:

  1. Lý do kỹ thuật mà chip M1 này nhanh như vậy là gì?
  2. Apple đã thực hiện một số lựa chọn kỹ thuật thực sự kỳ lạ để biến điều này thành khả thi chưa?
  3. Làm thế nào sẽ dễ dàng cho các đối thủ cạnh tranh như Intel và AMD để thực hiện các thủ thuật kỹ thuật tương tự?
Tại sao chip M1 của Apple lại nhanh như vậy?
Tại sao chip M1 của Apple lại nhanh như vậy?

Chắc chắn bạn có thể thử Google điều này, nhưng nếu bạn cố gắng tìm hiểu những gì Apple đã làm ngoài những lời giải thích hời hợt, bạn sẽ nhanh chóng bị chôn vùi trong những biệt ngữ kỹ thuật cao như M1 sử dụng bộ giải mã lệnh rất rộng, bộ đệm sắp xếp lại (ROB) khổng lồ, v.v. Trừ khi bạn là một người đam mê phần cứng CPU, phần lớn điều này sẽ chỉ đơn giản là gobbledegook.

Để tận dụng tối đa câu chuyện này, tôi khuyên bạn nên đọc phần trước của tôi: RISC và CISC có nghĩa là vào năm 2020 ? Ở đó, tôi giải thích bộ vi xử lý (CPU) là gì cũng như các khái niệm quan trọng khác nhau như:

  • Kiến trúc Bộ hướng dẫn (ISA)
  • Pipelining
  • Tải / Kiến trúc cửa hàng
  • Mã vi mô so với hoạt động vi mô

Nhưng nếu bạn thiếu kiên nhẫn, tôi sẽ làm một phiên bản nhanh của tài liệu bạn cần hiểu để nắm được giải thích của tôi về chip M1.

Thông thường, khi nói đến chip của Intel và AMD, chúng ta nói đến bộ xử lý trung tâm (CPU) hoặc bộ vi xử lý. Như bạn có thể đọc thêm về câu chuyện RISC vs CISC của tôi , những hướng dẫn này sẽ lấy từ bộ nhớ. Sau đó, mỗi lệnh thường được thực hiện theo trình tự.

CPU ở mức cơ bản nhất của nó là một thiết bị có một số ô nhớ được đặt tên được gọi là thanh ghi và một số đơn vị tính toán được gọi là đơn vị logic số học (ALU). Các ALU thực hiện những thứ như cộng, trừ và các phép toán cơ bản khác. Tuy nhiên chúng chỉ được kết nối với thanh ghi CPU. Nếu bạn muốn cộng hai số, bạn phải lấy hai số đó từ bộ nhớ và vào hai thanh ghi trong CPU.

Dưới đây là một số ví dụ về các lệnh điển hình mà CPU RISC như được tìm thấy trên M1 thực hiện.

tải r1, 150 
tải r2, 200 
thêm r1, r2 
cửa hàng r1, 310

Đây r1và r2là những đăng ký tôi đã nói về. Các CPU RISC hiện đại không thể thực hiện các hoạt động trên các số không có trong một thanh ghi như thế này. Ví dụ: nó không thể thêm hai số nằm trong RAM ở hai vị trí khác nhau. Thay vào đó, nó phải kéo hai số này vào một thanh ghi riêng biệt. Đó là những gì chúng ta làm trong ví dụ đơn giản này. Chúng tôi lấy số ở vị trí bộ nhớ 150 trong RAM và đưa nó vào thanh ghi r1trong CPU. Tiếp theo, chúng tôi đưa nội dung của địa chỉ 200 vào thanh ghi r2. Chỉ sau đó, các số mới có thể được thêm vào với add r1, r2hướng dẫn.

Khái niệm thanh ghi đã cũ. Ví dụ: trên máy tính cơ học cũ này, thanh ghi là thứ chứa các số bạn đang thêm. Có thể là nguồn gốc của từ tính tiền . Sổ đăng ký là nơi bạn đăng ký số đầu vào.

M1 không phải là một CPU!

Nhưng đây là một điều rất quan trọng cần hiểu về M1:

M1 không phải là một CPU, nó là một hệ thống toàn bộ gồm nhiều chip được đặt trong một gói silicon lớn. CPU chỉ là một trong những con chip này.

Về cơ bản, M1 là một toàn bộ máy tính trên một con chip. M1 chứa CPU, Bộ xử lý đồ họa (GPU), bộ nhớ, bộ điều khiển đầu vào và đầu ra và nhiều thứ khác tạo nên toàn bộ máy tính. Đây là những gì chúng tôi gọi là Hệ thống trên chip (SoC).

Ngày nay, nếu bạn mua chip của Intel hay AMD, bạn thực sự nhận được số tiền tương đương với nhiều bộ vi xử lý trong một gói. Trong quá khứ, máy tính sẽ có nhiều chip vật lý riêng biệt trên bo mạch chủ của máy tính.

Tuy nhiên, vì ngày nay chúng ta có thể đặt rất nhiều bóng bán dẫn trên một khuôn silicon, các công ty như Intel và AMD đã bắt đầu đưa nhiều bộ vi xử lý vào một con chip. Hôm nay chúng tôi gọi các chip này là lõi CPU. Một lõi về cơ bản là một chip độc lập hoàn toàn có thể đọc các lệnh từ bộ nhớ và thực hiện các phép tính.

Điều này từ lâu đã trở thành tên của trò chơi về việc tăng hiệu suất: Chỉ cần thêm nhiều lõi CPU cho mục đích chung. Nhưng có sự xáo trộn về lực lượng. Có một người chơi trên thị trường CPU đang đi chệch xu hướng này.

Thay vì bổ sung thêm nhiều lõi CPU có mục đích chung, Apple đã đi theo một chiến lược khác: Họ đã bắt đầu thêm nhiều chip chuyên dụng hơn để thực hiện một số tác vụ chuyên biệt. Lợi ích của việc này là các chip chuyên dụng có xu hướng có thể thực hiện các tác vụ của chúng nhanh hơn đáng kể bằng cách sử dụng dòng điện ít hơn nhiều so với lõi CPU thông thường.

Đây không phải là kiến ​​thức hoàn toàn mới. Trong nhiều năm, các chip chuyên dụng như bộ xử lý đồ họa (GPU) đã nằm trong các card đồ họa Nvidia và AMD thực hiện các hoạt động liên quan đến đồ họa nhanh hơn nhiều so với các CPU thông thường.

Những gì Apple đã làm chỉ đơn giản là thực hiện một sự thay đổi triệt để hơn theo hướng này. Thay vì chỉ có lõi và bộ nhớ đa năng, M1 chứa nhiều loại chip chuyên dụng:

  • Bộ xử lý trung tâm (CPU) – “Bộ não” của SoC. Chạy hầu hết mã của hệ điều hành và ứng dụng của bạn.
  • Bộ xử lý đồ họa (GPU) – Xử lý các tác vụ liên quan đến đồ họa, chẳng hạn như hiển thị giao diện người dùng của ứng dụng và chơi game 2D / 3D.
  • Bộ xử lý hình ảnh (ISP) – Có thể được sử dụng để tăng tốc các tác vụ phổ biến được thực hiện bởi các ứng dụng xử lý hình ảnh.
  • Bộ xử lý tín hiệu kỹ thuật số (DSP) – Xử lý các chức năng toán học chuyên sâu hơn CPU. Bao gồm giải nén các tập tin nhạc.
  • Bộ xử lý thần kinh (NPU) – Được sử dụng trong điện thoại thông minh cao cấp để tăng tốc các tác vụ máy học (AI). Chúng bao gồm nhận dạng giọng nói và xử lý camera.
  • Bộ mã hóa / giải mã video – Xử lý việc chuyển đổi định dạng và tệp video hiệu quả.
  • Secure Enclave – Mã hóa, xác thực và bảo mật.
  • Bộ nhớ hợp nhất – Cho phép CPU, GPU và các lõi khác nhanh chóng trao đổi thông tin.

Đây là một phần lý do tại sao rất nhiều người làm việc trên hình ảnh và chỉnh sửa video với máy Mac M1 nhận thấy sự cải thiện tốc độ như vậy. Rất nhiều tác vụ họ làm, có thể chạy trực tiếp trên phần cứng chuyên dụng. Đó là những gì cho phép một chiếc Mac Mini M1 giá rẻ mã hóa một tệp video lớn mà không bị đổ mồ hôi trong khi một chiếc iMac đắt tiền có tất cả người hâm mộ của nó hoạt động hết công suất mà vẫn không thể theo kịp.

Bộ nhớ hợp nhất có thể khiến bạn bối rối. Nó khác với bộ nhớ dùng chung như thế nào? Và trước đây chia sẻ bộ nhớ video với bộ nhớ chính có phải là một ý tưởng tồi tệ khi mang lại hiệu suất thấp? Vâng, bộ nhớ được chia sẻ thực sự là tồi tệ. Nguyên nhân là do CPU và GPU phải thay phiên nhau truy cập bộ nhớ. Chia sẻ nó có nghĩa là tranh chấp để sử dụng cơ sở dữ liệu. Về cơ bản, GPU và CPU phải thay phiên nhau sử dụng một đường ống hẹp để đẩy hoặc kéo dữ liệu qua.

Đó không phải là trường hợp với bộ nhớ hợp nhất. Trong bộ nhớ hợp nhất, lõi GPU và lõi CPU có thể truy cập bộ nhớ cùng một lúc. Vì vậy, trong trường hợp này không có chi phí trong việc chia sẻ bộ nhớ. Ngoài ra, CPU và GPU có thể thông báo cho nhau về vị trí của một số bộ nhớ. Trước đây, CPU sẽ phải sao chép dữ liệu từ khu vực của bộ nhớ chính sang khu vực được sử dụng bởi GPU. Với bộ nhớ hợp nhất, giống như nói “Này ông GPU, tôi nhận được 30 MB dữ liệu đa giác bắt đầu từ vị trí bộ nhớ 2430.” Sau đó, GPU có thể bắt đầu sử dụng bộ nhớ đó mà không cần thực hiện bất kỳ thao tác sao chép nào.

Điều đó có nghĩa là bạn có thể đạt được hiệu suất đáng kể nhờ thực tế là tất cả các bộ đồng xử lý đặc biệt khác nhau trên M1 có thể nhanh chóng trao đổi thông tin với nhau bằng cách sử dụng cùng một nhóm bộ nhớ.

Nếu những gì Apple đang làm là rất thông minh, tại sao mọi người không làm điều đó? Ở một mức độ nào đó, chúng là như vậy. Các nhà sản xuất chip ARM khác đang ngày càng đưa vào các phần cứng chuyên dụng.

AMD cũng đã bắt đầu đưa GPU mạnh hơn vào một số chip của họ và dần dần hướng tới một số dạng SoC với các đơn vị xử lý tăng tốc (APU) về cơ bản là lõi CPU và lõi GPU được đặt trên cùng một khuôn silicon.

Tuy nhiên, có những lý do quan trọng khiến họ không thể làm điều này. SoC về cơ bản là một máy tính toàn bộ trên một con chip. Điều đó làm cho nó trở nên phù hợp tự nhiên hơn cho một nhà sản xuất máy tính thực tế, chẳng hạn như HP và Dell. Hãy để tôi làm rõ với một phép tương tự về ô tô ngớ ngẩn: Nếu mô hình kinh doanh của bạn là chế tạo và bán động cơ ô tô, thì việc bắt đầu sản xuất và bán ô tô nguyên chiếc sẽ là một bước nhảy vọt bất thường.

Đối với ARM Ltd. thì ngược lại, đây không phải là một vấn đề. Các nhà sản xuất máy tính như Dell hoặc HP có thể chỉ cần cấp phép sở hữu trí tuệ ARM và mua IP cho các chip khác, để thêm bất kỳ phần cứng chuyên dụng nào mà họ nghĩ SoC của họ nên có. Tiếp theo, họ chuyển thiết kế đã hoàn thành cho một xưởng đúc bán dẫn như GlobalFoundries hoặc TSMC , nơi sản xuất chip cho AMD và Apple ngày nay.

Ở đây chúng ta gặp một vấn đề lớn với mô hình kinh doanh của Intel và AMD. Mô hình kinh doanh của họ dựa trên việc bán các CPU đa dụng, mà mọi người chỉ cần cắm vào một bo mạch chủ PC lớn. Do đó, các nhà sản xuất máy tính có thể chỉ cần mua bo mạch chủ, bộ nhớ, CPU và card đồ họa từ các nhà cung cấp khác nhau và tích hợp chúng vào một giải pháp.

Nhưng chúng ta đang nhanh chóng rời xa thế giới đó. Trong thế giới SoC mới, bạn không lắp ráp các thành phần vật lý từ các nhà cung cấp khác nhau. Thay vào đó, bạn tập hợp IP (tài sản trí tuệ) từ các nhà cung cấp khác nhau.Bạn mua bản thiết kế cho card đồ họa, CPU, modem, bộ điều khiển IO và những thứ khác từ các nhà cung cấp khác nhau và sử dụng thiết kế đó để thiết kế SoC nội bộ. Sau đó, bạn có được một xưởng đúc để sản xuất cái này.

Bây giờ bạn có một vấn đề lớn, bởi vì cả Intel, AMD hay Nvidia đều không cấp phép tài sản trí tuệ của họ cho Dell hoặc HP để họ tạo ra một SoC cho máy của họ.

Chắc chắn Intel và AMD có thể bắt đầu bán toàn bộ SoC đã hoàn thiện. Nhưng những thứ này để chứa những gì? Các nhà sản xuất PC có thể có những ý tưởng khác nhau về những gì chúng nên chứa. Bạn có thể xảy ra xung đột giữa các nhà sản xuất Intel, AMD, Microsoft và PC về loại chip chuyên dụng nào nên được đưa vào vì chúng sẽ cần hỗ trợ phần mềm.

Đối với Apple, điều này thật đơn giản. Họ kiểm soát toàn bộ widget. Họ cung cấp cho bạn, ví dụ như thư viện Core ML để các nhà phát triển viết nội dung máy học . Việc Core ML chạy trên CPU của Apple hay Neural Engine là một chi tiết triển khai mà các nhà phát triển không cần quan tâm.

Vì vậy, tính toán không đồng nhất là một phần lý do nhưng không phải là lý do duy nhất. Các lõi CPU đa dụng nhanh trên M1, được gọi là Firestorm thực sự rất nhanh. Đây là một sự khác biệt lớn so với lõi CPU ARM trước đây vốn có xu hướng rất yếu so với lõi AMD và Intel.

Ngược lại, Firestorm đánh bại hầu hết các lõi Intel và gần như đánh bại các lõi AMD Ryzen nhanh nhất. Sự khôn ngoan thông thường cho rằng điều đó sẽ không xảy ra.

Trước khi nói về điều gì làm cho Firestorm nhanh, hãy hiểu ý tưởng cốt lõi của việc tạo ra một CPU nhanh thực sự là gì.

Về nguyên tắc, bạn hoàn thành kết hợp hai chiến lược:

  1. Thực hiện nhiều hướng dẫn hơn theo trình tự nhanh hơn.
  2. Thực hiện song song nhiều hướng dẫn.

Quay lại những năm 80, điều đó thật dễ dàng. Chỉ cần tăng tần số đồng hồ và các hướng dẫn sẽ kết thúc nhanh hơn. Mỗi chu kỳ xung nhịp là khi máy tính làm một việc gì đó. Nhưng điều này một cái gì đó có thể khá ít. Do đó, một lệnh có thể yêu cầu nhiều chu kỳ đồng hồ để hoàn thành vì nó được tạo thành từ một số tác vụ nhỏ hơn.

Tuy nhiên ngày nay việc tăng tần số đồng hồ là điều không thể. Đó là toàn bộ “Sự kết thúc của Định luật Moore” mà mọi người đã ấp ủ hơn một thập kỷ nay.

Vì vậy, nó thực sự là thực hiện song song càng nhiều lệnh càng tốt.

Có hai cách tiếp cận để giải quyết vấn đề này. Một là thêm nhiều lõi CPU. Từ quan điểm của một nhà phát triển phần mềm, nó giống như việc thêm các chủ đề . Mỗi lõi CPU giống như một luồng phần cứng. Nếu bạn không biết luồng là gì, thì bạn có thể coi nó là quá trình thực hiện một tác vụ. Với hai lõi, một CPU có thể thực hiện đồng thời hai tác vụ riêng biệt: hai luồng. Các tác vụ có thể được mô tả như hai chương trình riêng biệt được lưu trữ trong bộ nhớ hoặc nó thực sự có thể là cùng một chương trình được thực hiện hai lần. Mỗi luồng cần một số tính năng lưu giữ sổ sách, chẳng hạn như vị trí của chuỗi lệnh chương trình mà luồng hiện đang ở. Mỗi luồng có thể lưu trữ các kết quả tạm thời nên được giữ riêng biệt.

Về nguyên tắc, một bộ xử lý có thể chỉ có một lõi và chạy nhiều luồng. Trong trường hợp này, nó chỉ đơn giản là tạm dừng một luồng và lưu trữ tiến trình hiện tại trước khi chuyển sang luồng khác. Sau đó nó sẽ chuyển trở lại. Điều này không mang lại nhiều nâng cao hiệu suất và chỉ được sử dụng khi một luồng có thể thường xuyên tạm dừng để chờ đầu vào từ người dùng, dữ liệu từ kết nối mạng chậm, v.v. Đây có thể được gọi là luồng phần mềm. Chủ đề phần cứng có nghĩa là bạn có phần cứng vật lý bổ sung thực tế, chẳng hạn như các lõi bổ sung tùy ý sử dụng để tăng tốc mọi thứ.

Vấn đề với điều này là nhà phát triển phải viết mã để tận dụng lợi thế này. Một số tác vụ như phần mềm sever rất dễ viết như thế này. Bạn có thể tưởng tượng việc xử lý từng người dùng kết nối riêng biệt. Các tác vụ này độc lập với nhau đến mức có nhiều lõi là một lựa chọn tuyệt vời cho các máy chủ, đặc biệt là các dịch vụ dựa trên đám mây.

chip M1 của Apple

chip M1 của Apple

chip M1 của Apple

chip M1 của Apple

chip M1 của Apple

chip M1 của Apple

chip M1 của Apple

LEAVE A REPLY

Please enter your comment!
Please enter your name here