Tìm Hiểu Về Cách Làm Việc Của CPU (Phần II)

CPU (Central Processing Unit) – cũng sẽ được gọi là microprocessor hay processor – là một đơn vị giải quyết dữ liệu trung tâm. Tuy mỗi một bộ vi xử lý đều có thiết kế của riêng nhưng mọi thứ đều có và một nguyên lý chung – đó chính là thứ mà chúng tôi muốn giới thiệu đến các bạn trong bài này. Chúng tôi sẽ giới thiệu đến kiến trúc CPU chung nhất để các bạn có thể biết thêm về các mặt hàng của Intel và AMD cũng như những khác nhau cơ bản giữa chúng. Bài trước chúng ta đã được biết những tin tức cơ bản về Clock và External Clock hoạt động trong CPU, bài này sẽ tiếp tục với sơ đồ của 1 CPU và bộ nhớ lưu trữ.

  • Tìm hiểu về việc làm việc của CPU (Phần I)

Sơ đồ khối của một CPU

Trên hình 6 bạn cũng có thể có thể thấy được một sơ đồ khối cơ bản của một CPU hiện đại. Có nhiều sự khác nhau giữa các kiến trúc của AMD và Intel. Việc hiểu được các kiến thức cơ bản này sẽ là một bước để các bạn cũng đều có thể hiểu được cách các CPU của Intel và AMD làm việc như làm sao và sự không giống nhau giữa chúng.

Sơ đồ khối cơ bản của một CPU
Hình 6: Sơ đồ khối cơ bản của 1 CPU

Dòng nét chấm trên hình 6 bộc lộ phần “body” của CPU, vì bộ nhớ RAM được đặt bên ngoài CPU. Đường dữ liệu (datapath) giữa bộ nhớ RAM và CPU thường là 64-bit (hoặc 128-bit khi dùng cấu hình bộ nhớ kênh dual), đang sử dụng clock nhớ hoặc clock ngoài của CPU (clock thấp). Số lượng bit đã sử dụng và tốc độ clock cũng có thể được phối hợp trong một khối có tên thường gọi là vận tốc truyền tải, tính theo MB/s. Để tính toán vận tốc truyền tải, công thức được thực hiện tính tốc độ này bằng số bit x clock/8. Với hệ thống sử dụng các bộ nhớ DDR400 trong cấu hình kênh đơn (64 bit) thì vận tốc truyền đạt sẽ là 3.200MB/s, còn với hệ thống tựa như sử dụng các bộ nhớ kênh dual (128 bit) sẽ được vận tốc truyền đạt bộ nhớ là 6.400 MB/s.

Tất cả các mạch bên trong phần đánh dấu chấm chạy ở vận tốc clock trong của CPU. Tùy thuộc vào CPU mà một số phần bên trong nó cũng có thể có thể chạy ở tốc độ clock cao hơn. Cũng vậy, đường dữ liệu giữa các khối CPU có thể rộng hơn, tức là truyền tải nhiều bit hơn trên mỗi chu kỳ clock 64 hoặc 128. Ví dụ, đường dữ liệu giữa bộ nhớ cache L2 và cache chỉ lệnh L1 trên các bộ vi giải quyết hiện đại thường là 256 bit. Số bit được truyền đạt trên mỗi chu kỳ clock càng cao thì sự truyền đạt sẽ được thi hành càng nhanh (hay nói cách khác, vận tốc truyền tải sẽ cao hơn). Trên hình 5, chúng tôi đã sử dụng một mũi tên đỏ giữa bộ nhớ RAM và cache nhớ L2; mũi tên giữa các khối khác để diễn tả tốc độ clock không giống nhau và chiều rộng của đường dữ liệu đã sử dụng.

Memory Cache

Memory Cache là một kiểu bộ nhớ hiệu suất cao, cũng sẽ được gọi là bộ nhớ tĩnh. Kiểu bộ nhớ đã sử dụng trên bộ nhớ RAM chính của máy tính được coi là bộ nhớ động. Bộ nhớ tĩnh tiêu tốn nhiều năng lượng điện hơn, đắt hơn và có kích thước vật lý lớn hơn so với bộ nhớ động, tuy nhiên nó lại chạy nhanh hơn. Nó cũng có thể làm việc với cùng tốc độ clock của CPU, điều mà bộ nhớ động chẳng thể thực hành được.

