Làm thế nào để một máy tính làm việc?


40

Tôi đã là một mọt sách máy tính trong nhiều năm. Tôi có thể lập trình bằng một vài ngôn ngữ và thậm chí tôi có thể xây dựng chúng. Tôi đã ngồi xuống với một người bạn vào hôm nọ và hỏi làm thế nào một máy tính thực sự lấy điện và làm gì đó với nó, và chúng tôi không thể tìm ra nó, và Google cũng không giúp được gì nhiều.

Ý tôi là, làm thế nào một máy tính lấy một dòng điện liên tục và biến nó thành 1 và 0 và sau đó thực sự làm gì đó với những cái 1 và 0 như bật đèn trong 15 giây?

Tôi hiểu các cổng (AND, OR, NOR, NAND, KHÔNG) và một chút về điốt , điện trởbóng bán dẫn , nhưng tôi đoán rằng đây sẽ là nơi hoàn hảo để giải thích nó theo thuật ngữ layens thực sự!

Bất cứ ai có thể chỉ cho tôi đi đúng hướng hoặc cho tôi một lời giải thích ngắn gọn?


8
Bạn cũng có thể hỏi "làm thế nào vi khuẩn hoạt động?". Đây là một câu hỏi cực kỳ rộng. Tôi đề nghị bạn xem xét một kiến ​​trúc bộ xử lý đơn giản (ví dụ MIPS ; chúng tôi đã được dạy cái này trong lớp) và làm việc từ trên xuống dưới. Các câu hỏi bạn gặp phải trên đường có lẽ phù hợp hơn với Stack Exchange so với câu hỏi này.
Raphael

3
Tôi biết vi khuẩn hoạt động như thế nào, máy tính của tôi không nhận được lol
Christian

14
Yêu tinh. Yêu tinh nhỏ bé.
JeffE


1
Cách tốt nhất để tìm hiểu làm thế nào một máy tính thực sự hoạt động ở mức thấp nhất, là thiết kế một bộ vi điều khiển đơn giản trên một fpga hoặc thủ công từ các cổng Nand. Tôi đã thực hiện nó trong một lớp "Kiến trúc máy tính" và nó thực sự là một công cụ mở mắt. Thậm chí không khó để làm nếu bạn giữ mọi thứ ở mức tối thiểu và thiết kế bộ điều khiển 4 bit với phép cộng, thao tác bit và nhảy có điều kiện. Hoặc thậm chí đơn giản hơn, một phần cứng thực hiện một máy Turing đơn giản hóa. Hừm, cái máng này đã cho tôi một ý tưởng: tìm hiểu cách thức hoạt động của một máy Turing. Nó sẽ cung cấp cho bạn một cái nhìn sâu sắc tốt.
vsz

Câu trả lời:


47

Đây là một câu hỏi rộng mà không có câu trả lời dễ dàng; đó là một chặng đường dài từ các điện tử lướt qua dây đồng đến kết xuất một trang web trong Firefox. Tôi sẽ cố gắng cung cấp cho bạn một cái nhìn tổng quan từ dưới lên trên và hướng bạn đến những điều đúng đắn để tìm kiếm.

Mã hóa số

Động lực cơ bản là để tính toán mọi thứ, như khi làm arithologists¹. Điều đầu tiên để xem xét là làm thế nào để đại diện cho số. Đã có nhiều cách tiếp cận, sử dụng thập phân hoặc ternary và tôi nghĩ ngay cả các hệ bát phân, nhưng cuối cùng, nhị phân đã thắng. Bây giờ chúng tôi biết rằng chúng tôi phải xây dựng các thiết bị xử lý hai giá trị - hãy gọi chúng là và .101

Lưu ý rằng cũng có nhiều cách để mã hóa số ở dạng nhị phân. Sau khi bạn xây dựng bộ xử lý đầu tiên, bạn nhận ra lợi thế của việc thực hiện theo những cách nhất định. Các ví dụ phổ biến là hai phao bổ sungIEEE . Đối với người mới bắt đầu, hạn chế bản thân đến số tự nhiên.

