So sánh ngắn giữa các máy tính ENIAC và UNIVAC, liên tưởng đến Arduino

Giới thiệu sơ nét về các loại máy

ENIAC (Electronic Numerical Integrator And Computer) được ra mắt vào năm 1946. Nó được chế tạo bởi 2 nhà khoa học Mỹ J. Presper Eckert (lúc này là học trò) và John Mauchly (Giáo sư), và đây là chiếc máy tính đầu tiên có khả năng lập trình. Đây là phát minh đột phá trong thời kỳ này, nó có thể thực hiện các phép tính nhanh hơn 1000 lần so với những chiếc máy tính trước đó. ENIAC cũng chính là cỗ máy được sử dụng để tính toán chế tạo bom Hydrogen.

ENIAC thực hiện được 5000 phép tính trên giây (bằng cách sử dụng 18000 ống chân không), điện năng tiêu thụ khoảng 140kW, trọng lượng 30 tấn.

Trong Thế chiến II, quân đội Mỹ đã hỗ trợ tài chính cho dự án ENIAC với chi phí vào khoảng 500.000 USD (tương đương với 8 triệu USD bây giờ).

ENIAC chấm dứt hoạt động vào tối ngày 2/10/1955.

UNIVAC (UNIVersal Automatic Computer I) được ra mắt sau máy ENIAC 5 năm, và cũng do những người thiết kế ra máy ENIAC chế tạo. Sử dụng 5200 đèn điện tử chân không, trọng lượng của UNIVAC I lên tới 13 tấn, điện năng tiêu thụ khoảng 125kW. UNIVAC I có thể thực hiện 1905 phép tính trong 1 giây. Tuy nhiên, để đặt vừa cỗ máy này, người ta đã phải sử dụng một căn phòng rộng 35,5 m2.

s

Arduino là gì? Bạn hãy xem thêm ở bài viết Arduino UNO R3 là gì?

Về cấu trúc

  1. 2 hệ máy ENIAC và UNIVAC đều sử dụng đèn chân không và tính toán trên hệ cơ số 10 (hệ thập phân). 
    • ENIAC nặng đến 30 tấn, chiếm diện tích lên đến 150m2 và sử dụng 140kW, sử dụng 18000 bóng đèn chân không (vaccum tubes) và có thể lập trình bằng công tắc.
    • UNIVAC có thể được xem là phiên bản thương mại của ENIAC khi chỉ nặng gần bằng một nửa của máy ENIAC (13 tấn), chiến diện tích nhỏ hơn nhiều (chỉ 35.5 m2), sử dụng 5200 bóng đèn chân không.
  2. Arduino có cấu trúc sử dụng các "siêu bé" transistor và tính toán trên hệ cơ số 2 (hệ nhị phân).
    • Nó chỉ nặng khoảng 50 gam, chiến diện tích bằng một chiếc thẻ ATM
    • Arduino UNO sử dụng vi điều khiển ATmega328 (16MHz) nên có cấu trúc của một vi điều khiển và có tốc độ xử lý từ vài chục đến vài trăm nghìn phép tính trên giây!

Về nguyên lý hoạt động

  1. ENIAC
    • Trung tâm của máy tính ENIAC có tên gọi là bộ đếm vòng, gồm 10 bóng chân không (được đánh số như thứ tự các phím trong bàn phím số máy tính của bạn). Một số 5 sẽ được biểu diễn bằng một xung dao động ở bóng số 5. Nếu ta cộng thêm 7 (được 12) vào, thì dao động sẽ được chuyển sang bóng số 2, và sẽ có một giao động khác tại bóng số 1 trong một bộ vòng tròn thứ 2.
    • Cứ như vậy, một thanh ghi sẽ có 11 bộ đếm vòng, nó có thể biểu diễn một số nguyên tới 10 tỷ trừ 1 (9.999.999.999), và nếu là số âm thì có thể tới -9.999.999).
    • Khi 1 thanh ghi đạt mức tối đa của nó, thì sẽ có một xung gửi đến thanh ghi tiếp theo qua dây dẫn và cứ như thế, nó tiếp tục quá trình tính toán.
    • ENIAC có tổng cộng 40 thanh ghi được đặt trong 20 máng được nối mạng với nhau (nghĩa là một thanh ghi bất kì có thể tới được một thanh ghi bất kì khác nằm trong mạng).
    • Dữ liệu được lưu theo các xung, và được lưu giữ trong các ống thủy ngân 5 chân!
  2. UNIVAC
    • Một máy UNIVAC có bộ nhớ là 1000 đơn vị thông tin, mỗi đơn vị như thế bao gồm 12 ký tự (số-chữ). Khi biểu diễn một số, các đơn vị thông tin sẽ chỉ được ghi các kỹ tự số và các phép +, - (tổng cộng có 11 ký tự).
    • 1000 đơn vị thông tin sẽ được chia thành 100 kênh (channel), mỗi kênh 10 đơn vị thông tin.
    • Bộ nhớ đệm dùng cho việc nhập / xuất bao gồm 60 đơn vị thông tin cho mỗi đơn vị (12 channel).
    • Có thêm 6 kênh phụ tùng.
    • Mỗi đơn vị là một ống thủy ngân (tương tự ống chân không), và 10 ống như thế được đặt trong 1 kênh.
    • Về việc tính toán, nó cùng dùng cách tính như ENIAC.
  3. ATmega328 (Arduino)
    • Về nguyên lý hoạt động nó cũng không quá phức tạp, nhưng mình sẽ không đưa ra bàn luận ở đây.
    • Hãy xem những gì Arduino làm được và mức độ đơn giản khi làm việc với nó, bạn sẽ thấy được sự khác biệt một trời một vực giữa các máy tính bự chà bá với một bé vi điểu khiển nhỏ gọn!

