HTG giải thích CPU thực sự hoạt động như thế nào?
Hầu hết mọi thứ trong máy tính đều tương đối dễ hiểu: RAM, bộ lưu trữ, thiết bị ngoại vi và phần mềm đều hoạt động cùng nhau để tạo ra chức năng của máy tính. Nhưng trái tim của hệ thống của bạn, CPU, dường như là phép màu ngay cả với nhiều người công nghệ. Ở đây, chúng tôi sẽ làm hết sức để phá vỡ nó.
Hầu hết các nghiên cứu cho bài viết này đều đến từ xông nhưng làm thế nào để biết? 'Của J. Clark Scott. Đây là một bài đọc tuyệt vời, đi sâu hơn nhiều so với bài viết này, và rất đáng để các cặp vợ chồng kiếm được trên Amazon.
Một lưu ý trước khi chúng ta bắt đầu: CPU hiện đại là những đơn đặt hàng có độ lớn phức tạp hơn những gì chúng ta phác thảo ở đây. Một người gần như không thể hiểu được mọi sắc thái của một con chip với hơn một tỷ bóng bán dẫn. Tuy nhiên, các nguyên tắc cơ bản về cách tất cả khớp với nhau vẫn giống nhau và hiểu những điều cơ bản sẽ giúp bạn hiểu rõ hơn về các hệ thống hiện đại.
Bắt đầu nhỏ
Máy tính hoạt động nhị phân. Họ chỉ hiểu hai trạng thái: bật và tắt. Để thực hiện tính toán trong hệ nhị phân, họ sử dụng cái được gọi là bóng bán dẫn. Transitor chỉ cho phép dòng điện chạy qua nó đến cống nếu có dòng điện qua cổng. Về cơ bản, điều này tạo thành một công tắc nhị phân, cắt dây phụ thuộc vào tín hiệu đầu vào thứ hai.
Các máy tính hiện đại sử dụng hàng tỷ bóng bán dẫn để thực hiện các phép tính, nhưng ở mức thấp nhất, bạn chỉ cần một số ít để tạo thành các thành phần cơ bản nhất, được gọi là cổng.
Cổng logic
Xếp chồng một vài bóng bán dẫn đúng cách và bạn có cái được gọi là cổng logic. Các cổng logic nhận hai đầu vào nhị phân, thực hiện một thao tác trên chúng và trả về một đầu ra. Ví dụ, cổng OR trả về true nếu một trong hai đầu vào là true. Cổng AND kiểm tra xem cả hai đầu vào có đúng không, XOR kiểm tra xem chỉ một trong hai đầu vào có đúng không và các biến thể N (NOR, NAND và XNOR) là phiên bản đảo ngược của cổng cơ sở của chúng.
Làm toán với Gates
Chỉ với hai cổng bạn có thể thực hiện bổ sung nhị phân cơ bản. Sơ đồ này ở trên cho thấy một nửa bộ cộng, được tạo bằng Logicly, một sân chơi trực tuyến miễn phí cho các cổng logic. Cổng XOR ở đây sẽ bật nếu chỉ một trong các đầu vào được bật, nhưng không phải cả hai. Cổng AND sẽ bật nếu cả hai đầu vào đều bật, nhưng tắt nếu không có đầu vào. Vì vậy, nếu cả hai đều bật, XOR sẽ tắt và cổng AND bật, đi đến câu trả lời đúng của hai:
Điều này cho chúng ta một thiết lập đơn giản với ba đầu ra riêng biệt: không, một và hai. Nhưng một bit không thể lưu trữ bất cứ thứ gì cao hơn 1 và máy này không quá hữu ích vì nó chỉ giải quyết được một trong những vấn đề toán học đơn giản nhất có thể. Nhưng đây chỉ là một nửa bộ cộng và nếu bạn kết nối hai trong số chúng với một đầu vào khác, bạn sẽ có được một bộ cộng đầy đủ:
Bộ cộng đầy đủ có ba đầu vào - hai số cần thêm và một số mang theo. Phần mang được sử dụng khi số cuối cùng vượt quá số có thể được lưu trữ trong một bit. Các bộ cộng đầy đủ sẽ được liên kết trong một chuỗi và phần mang được truyền từ bộ cộng này sang bộ tiếp theo. Việc mang được thêm vào kết quả của cổng XOR trong bộ cộng nửa đầu và có thêm một cổng OR để xử lý cả hai trường hợp khi cần phải bật.
Khi cả hai đầu vào được bật, thực hiện bật và gửi nó đến bộ cộng đầy đủ tiếp theo trong chuỗi:
Và điều này là phức tạp như bổ sung được. Di chuyển lên nhiều bit hơn về cơ bản chỉ có nghĩa là nhiều bộ cộng đầy đủ hơn trong chuỗi dài hơn.
Hầu hết các phép toán khác có thể được thực hiện với phép cộng; phép nhân chỉ là phép cộng lặp lại, phép trừ có thể được thực hiện với một số phép đảo bit ưa thích và phép chia chỉ là phép trừ lặp lại. Và trong khi tất cả các máy tính hiện đại đều có các giải pháp dựa trên phần cứng để tăng tốc các hoạt động phức tạp hơn, về mặt kỹ thuật, bạn có thể thực hiện tất cả với trình bổ sung đầy đủ.
Xe buýt và bộ nhớ
Ngay bây giờ, máy tính của chúng tôi không có gì hơn một máy tính xấu. Điều này là do nó không thể nhớ bất cứ điều gì và không làm gì với đầu ra của nó. Trên đây là một ô nhớ, có thể làm tất cả điều đó. Dưới mui xe, nó sử dụng rất nhiều cổng NAND và trong cuộc sống thực có thể khá khác nhau tùy thuộc vào kỹ thuật lưu trữ, nhưng chức năng của nó là như nhau. Bạn cung cấp cho nó một số đầu vào, bật bit 'ghi' và nó sẽ lưu trữ các đầu vào bên trong ô. Đây không chỉ là một ô nhớ, vì chúng ta cũng cần một cách để đọc thông tin từ nó. Điều này được thực hiện với một trình hỗ trợ, là một tập hợp các cổng AND cho mỗi bit trong bộ nhớ, tất cả được gắn với một đầu vào khác, bit đọc ra bit. Các bit ghi và đọc thường được gọi là các bộ cài đặt và cũng cho phép.
Toàn bộ gói này được gói gọn trong những gì được gọi là đăng ký. Các thanh ghi này được kết nối với bus, là một bó dây chạy quanh toàn bộ hệ thống, được kết nối với mọi thành phần. Ngay cả các máy tính hiện đại cũng có xe buýt, mặc dù chúng có thể có nhiều xe buýt để cải thiện hiệu suất đa nhiệm.
Mỗi thanh ghi vẫn có một bit ghi và đọc, nhưng trong thiết lập này, đầu vào và đầu ra là như nhau. Điều này thực sự tốt. Ví dụ. Nếu bạn muốn sao chép nội dung của R1 vào R2, bạn sẽ bật bit đọc cho R1, điều này sẽ đẩy nội dung của R1 lên xe buýt. Trong khi bit đọc được bật, bạn sẽ bật bit ghi cho R2, nó sẽ sao chép nội dung bus vào R2.
Các thanh ghi được sử dụng để tạo RAM là tốt. RAM thường được đặt trong một lưới, với các dây đi theo hai hướng:
Bộ giải mã lấy đầu vào nhị phân và bật dây được đánh số tương ứng. Ví dụ, 11, 11 11 là 3 ở dạng nhị phân, số 2 bit cao nhất, vì vậy bộ giải mã sẽ bật dây cao nhất. Ở mỗi ngã tư, có một thanh ghi. Tất cả những thứ này được kết nối với xe buýt trung tâm, và với đầu vào ghi và đọc trung tâm. Cả đầu vào đọc và ghi sẽ chỉ bật nếu hai dây nối qua thanh ghi cũng được bật, cho phép bạn chọn thanh ghi từ đó để viết và đọc. Một lần nữa, RAM hiện đại phức tạp hơn nhiều, nhưng thiết lập này vẫn hoạt động.
Đồng hồ, Stepper và Bộ giải mã
Các thanh ghi được sử dụng ở mọi nơi và là công cụ cơ bản để di chuyển dữ liệu xung quanh và lưu trữ thông tin trong CPU. Vì vậy, những gì nói với họ để di chuyển mọi thứ xung quanh?
Đồng hồ là thành phần đầu tiên trong lõi của CPU và sẽ tắt và bật ở một khoảng thời gian đã đặt, được đo bằng hertz hoặc chu kỳ mỗi giây. Đây là tốc độ bạn thấy được quảng cáo bên cạnh CPU; một chip 5 GHz có thể thực hiện 5 tỷ chu kỳ mỗi giây. Tốc độ xung nhịp thường là một thước đo rất tốt cho tốc độ của CPU.
Đồng hồ có ba trạng thái khác nhau: đồng hồ cơ sở, đồng hồ cho phép và đồng hồ đã đặt. Đồng hồ cơ sở sẽ bật trong nửa chu kỳ và tắt cho nửa còn lại. Đồng hồ cho phép được sử dụng để bật các thanh ghi và sẽ cần phải bật lâu hơn để đảm bảo rằng dữ liệu được bật. Đồng hồ đã đặt luôn cần được bật cùng lúc với đồng hồ bật hoặc nếu không có thể ghi dữ liệu không chính xác.
Đồng hồ được kết nối với bước, sẽ đếm từ một đến bước tối đa và tự đặt lại về một khi hoàn thành. Đồng hồ cũng được kết nối với cổng AND cho mỗi thanh ghi mà CPU có thể ghi vào:
Các cổng AND này cũng được kết nối với đầu ra của một thành phần khác, bộ giải mã lệnh. Bộ giải mã lệnh lấy một lệnh như là SET SET R2 ĐẾN R1 và giải mã nó thành thứ gì đó mà CPU có thể hiểu được. Nó có thanh ghi nội bộ riêng, được gọi là Sổ đăng ký hướng dẫn, đó là nơi lưu trữ hoạt động hiện tại. Chính xác thì nó hoạt động như thế nào với hệ thống bạn đang chạy, nhưng một khi nó được giải mã, nó sẽ bật bộ chính xác và bật các bit cho các thanh ghi chính xác, sẽ tắt theo đồng hồ.
Hướng dẫn chương trình được lưu trữ trong RAM (hoặc bộ đệm L1 trên các hệ thống hiện đại, gần CPU hơn). Vì dữ liệu chương trình được lưu trữ trong các thanh ghi, giống như mọi biến khác, nó có thể được thao tác nhanh chóng để nhảy xung quanh chương trình. Đây là cách các chương trình có được cấu trúc của chúng, với các vòng lặp và các câu lệnh if. Lệnh nhảy đặt vị trí hiện tại trong bộ nhớ mà bộ giải mã lệnh đang đọc từ vị trí khác.
Làm thế nào tất cả đến với nhau
Bây giờ, sự đơn giản hóa quá mức của chúng tôi về cách CPU hoạt động hoàn tất. Xe buýt chính kéo dài toàn bộ hệ thống và kết nối với tất cả các thanh ghi. Các bộ cộng đầy đủ, cùng với một loạt các hoạt động khác, được đóng gói vào Đơn vị logic số học hoặc ALU. ALU này sẽ có kết nối với xe buýt và cũng sẽ có các thanh ghi riêng để lưu trữ số thứ hai mà nó hoạt động trên.
Để thực hiện tính toán, dữ liệu chương trình được tải từ RAM hệ thống vào phần điều khiển. Phần điều khiển đọc hai số từ RAM, tải số đầu tiên vào thanh ghi lệnh của ALU và sau đó tải số thứ hai lên xe buýt. Trong khi đó, nó gửi cho ALU một mã lệnh cho nó biết phải làm gì. ALU sau đó thực hiện tất cả các tính toán và lưu trữ kết quả vào một thanh ghi khác, mà CPU có thể đọc từ đó và sau đó tiếp tục quá trình.
Tín dụng hình ảnh: Rost9 / Shutterstock