Cổng

Giả sử chúng ta sử dụng mã hóa nhị phân. Hãy nghĩ về cách bạn học thêm ở trường tiểu học và viết tương tự cho các số nhị phân. Hóa ra, các khối xây dựng của đại số Boolean đã có sẵn cho bạn; thật dễ dàng để xây dựng một bộ cộng cơ bản (và các hàm số học khác) bằng các cổng logic .

Làm thế nào để xây dựng các cổng như vậy nằm ngoài phạm vi của khoa học máy tính; kỹ thuật điện tử đã cung cấp nhiều giải pháp bằng cách sử dụng các ống hoặc bóng bán dẫn . Trụ sở để trao đổi ngăn xếp kỹ thuật điện cho câu hỏi này.

Đồng hồ và nhà nước

Không phải tất cả các cổng đều nhanh như nhau và không phải tất cả các phần của một tính toán đều có cùng số cổng. Do đó, chúng tôi phải cẩn thận hơn rằng các hoạt động riêng lẻ không vượt qua nhau. Nó đã được chứng minh hữu ích để sử dụng đồng hồ toàn cầu ; kết quả của một mạng cổng nhất định là trạng thái của các dây đầu ra ở cuối chu kỳ (có thể thay đổi dữ dội trong khi các cổng xếp theo các trạng thái cuối cùng riêng lẻ của chúng).

Điều đó có nghĩa là kết quả của một chu kỳ có thể phải được lưu trữ cho đến khi chu kỳ tiếp theo bắt đầu, ví dụ nếu bạn nối dây vòng. Có một số yếu tố cơ bản bạn có thể sử dụng để thay đổi hiệu ứng, tất cả được xây dựng từ cổng; một số được gọi là dép xỏ ngón . Chúng cũng được sử dụng để xây dựng các thanh ghi , các phần tử lưu trữ số cho nhiều chu kỳ đồng hồ nếu cần.

Kiến trúc và các lệnh

Bây giờ bạn có vô số lựa chọn thiết kế để thực hiện. Bộ xử lý của bạn cung cấp những hoạt động số học nào? Lệnh của bạn trông như thế nào? Có thể là giáo dục để xem xét kiến trúc MIPS có hình thức ban đầu dễ dàng so với các thiết kế khác. Có một cái nhìn vào các kế hoạch :

MIPS giai đoạn đơn
Bản gốc từ http://ube.ege.edu.tr/~erciyes/CENG311

Về cơ bản, đó là tìm nạp và phân tách các lệnh, một bộ các thanh ghi, ALU và điều khiển. Các lệnh mã hóa hoạt động ALU nào để thực hiện trên toán hạng nào (theo số lượng thanh ghi mà chúng được giữ), cách thao tác với chương trình counter² hoặc đăng ký để tải / lưu trữ từ / vào bộ nhớ³.

Cân nhắc thêm

Bây giờ bạn có một bộ xử lý làm việc theo nghĩa hiện đại, giả sử bạn đã tìm ra cách xây dựng bộ nhớ và cách cung cấp cho nó các lệnh. Trên đường đến một cỗ máy hiện đại, nhiều sự lựa chọn phải được thực hiện. Đây là một số:

Lựa chọn thay thế

Ở trên bị ảnh hưởng nặng nề bởi cách lịch sử bật ra. Trong một thế giới khác với những suy nghĩ khác nhau, máy tính có thể hoạt động khác nhau. Trên thực tế, có rất nhiều mô hình tính toán , một số trong đó có những ưu điểm khiến chúng hữu ích như sự trừu tượng cho các máy thật trong nhiều trường hợp. Cũng có những nỗ lực bắt chước cách mà bộ não của chúng ta hoạt động, đó là cho phép điện toán thần kinh , hay nói chung là khai thác các chiến lược giải quyết vấn đề và lưu trữ thông tin được quan sát trong tự nhiên , nổi bật nhất là DNA và điện toán lượng tử .