Vào “thế giới bên ngoài” để tìm nạp dữ liệu khiến cho CPU cần làm việc ở tốc độ clock thấp hơn do thế mà kỹ thuật cache nhớ được dùng tại đây để khắc phục yếu điểm này. Khi CPU nạp dữ liệu từ một vị trí nhớ nào đó thì mạch mang tên thường gọi là memory cache controller (mạch này chưa được vẽ trong hình 6) nạp vào cache nhớ một khối dữ liệu bên dưới địa thế hiện hành mà CPU đã nạp. Vì các chương trình được thi hành theo thứ tự nên địa thế nhớ kế đến mà CPU sẽ đòi hỏi cũng đều có thể là vị trí ngay dưới vị trí nhớ mà nó đã nạp. Do memory cache controller đã nạp rất nhiều dữ liệu dưới địa thế nhớ đầu tiên được đọc bởi CPU nên dữ liệu kế tiếp sẽ ở bên trong cache nhớ, bởi vì vậy CPU không luôn phải thực hành thao tác lấy dữ liệu bên ngoài: nó đã được nạp vào bên trong cache nhớ nhúng trong CPU, bởi vì nhúng trong CPU mà chúng cũng có thể có thể truy cập bằng tốc độ clock trong.

Cache controller luôn luôn quan sát các địa thế nhớ đã và đang được nạp dữ liệu từ một vài địa thế nhớ sau khi vị trí nhớ vừa được đọc. Một tỉ dụ thực tế, nếu một CPU đã nạp dữ liệu được lưu tại địa chỉ 1.000 thì cache controller sẽ nạp dữ liệu từ “n” địa chỉ với sau địa chỉ 1.000. Số “n” được xem là trang; nếu một bộ vi giải quyết này làm việc với trang 4KB (giá trị điển hình) thì nó sẽ nạp dữ liệu từ những địa chỉ 4.096 dưới địa thế nhớ hiện hành đang được nạp (địa chỉ 1.000 trong ví dụ). 1KB bằng 1.024 byte, do đấy là 4,096 chứ không phải 4,000. Chúng mình đã thể hiện ví dụ này trên hình 7.

Memory cache controller làm việc như thế nào
Hình 7: Memory cache controller làm việc như ra sao

Memory cache càng lớn thì cơ hội cho dữ liệu yêu cầu bởi CPU ở đây càng cao, bởi vì thế CPU sẽ giảm sự truy cập trực tiếp vào bộ nhớ RAM, do đấy công suất hệ thống tăng (khi CPU cần truy cập trực diện vào bộ nhớ RAM thì nó phải thực hiện ở vận tốc clock thấp hơn nên giảm công suất của toàn hệ thống).

Chúng ta coi là “hit” khi CPU nạp một dữ liệu yêu cầu từ cache và “miss” nếu dữ liệu đòi hỏi không có ở đó và CPU càng phải truy cập vào bộ nhớ RAM của hệ thống.

L1 và L2 tương ứng là “Level 1” và “Level 2”, được đại diện cho khoảng cách từ chúng đến lõi CPU (khối thực thi). Một sự ngờ vực hay có ở đây là tại sao có đến 3 bộ nhớ Cache (L1 data cache, L1 instruction cache và L2 cache). Hãy chú ý trên hình 6 và bạn sẽ thấy được rằng L1 instruction cache làm việc như một “input cache”, trong lúc đấy L1 data cache làm việc như một “output cache”. L1 instruction cache – thường nhỏ hơn L2 cache – chỉ hữu hiệu khi chương trình bắt đầu tái diễn một phần nhỏ của nó (loop), vì các chỉ lệnh yêu cầu sẽ gần hơn với khối tìm nạp.