Nhận xét

2 máy tính ENIAC và UNIAC đều có một điểm chung là sử dụng bóng chân không để tính toán. Máy tính ENIAC có tốc độ tính toán nhanh hơn UNIVAC nhưng lại cồng kềnh gấp 2-3 lần so với máy UNIVAC. Điều đó đã giải thích lý do tại sao mà trên thế giới chỉ có một máy tính ENIAC, trong khi đó lại có đến 46 (một số tài liệu khác là 49) máy UNIVAC được sử dụng trong thương mại và chính trị. Nhưng, nhờ việc có thể lập trình đồng thời với tốc độ tính toán siêu nhanh đã khiến người tiêu dùng biết đến máy tính nhiều hơn và phần nào hiểu được khả năng ứng dụng của nó!

Bây giờ, bạn hãy nhìn lại chú Arduino Uno trên kệ làm việc của mình, có lẻ bạn sẽ thấy được một ánh hình ảnh nào đó của một thế hệ máy tính cách đây hàng chục năm về trước. Bạn có thấy sự tiến bộ vượt bậc trong ngành khoa học máy tính này? Từ một căn phòng rộng lớn bây giờ nó chỉ là một sấp 8 thẻ ATM xếp chồng lên nhau. Hãy tự hào vì những gì mình đang có và cố gắng biến nó thành một hệ thống "khổng lồ" với hàng chục, hàng trăm khả năng tùy biến. Nào, các bạn hãy bắt tay ngay vào việc chế tạo nào!

lên
4 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Điều khiển động cơ servo qua Wifi + Internet / 2G / 3G / 4G bằng điện thoại (App Inventer, REST API...) với công nghệ iNut Platform

Hôm nay, chúng ta sẽ học cách điều khiển 02 Servo qua Internet. Vấn đề này, vừa dễ lại vừa khó, vậy nó dễ chỗ nào, khó chỗ nào, chúng ta cùng nhau tìm hiểu nhé!

Qua bài học này, bạn sẽ hiểu được cách làm thế nào để điều khiển nhiều servo bằng cách sử dụng iNut - Cảm biến. Bạn có thể tự làm app của riêng mình, mở rộng các chức năng không giới hạn!

lên
9 thành viên đã đánh giá bài viết này hữu ích.

Vấn đề của số chấm động và số nguyên trong ngôn ngữ lập trình C++ trên board mạch Arduino

Có bao giờ bạn tự hỏi: "Dự án của mình làm tốt thế này, chạy ngon lành rành rành thế này, chắc không có bugs đâu?". Thực sự, nếu dự án của bạn không có phần xử lý số thực chấm động trong đó thì mình nghĩ phần code của bạn sẽ hoạt động ngon lành theo thời gian. Nhưng mà có số thực thì từ từ, chúng ta cần xét lại code. Trước đây, có một số bạn nhắn tin riêng hỏi mình về code với điểm chung là "code mình chạy ngon lành lúc đầu, sau đó bị lỗi, không rõ nguyên nhân". Loại trừ các phần code logic sai ra, thì hầu hết đều là do lỗi khi xử lý số chấm động mà không quan tâm đến nền tảng lập trình bên dưới! Mà cũng đúng, chúng ta rất dễ bị đánh lừa bởi chính đoạn code chúng ta viết. Vì nó có báo lỗi biên dịch đâu mà, kaka. Qua bài viết này, mình muốn phân tích và cùng các bạn rút kinh nghiệm về số chấm động float, cách hạn chế lỗi sai với số chấm động.

lên
22 thành viên đã đánh giá bài viết này hữu ích.