Vì vậy, có lẽ (hy vọng?) Thông tin trên là tất cả lịch sử cổ đại thêm 50 hoặc 100 năm nữa kể từ bây giờ.


  1. Tất cả những điều thú vị chúng ta làm với máy tính ngày nay được chia thành nhiều nhiệm vụ số học nhỏ mà bộ xử lý thực hiện từng cái một.
  2. Nếu mô hình của bạn cho phép chương trình điều khiển luồng điều khiển, đây sẽ là địa chỉ bộ nhớ mà bộ xử lý nhận được lệnh tiếp theo. Bạn cũng có thể hình dung các máy chỉ đọc một bộ hướng dẫn cố định từ, giả sử, một cuộn băng. Trong thực tế, thực hiện sớm đã làm điều đó. Không nhảy có nghĩa là không có vòng lặp; một chương trình là một chuỗi các hướng dẫn hoàn toàn không được kiểm soát / mở ra tùy thuộc vào dữ liệu. Rõ ràng, việc có thể sử dụng cùng một chương trình cho nhiều dữ liệu đầu vào mạnh hơn.
  3. Giả sử bạn có trí nhớ; bộ xử lý của bạn hoạt động tốt mà không có nhưng sau đó chỉ có thể xử lý rất nhiều giá trị cùng một lúc. Các máy tính ban đầu đã đọc tất cả dữ liệu của họ từ băng và giữ chúng trong sổ đăng ký. Không có bộ nhớ, hãy để một mình lưu trữ, lưu trữ liên tục như chúng ta biết ngày nay.

Ồ Điều đó xứng đáng được vỗ tay. Đó là một thời gian tuyệt để đọc. Cảm ơn bạn đã chia sẻ. Tôi chắc chắn đã học được điều gì đó. Mặc dù, sau khi đọc nó, tôi nghĩ những gì tôi muốn biết là nhiều hơn các nguyên tắc cơ bản của kỹ thuật điện về cách thức nó điều khiển điện. Tôi sẽ đăng cùng một câu hỏi cho nhóm đó một chút sau ngày hôm nay. Cảm ơn bạn!
Christian

1
Nó xảy ra với tôi rằng tôi có lẽ nên bao gồm "nói chuyện với bộ phận máy". Điều đó có nghĩa là thiết kế một ngôn ngữ mà con người có thể làm việc hiệu quả và dịch nó (với trình biên dịch) sang tập lệnh bạn đã chỉ định. Đây là những chủ đề cốt lõi của khoa học máy tính trong khi tài liệu trong câu trả lời của tôi chủ yếu là kỹ thuật máy tính .
Raphael

Tôi tưởng tượng đó không phải là một câu trả lời nhanh chóng. Một ngày nào đó tôi sẽ trả tiền cho một số kỹ sư máy tính, những người xây dựng các thiết bị như bo mạch chủ hoặc điện thoại di động, chỉ là cách các nguyên tắc cơ bản hoạt động. Đó là để nói, làm thế nào một máy tính thực sự tính toán hoặc bật đèn trong 5 giây và sau đó tắt. Tôi tưởng tượng nó rất nhiều để làm với công tắc và tụ điện.
Christian

@Christian Nếu bạn muốn tiết kiệm một số tiền, hãy xem xét việc mua hộp thử nghiệm EE (như hộp dành cho trẻ em) bao gồm bóng bán dẫn. Chuyển đổi đèn hoặc xây dựng một bộ cộng nhỏ thường được bao gồm, afaik. (Một lần nữa, dân kỹ thuật điện có lẽ biết nhiều hơn.)
Raphael

25

