Tác giả: Xiao Niu Hululu | https://xiaoniuhululu.com Nhiều bài viết thú vị hơn về kỹ năng máy tính, kiến thức cơ bản về JAVA, các cuộc phỏng vấn, thông tin liên quan đến phát triển nghề nghiệp, v.v. đều có trên tài khoản công khai "Xiao Niu Hululu".
Xin chào mọi người, tôi là Hululu. Trong thời kỳ đầu của máy tính, kỷ nguyên bộ xử lý Intel Pentium, CPU bộ xử lý đơn trên bo mạch chủ của họ khá lớn. Để cải thiện sức mạnh xử lý điện toán tổng thể của máy tính, nhiều bộ xử lý như vậy thường được cài đặt trên bo mạch chủ để có thể dễ dàng khắc phục những hạn chế của bóng bán dẫn.
CPU vật lý
CPU vật lý là CPU trên phần cứng, nó cũng là số lượng khe cắm CPU trên bo mạch chủ và là số lượng CPU thực sự được cấu hình trên máy tính.
Chúng ta có thể kiểm tra số lượng CPU vật lý của máy tính thông qua lệnh cat /proc/cpuinfo | grep 'physical id'|
Trong Windows, chúng ta có thể nhập systeminfo vào lệnh cmd để kiểm tra số lượng CPU.
CPU vật lý giao tiếp với các thành phần bo mạch chủ khác thông qua các đầu nối hoặc khe cắm và giao tiếp với các bộ xử lý khác nhau của hệ thống thông qua bus hệ thống. Tuy nhiên, tốc độ truyền của bus hệ thống rất chậm so với tốc độ của CPU, điều này thường dẫn đến. nghẽn cổ chai, khiến không thể tận dụng tối đa sức mạnh tính toán do mỗi CPU cung cấp. Vì vậy, các kỹ sư tự hỏi liệu họ có thể thu nhỏ các thành phần cốt lõi trong bộ xử lý và đóng gói chúng thành một con chip duy nhất hay không. Đây là những lõi vật lý, có thể được coi là các đơn vị tính toán.
Số lõi CPU
Số lõi CPU, lõi CPU thực về mặt vật lý, có các thành phần mạch độc lập và bộ nhớ đệm L1 và L2, đồng thời có thể thực hiện các lệnh một cách độc lập. Thông thường số lõi dưới mỗi CPU là cố định. Nếu máy tính của chúng ta có hai CPU vật lý và mỗi CPU là lõi kép thì máy tính có tổng cộng bốn lõi.
Trong Linux, chúng ta có thể đếm số lõi CPU thông qua lệnh cat /proc/cpuinfo | grep "cpu cores" |
Trong Windows, bạn có thể xem nó thông qua trình quản lý tác vụ:
Chúng ta hãy xem sơ đồ kiến trúc của CPU đơn lõi và CPU đa lõi lần lượt:
- Nhiều CPU vật lý, CPU vượt qua
xe buýt hệ thống
Hiệu quả truyền thông tương đối thấp.
- CPU đa lõi, các lõi khác nhau vượt qua
Bộ đệm L3 và bus trên chip
Để giao tiếp, bộ nhớ chính và các thiết bị ngoại vi giao tiếp với CPU thông qua bus
Để bù đắp sự khác biệt về hiệu năng giữa CPU và bộ nhớ, CPU Cache, còn được gọi là bộ đệm, đã được đưa vào bên trong CPU. Bộ nhớ đệm CPU sử dụng chip SRAM (Bộ nhớ truy cập ngẫu nhiên tĩnh), còn được gọi là bộ nhớ truy cập ngẫu nhiên tĩnh. Chỉ cần có điện thì dữ liệu vẫn còn đó nhưng khi mất điện thì dữ liệu sẽ bị mất.
CPU Cache thường được chia thành ba cấp độ cache có kích thước khác nhau, đó là L1 Cache, L2 Cache và L3 Cache.
phần |
Thời gian truy cập CPU |
Nhận xét |
Bộ đệm L1 |
2~4 chu kỳ đồng hồ |
Mỗi lõi CPU có bộ đệm L1 riêng. Bộ đệm L1 thường được chia thành. bộ nhớ đệm lệnh Và Bộ đệm dữ liệu 。 |
Bộ đệm L2 |
10~20 chu kỳ đồng hồ |
Bộ đệm L2 cũng có trên mỗi lõi CPU. |
Bộ đệm L3 |
Chu kỳ đồng hồ 20~60 |
Bộ đệm L3 là Được chia sẻ bởi nhiều lõi CPU của |
Chúng ta có thể thấy rằng bộ đệm gần lõi CPU hơn có tốc độ truy cập nhanh hơn và dung lượng nhỏ hơn. Cache quá trình đọc dữ liệu. Cũng giống như bộ đệm cơ sở dữ liệu, dữ liệu đầu tiên được tìm kiếm trong bộ đệm nhanh nhất. Nếu không có lần truy cập nào trong bộ đệm (Cache miss), dữ liệu sẽ được tìm kiếm ở cấp độ tiếp theo. cuối cùng được tìm kiếm trong bộ nhớ.
CPU logic
Trong lịch sử, để cải thiện hiệu suất của CPU, các tính năng như siêu vô hướng, thực thi không theo thứ tự, một số lượng lớn thanh ghi và đổi tên thanh ghi, bộ giải mã đa lệnh, thực thi dự đoán và bộ đệm đã được giới thiệu. CPU có lượng tài nguyên lớn và CPU cũng có thể dự đoán và thực hiện các lệnh một cách thông minh. Điều này dẫn đến thực tế là hầu hết tài nguyên của CPU hầu như không hoạt động và lãng phí là điều đáng xấu hổ. Để tăng thêm hiệu suất của CPU, các kỹ sư nhận thấy rằng họ có thể sao chép hoàn toàn một số thành phần bên trong của CPU, chẳng hạn như. dưới dạng các thanh ghi hoặc bộ đệm cấp 1. Để chạy luồng thứ hai, hãy để các tài nguyên nhàn rỗi này chạy trên một luồng khác. Mặc dù chỉ có một CPU vật lý nhưng hệ điều hành lại được cung cấp hai "CPU logic" thay vì một CPU duy nhất, nhờ đó "lừa" hệ điều hành thành công.
CPU logic là gì?
Hệ điều hành có thể sử dụng CPU logic để mô phỏng tác động của CPU thực. Trước đây, khi chưa có bộ xử lý đa lõi, CPU vật lý chỉ có một lõi vật lý nhưng giờ đây với công nghệ đa lõi, lõi vật lý có thể thực hiện các hoạt động tốc độ cao và khiến ứng dụng tưởng như có hai CPU đang hoạt động. Theo cách này, một CPU vật lý có thể được coi là Được sử dụng như nhiều "CPU", tức là các CPU logic.
Trong trường hợp bình thường, CPU logic = số lượng CPU vật lý * số lõi. Nếu CPU máy tính của chúng ta hỗ trợ công nghệ siêu phân luồng và được bật, số lượng CPU logic gấp đôi số lõi CPU logic = số lượng CPU vật lý *. Số lõi trên mỗi lõi*2, công nghệ siêu phân luồng có thể tạo ra 1 lõi trong bộ xử lý hoạt động giống như 2 lõi trong hệ điều hành.
Số lượng luồng trong CPU?
Có một điều khác mà chúng ta cần biết: số lượng bộ xử lý logic = số lượng luồng của CPU, nghĩa là có bao nhiêu luồng có thể được mở với số lượng bộ xử lý logic như nhau. Đối với CPU, số luồng luôn lớn hơn hoặc bằng số lõi. Một lõi tương ứng với ít nhất một luồng, nhưng thông qua công nghệ siêu phân luồng, một lõi có thể tương ứng với hai luồng, nghĩa là nó có thể chạy hai luồng cùng lúc.
Nói chung, số lượng CPU vật lý × số lõi phải bằng số lượng CPU logic. Nếu chúng không bằng nhau, điều đó có nghĩa là CPU của máy tính Windows hỗ trợ công nghệ siêu phân luồng.
Công nghệ siêu phân luồng
Khái niệm số luồng CPU chỉ dành cho CPU Intel Đối với CPU AMD chỉ có khái niệm số lõi và không có số luồng. Vì được triển khai thông qua công nghệ Siêu phân luồng của Intel nên Intel đã đưa công nghệ này đến thị trường tiêu dùng ngay từ năm 2002 với bộ xử lý Northwood Pentium 4 HT.
Công nghệ siêu phân luồng (SMT) có thể mô phỏng một luồng vật lý thành hai luồng để sử dụng, tạo ra một chức năng lõi đơn giống như hai lõi để tận dụng tối đa hiệu năng của CPU.
Trước tiên chúng ta cần hiểu các khái niệm về luồng và tiến trình.
- quá trình:
Một quá trình có thể được xem như là sự thực thi của một chương trình. Việc chạy một chương trình yêu cầu các tài nguyên như thời gian CPU, dung lượng bộ nhớ, tệp và I/O. Hệ điều hành phân bổ các tài nguyên này theo đơn vị quy trình, vì vậy quy trình này là đơn vị phân bổ tài nguyên cơ bản trong hệ điều hành. Tài nguyên giữa các quy trình được cách ly độc lập và có thể được quản lý và bảo vệ tốt. Quá trình cũng là một quá trình động: nó có sự ra đời, tồn tại và diệt vong.
- Chủ đề:
Một luồng là một tác vụ thực thi (đơn vị điều khiển) trong một tiến trình và chịu trách nhiệm thực thi các chương trình trong tiến trình hiện tại. Một tiến trình có thể chứa nhiều luồng, ít nhất một luồng. Không giống như một tiến trình, dữ liệu tài nguyên được chia sẻ giữa nhiều luồng. Do đó, khi hệ thống tạo ra một luồng hoặc chuyển đổi giữa các luồng, gánh nặng sẽ nhỏ hơn nhiều so với gánh nặng của tiến trình. Do đó, các luồng còn được gọi là các tiến trình nhẹ. Để cải thiện hiệu quả thực thi của hệ thống và giảm thời gian nhàn rỗi của bộ xử lý và thời gian chuyển đổi lập lịch, các luồng thay thế chức năng cơ bản của tài nguyên lập lịch xử lý, vì vậy các luồng là đơn vị cơ bản của lập lịch tài nguyên.
Sở dĩ CPU cần tăng số lượng luồng là do nhu cầu thực hiện đa tác vụ. Số lượng luồng càng lớn thì càng có lợi cho việc chạy nhiều chương trình cùng lúc, vì số lượng luồng tương đương với số lượng tác vụ mà CPU có thể xử lý song song tại một thời điểm nhất định.
Nguyên lý của siêu phân luồng thực ra là: vì sự khác biệt về tốc độ đọc giữa CPU và các thanh ghi, bộ đệm, bộ nhớ chính và đĩa cứng không phải là một mức độ lớn nên CPU rất nhanh.
Ví dụ: đối với CPU có tần số chính là 3.0GHZ, một chu kỳ xung nhịp là khoảng 0,3 nano giây, truy cập bộ nhớ mất khoảng 120 nano giây, truy cập SSD mất khoảng 50-150 micro giây, truy cập đĩa cứng cơ học mất khoảng 1-10 mili giây và cuối cùng là truy cập mạng Chậm nhất là khoảng chục mili giây. Nếu chúng ta tính chu kỳ xung nhịp là 1 giây thì việc truy cập bộ nhớ mất khoảng 6 phút, SSD mất khoảng 2-6 ngày, ổ cứng truyền thống mất khoảng 1-12 tháng và truy cập mạng mất vài năm! .
Điều này cho chúng ta khả năng công nghệ siêu phân luồng có thể "huy động" hoàn toàn các tài nguyên xử lý tạm thời nhàn rỗi bên trong CPU, khiến cho có vẻ như có hai lõi logic trong CPU hoạt động cùng một lúc.
Chúng ta biết rằng CPU sử dụng một đường dẫn lệnh để thực thi các tác vụ Trong khoảng thời gian khi một lõi logic đang chờ thực thi lệnh (chờ nhận lệnh tiếp theo từ bộ đệm hoặc bộ nhớ), lát thời gian được phân bổ cho một lõi logic khác. CPU vật lý chuyển đổi giữa hai lõi logic ở tốc độ cao, khiến hệ điều hành không thể phát hiện ra khoảng trống này, thực hiện "thực thi nhiều tác vụ cùng một lúc".
Ví dụ: bộ xử lý Pentium 4 HT đã bổ sung thêm một bộ xử lý logic, cho phép CPU thực thi nhiều chương trình cùng lúc và chia sẻ tài nguyên trong một CPU, chẳng hạn như: ALU, FPU, cache, v.v., khi cả hai các luồng cần một tài nguyên nhất định cùng lúc. Khi sử dụng tài nguyên, một trong số chúng phải tạm thời dừng và từ bỏ tài nguyên. Nó không thể tiếp tục cho đến khi các tài nguyên này không hoạt động. Do đó, hiệu suất của một CPU vật lý duy nhất có bật tính năng siêu phân luồng là không bằng nhau. đến sức mạnh xử lý của hai CPU.
Công nghệ siêu phân luồng chỉ tăng diện tích chip lên 5% nhưng có thể cải thiện hiệu suất từ 15% đến 30%. Kiến trúc Nehalem sau này đã mang đến một công nghệ siêu phân luồng mới, được hưởng lợi từ công nghệ dự đoán tập lệnh và so sánh với một đường dẫn ngắn. , nó có hiệu suất tốt hơn nhiều so với Pentium 4 và bộ điều khiển bộ nhớ tích hợp cho phép nó Nó có băng thông bộ nhớ lớn hơn và bộ đệm lớn hơn, do đó nó có thể đóng vai trò siêu phân luồng hiệu quả hơn. Siêu phân luồng của Nehalem có thể cải thiện hiệu suất thêm 20-30% mà không tăng mức tiêu thụ năng lượng. sửa đổi, về cơ bản nó là sự tiếp nối của kiến trúc Nehalem.
Mặc dù siêu phân luồng có thể tăng số lượng lõi máy tính, nhưng việc tăng gấp đôi số lượng lõi máy tính không chỉ đơn giản có nghĩa là tăng gấp đôi hiệu suất của máy tính mà còn bị ảnh hưởng bởi tần số CPU, độ dài từ máy, độ dài từ lệnh, bị ảnh hưởng bởi các yếu tố như vậy. như độ dài từ lưu trữ, bộ nhớ chính, tốc độ I/O, tốc độ ổ cứng, v.v., điều đó không có nghĩa là máy tính càng có nhiều lõi thì càng tốt vì siêu phân luồng chỉ tận dụng tối đa các tài nguyên nhàn rỗi. của CPU và cải thiện tốc độ sử dụng CPU.
Cách kiểm tra số lượng CPU logic
Lấy một ví dụ khác để hiểu khái niệm CPU logic: Giả sử máy tính có CPU vật lý 2 lõi và hỗ trợ siêu phân luồng. Khi đó máy tính này có 2 nhân và 4 luồng (số luồng trong 4 luồng cũng tương ứng với số lượng CPU logic). Vì vậy, siêu phân luồng bốn lõi hai chiều (hai chiều dùng để chỉ hai CPU vật lý) có 2 * 4 * 2 = 16 CPU logic. Một số người còn gọi nó là 16 lõi. Trên thực tế, trong /proc/cpuinfo của Linux chỉ có 8 lõi.
- Trong Linux cpuinfo, số lượng CPU logic là
bộ xử lý
Số lượng. Chúng ta có thể sử dụng chỉ thị
cat /proc/cpuinfo | grep "processor" |
- Số lượng bộ xử lý logic trong Windows Task Manager là số lượng CPU logic.
Hai máy tính của Hululu tương đối rác rưởi, tôi không thể đăng ảnh bật siêu phân luồng cho mọi người xem.
bản tóm tắt
- Một CPU vật lý có thể có 1 hoặc nhiều lõi vật lý
- Một lõi vật lý có thể có 1 hoặc 2 CPU logic
thẩm quyền giải quyết:
"Hiểu biết sâu sắc về hệ thống máy tính".
https://www.expreview.com/56674.html 。
Bài viết này kết thúc tại đây. Cảm ơn bạn rất nhiều vì đã đọc đến cuối. Nếu thấy bài viết hữu ích với bạn, đừng quên theo dõi tôi nhé! Nhiều bài viết tuyệt vời hơn.
Kỹ năng nội bộ máy tính, mã nguồn JAVA, phát triển nghề nghiệp, thực hành dự án, thông tin liên quan đến phỏng vấn và nhiều bài viết thú vị khác có sẵn trên tài khoản công khai "Maverick Hululu".
Cuối cùng, bài viết về lõi đơn, đa lõi và siêu phân luồng về lịch sử phát triển của CPU kết thúc tại đây. Nếu bạn muốn biết thêm về lõi đơn, đa lõi và siêu phân luồng về lịch sử phát triển của CPU. CPU, vui lòng Tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!