Trên trang chi tiết kỹ thuật của một CPU, L1 cache có thể được thể hiện bằng một hình ảnh tận gốc khác. Một số nhà cung cấp liệt kê hai L1 cache biệt lập (đôi khi gọi cache chỉ lệnh là “I” và cache dữ liệu là “D”), một số hãng ghi số lượng của cả hai là 128 KB nhưng điều đó có tức là 64 KB cho cache chỉ lệnh và 64 KB cho cache dữ liệu. Mặc dù vậy đối với những CPU Pentium 4 và Celeronn đời sau dựa theo socket 478 và 775 thì không có hiện tượng này.

Các bộ vi xử lý Pentium 4 (và các bộ vi xử lý Celeron sử dụng socket 478 và 775) không có L1 instruction cache mà không dừng lại ở đó chúng có 1 trace execution cache, đây là cache được đặt giữa khối giải mã và khối thực thi. Chính vì thế đây là L1 instruction cache nhưng tên đã được thay đổi và ở một địa thế cũng khác. Chúng ta đang nhắc đến đến điều đó là do đây là một lỗi rất thường diễn ra khi nghĩ rằng các bộ vi xử lý Pentium 4 không có L1 instruction cache. Vậy khi đối chiếu Pentium 4 với các CPU khác mọi người hãy nghĩ rằng L1 cache của nó nhỏ hơn nhiều.

Rẽ nhánh

Nhưng chúng mình đã nhắc đến đến một vài lần từ trước, một trong những vấn đề chính đối với các CPU là có quá độ ‘”miss” đối với cache, vì khối tìm nạp phải truy cập trực diện vào bộ nhớ RAM (chậm), cần làm chậm cả hệ thống.

Thường sử dụng cache nhớ tránh được biết bao việc này nhưng có một giải pháp tiêu biểu cũng đều có thể xử lý việc này đó là rẽ nhánh: Nếu ở phần giữa chương trình có một chỉ lệnh JMP (“jump” hoặc “go to”) gửi chương trình đến một vị trí nhớ khác hoàn toàn, địa thế mới này không được nạp trong L2 memory cache, mà chỉ làm cho khối tìm nạp vào vị trí đó 1 cách trực tiếp trong bộ nhớ RAM. Để giải quyết vấn đề này, cache controller của các CPU tối tân phân tích khối nhớ mà nó đã nạp và bất cứ bao giờ có tìm thấy một chỉ lệnh JMP thì nó sẽ nạp khối nhớ này vào vị trí đó trong L2 memory cache trước khi CPU giải quyết chỉ lệnh JMP đó.

Giải pháp nhánh không điều kiện
Hình 8: Giải pháp nhánh không điều kiện

Điều này quả mang lại sự thực thi đơn giản hơn nhiều, vấn đề ở này là lúc chương trình có một rẽ nhánh điều kiện, nghĩa là địa chỉ mà chương trình sẽ vào phụ thuộc vào một điều kiện vẫn không được biết. Ví dụ, nếu a = b thì vào địa chỉ 2. Chúng tôi minh họa tỉ dụ này trên hình 9. Điều này sẽ tạo nên một “miss” đối với cache, vì các giá trị của a và b hoàn toàn chưa được biết đến và cache controller sẽ chỉ đang xem xét các chỉ lệnh giống JMP. Giải pháp thực hành ở đây là: cache controller nạp cả hai điều kiện vào cache nhớ. Sau khi CPU xử lý chỉ lệnh rẽ nhánh, nó sẽ dễ dàng loại bỏ một tình huống chưa được chọn. Việc nạp bộ nhớ cache với dữ liệu chẳng cần có sẽ tốt hơn so với việc truy cập vào bộ nhớ RAM.

Giải pháp rẽ nhánh có điều kiện
Hình 9: Giải pháp rẽ nhánh có điều kiện

  • Tìm hiểu về kiểu cách làm việc của CPU (Phần cuối)

Sưu Tầm: Internet – Kênh Tin: TopVn

Công Ty Nạp Mực In HCM

Tel: 02873007898


Bài Viết Liên Quan


Công Ty Nạp Mực In HCM

Tel: 02873007898

Bài Viết Khác