Bức tranh hoàn chỉnh khá phức tạp. Có nhiều lớp được xây dựng chồng lên nhau thực hiện trừu tượng mức cao trên đỉnh của điện áp. Không có lời giải thích đơn giản nào về cách mọi thứ được kết hợp với nhau, đặc biệt là xem xét rằng phần cứng và phần mềm máy tính đã phát triển vượt bậc trong năm mươi năm qua.

Nếu bạn quan tâm đến việc xem mọi thứ được kết hợp như thế nào, bạn có thể muốn xem The Elements of Computing Systems , một cuốn sách bắt đầu với cổng NAND và dần dần xây dựng một triển khai Tetris hoạt động trên trình biên dịch và hệ điều hành. bạn cũng xây dựng. Mỗi phần của máy tính được xây dựng trên phần trước, có thể giúp bạn xem mọi thứ hoạt động như thế nào.


Nghe có vẻ như một nơi bắt đầu hoàn hảo. Sẽ bắt đầu từ đó. Cảm ơn bạn rất nhiều :)
Christian

2
Tôi cũng khuyên bạn nên đọc CODE của Charles Petzold.
ybakos

7

Các podcast bảo mật ngay bây giờ! đã làm một loạt về cách máy tính làm việc, bắt đầu với các nguyên tắc cơ bản.

  • 233 - Hãy thiết kế một máy tính (phần 1)
  • 235 - Ngôn ngữ máy
  • 237 - Cảm ứng: Sức mạnh của con trỏ (không phải là một phần kỹ thuật của bộ truyện)
  • 239 - Ngăn xếp, đăng ký và đệ quy
  • 241 - Ngắt phần cứng
  • 247 - The Multi Multi -verse
  • 250 - Hệ điều hành
  • 252 - Kinh doanh RISCy
  • 254 - Chúng ta sẽ làm gì cho tốc độ

Các lỗ hổng trong các con số là bởi vì mỗi tập khác là một tập Phản hồi người nghe nên bạn cũng có thể muốn xem chúng. Cũng trong khoảng thời gian từ năm 241 đến năm 247, họ đã thực hiện một vài tập về SSL do những tin tức nóng hổi vào thời điểm đó về các quốc gia bắt buộc CA phải cấp chứng chỉ gốc cho họ.

Ngoài ra EP. 248 là "Kẻ giết chó di động" không giết chó, nhưng là vũ khí chùm âm thanh mà Steve tự tạo ra khi còn nhỏ để dạy một con chó hàng xóm không chạy lên hàng rào và cố gắng tấn công người trên vỉa hè .


hấp dẫn! Cảm ơn bạn đã chia sẻ. Tôi sẽ có một cái nhìn.
Christian

4

Một máy tính hoạt động bằng cách điều khiển độ dốc năng lượng (mà sau đó chúng ta hiểu là 1 và 0) theo cách xác định , nhất quán . Đó là tính nhất quán định nghĩa một máy tính, trong khi đó là định nghĩa phân tách các bộ xử lý khác nhau.

Ngoài ra, tìm hiểu về cách chỉ hai cổng logic (OR và AND) là các khối xây dựng đủ để xây dựng bất kỳ máy tính đa năng nào. Xem thêm, Daniel Hillis và máy tính Tinkertoy.


Đó là một bài đọc xen kẽ về TinkerToy, đặc biệt là thực tế là nó luôn thắng! ( Science20.com/brain_candyfeed_your_mind/ trộm )
Christian

Tuy nhiên, mặc dù nó mang lại cho tôi cái nhìn sâu sắc về cách máy tính 'nghĩ', tức là bằng cách cho nó mọi sự kết hợp và cơ học để tìm câu trả lời tiếp theo được đưa ra trước đó, nó không trả lời câu hỏi ban đầu của tôi về cách thực sự xây dựng một máy tính. Giả sử tôi đang đi xuống cửa hàng phần cứng điện địa phương (có tất cả mọi thứ) để mua các bit cơ bản (bộ chuyển đổi, điện trở, tụ điện, cổng, v.v.) và cấu hình chúng để tôi có một máy tính cực kỳ cơ bản, tôi cần gì? Rốt cuộc, máy tính đầu tiên có kích thước của một nhà kho với các bit và dây, vì vậy nó phải có thể!
Christian

@Christian: haha, được rồi, xây dựng một số cổng logic cơ bản (VÀ / HOẶC / KHÔNG) một số flip-flop để lưu trữ bộ nhớ cơ bản và bạn có thể thêm hai số 4 bit.

Tôi có một số dép tông! Hai cặp trong thực tế.
Christian

3

Máy tính là một hệ thống logic đồng bộ lớn , có nghĩa là

  • 0/1
  • nó hoạt động với đồng hồ (rất nhanh) để tất cả các tín hiệu được lấy mẫu tại các thời điểm riêng biệt để đảm bảo sự kết hợp.

0/1

Nó có các mạch chuyên dụng để lưu giữ thông tin miễn là máy tính được cung cấp năng lượng (RAM, với số lượng rất lớn). Nó có các mạch chuyên dụng để thực hiện số học nhị phân (thực tế các bit được xử lý theo nhóm - thường là bội số của 8 - đại diện cho một số nguyên). Và nó có khả năng định tuyến chuyên biệt dựa trên địa chỉ bộ nhớ, không gì khác ngoài số nguyên.

Cuối cùng nhưng không kém phần quan trọng, một máy tính hiện đại có một chương trình cũng được lưu trữ trong RAM, đó là danh sách các hướng dẫn được mã hóa dưới dạng số nguyên, được thực hiện tuần tự, thường lấy dữ liệu từ bộ nhớ, thực hiện một số số học và gửi kết quả về bộ nhớ.

Trong kịch bản của bạn, người ta có thể nghĩ đến việc triển khai trong đó thời gian đã trôi qua được lưu trữ ở đâu đó trong RAM và chương trình hướng dẫn

  • lấy giá trị thời gian đã trôi qua,
  • tăng nó với một bộ cộng,
  • so sánh nó với độ trễ được xác định trước với bộ so sánh,
  • trở về địa chỉ chương trình bắt đầu trong trường hợp bất bình đẳng (nghĩa là "vòng lặp"),
  • mặt khác, đặt tín hiệu chuyên biệt đi đến một công tắc bên ngoài thay vì RAM.

Lưu ý rằng tất cả các yếu tố này ngày nay đạt được mức độ tinh vi cao, và mỗi câu trong tổng quan rất ngắn gọn này xứng đáng có một vài cuốn sách giải thích.


-1

Có một số cách để thực hiện chức năng trì hoãn hoặc chuyển đổi dữ liệu nhị phân thành dữ liệu thập phân hoặc cường độ tín hiệu. Khi bạn nhập giá trị "15", máy tính sẽ hiển thị hình ảnh bitmap của số 15 trên màn hình. Đây thực sự là giá trị nhị phân, tại thời điểm mã nhị phân của bàn phím của bạn cũng được gửi đến cpu. Nó sẽ phân tích dữ liệu sau đó chuyển mã sang đơn vị xử lý ALU (đơn vị logic số học) để chuyển đổi nó thành một xung thành chip DAC. Tín hiệu tương tự hiện đang điều khiển tần số (tần số từ khz đến hz) của mạch lật. Bây giờ, đầu ra tần số sẽ được hướng đến RAM và cpu đọc RAM để khớp nếu dữ liệu là "1111". Vậy là 4 giây.


Tôi không chắc làm thế nào điều này trả lời câu hỏi.
Yuval Filmus

bạn có thể thấy rằng anh ấy đã hỏi cách flash máy tính trong 15 giây và tôi giải thích cách máy tính tạo ra giá trị thứ hai để sử dụng trong vòng lặp.
Lan ...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.