Manchester Baby

Máy tính Manchester Baby, tên tiếng Anh: Manchester Baby, còn được gọi là Small-Scale Experimental Machine (viết tắt: SSEM, tạm dịch Máy Thử Nghiệm Quy Mô Nhỏ), là máy tính điện tử lưu trữ chương trình đầu tiên. Nó được xây dựng tại Đại học Manchester bởi Frederic C. Williams, Tom Kilburn và Geoff Tootill, và chạy chương trình đầu tiên của nó vào ngày 21 tháng 6 năm 1948.

Manchester Baby không được thiết kế để làm một công cụ tính toán (compute engine) thực tế, mà thay vào đó được thiết kế như một bàn thử nghiệm cho ống Williams, bộ nhớ truy cập ngẫu nhiên đầu tiên. Được mô tả như là ""nhỏ và nguyên thủy"" 50 năm sau khi được tạo ra, Manchester Baby là máy tính làm việc đầu tiên chứa đựng tất cả các yếu tố cần thiết cho một máy tính điện tử kỹ thuật số hiện đại. Ngay sau khi Manchester Baby đã chứng minh được khả thi của thiết kế, một dự án đã được khởi xướng tại trường đại học để phát triển nó thành một máy hoạt động quy mô đầy đủ, đó là Manchester Mark 1. Mark 1 sau đó nhanh chóng trở thành mẫu máy tính cho Ferranti Mark 1, máy tính đa năng đầu tiên trên thế giới có sẵn thương mại.

Manchester Baby có chiều dài từ 32 bit word và bộ nhớ gồm 32 word "(1 kibibit, 1.024 bit)". Vì nó được thiết kế để là máy tính lưu trữ chương trình đơn giản nhất có thể, nên chỉ có phép toán số học cộng và phủ định được thực hiện trong phần cứng; các phép toán số học khác được thực hiện trong phần mềm. Chương trình đầu tiên trong ba chương trình được viết cho máy tính tính bội số chung nhỏ nhất của 2 (262.144), bằng cách kiểm tra mọi số nguyên từ 2 xuống. Thuật toán này sẽ mất thời gian lâu để thực hiện—và do đó chứng minh tính đáng tin cậy của máy tính, vì phép chia được thực hiện bằng cách trừ lặp lại của bộ chia. Chương trình bao gồm 17 hướng dẫn và chạy khoảng 52 phút trước khi đạt đến đáp án chính xác là 131.072, sau khi Manchester Baby đã thực hiện khoảng 3,5 triệu phép toán (cho một tốc độ CPU hiệu quả khoảng 1100 hướng dẫn mỗi giây).

== Bối cảnh ==
Thiết kế đầu tiên cho một máy tính được kiểm soát bằng chương trình là Analytical Engine (tạm dịch Động cơ Phân Tích) của Charles Babbage vào những năm 1830, với Ada Lovelace nảy ra ý tưởng của chương trình lý thuyết đầu tiên để tính toán các số Bernoulli. Một thế kỷ sau đó, vào năm 1936, nhà toán học Alan Turing công bố mô tả của ông về cái mà được biết đến là máy Turing, một khái niệm lý thuyết được thiết kế để khám phá giới hạn của tính toán cơ học. Turing không tưởng tượng một máy vật lý, mà là một người ông gọi là "máy tính", hành động theo hướng dẫn được cung cấp bởi một băng mà trên đó các ký hiệu có thể được đọc và viết theo trình tự khi băng di chuyển dưới đầu đọc băng.

Máy tính có thể thiết kế mô tả của Turing nếu một thuật toán có thể được viết để giải quyết một vấn đề toán học, thì máy Turing có thể thực hiện thuật toán đó.

Z3 của Konrad Zuse là máy tính có thể lập trình tự động đầu tiên trên thế giới, với logic toán học nhị phân, nhưng nó thiếu khả năng nhảy điều kiện của máy Turing. Vào ngày 12 tháng 5 năm 1941, Z3 được trình bày thành công trước một đám đông các nhà khoa học thuộc Trung tâm Hàng không và Vũ trụ Đức ở Berlin. Z3 lưu trữ chương trình của nó trên một băng ngoại vi, nhưng nó là máy điện cơ hơn là máy điện tử. Những thiết bị tính toán điện tử sớm nhất là máy tính Atanasoff–Berry (ABC), được thử nghiệm thành công vào năm 1942, và Colossus năm 1943, nhưng cả hai đều không phải là máy tính có lưu trữ chương trình.

ENIAC (1946) là máy tính tự động đầu tiên vừa là máy điện tử và có tính chất đa năng. Nó đạt đầy đủ tính toán Turing, với khả năng nhảy điều kiện và có thể lập trình để giải quyết một loạt vấn đề rộng lớn, nhưng chương trình của nó được giữ trong trạng thái của các công tắc trên dây nối thay vì bộ nhớ có thể thay đổi của máy, và có thể mất một vài ngày để lập trình lại. Những nhà nghiên cứu như Turing và Zuse đã nghiên cứu ý tưởng sử dụng bộ nhớ của máy tính để giữ chương trình cũng như dữ liệu nó đang làm việc, và là nhà toán học John von Neumann đã viết một bài báo phổ biến mô tả kiến trúc máy tính đó, vẫn được sử dụng trong gần như tất cả các máy tính ngày nay.

Xây dựng một máy tính theo mô hình von Neumann phụ thuộc vào sự có sẵn của một thiết bị bộ nhớ phù hợp để lưu trữ chương trình. Trong suốt Thế chiến thứ hai, các nhà nghiên cứu đang làm việc trên vấn đề loại bỏ sự rối bời từ tín hiệu radar đã phát triển một loại bộ nhớ dạng đường trì hoãn, ứng dụng thực tế đầu tiên của nó là Delay-line memory, do J. Presper Eckert phát triển. Các bộ phát radar phát đi những xung năng lượng radio ngắn đều đặn, phản xạ từ đó được hiển thị trên một màn hình CRT. Vì các nhà điều khiển thường chỉ quan tâm đến các mục tiêu di chuyển, nên việc lọc ra bất kỳ phản xạ nào từ các đối tượng đứng yên là mong muốn. Việc lọc này được thực hiện bằng cách so sánh mỗi xung nhận được với xung trước đó và từ chối cả hai nếu chúng giống nhau, chỉ để lại một tín hiệu chứa chỉ hình ảnh của bất kỳ đối tượng nào đang di chuyển. Để lưu trữ mỗi xung nhận được để so sánh sau này, nó được đưa qua một đường truyền, làm trì hoãn chính xác theo thời gian giữa các xung được phát đi.

Turing gia nhập National Physical Laboratory (NPL) vào tháng 10 năm 1945, vào thời điểm mà các nhà khoa học trong Ministry of Supply đã kết luận rằng Anh cần một "Viện Toán học Quốc gia" để điều phối tính toán hỗ trợ máy. Một Bộ Môn Toán học được thành lập tại NPL, và vào ngày 19 tháng 2 năm 1946, Alan Turing trình bày một bài báo mô tả thiết kế của ông cho một máy tính lưu trữ chương trình điện tử được biết đến là Automatic Computing Engine (viết tắt: ACE, tạm dịch: Động cơ Tính Toán Tự Động). Đây là một trong những dự án được thành lập trong những năm sau Thế chiến thứ hai với mục tiêu xây dựng một máy tính lưu trữ chương trình. Đồng thời, EDVAC đang được phát triển tại Moore School of Electrical Engineering thuộc Đại học Pennsylvania, và Phòng Thí nghiệm Toán học thuộc Đại học Cambridge cũng đang làm việc trên EDSAC.

NPL không có chuyên môn để xây dựng một máy như ACE, nên họ liên lạc với Tommy Flowers tại Phòng Thí nghiệm Nghiên cứu Dollis Hill của Cơ quan Bưu điện Chung (GPO). Flowers, người thiết kế của Colossus, máy tính điện tử có thể lập trình đầu tiên trên thế giới, đã cam kết nơi khác và không thể tham gia dự án, tuy nhiên đội của ông đã xây dựng một số Delay-line memory cho ACE. Telecommunications Research Establishment (TRE) cũng được tiếp cận để được giúp đỡ, cũng như Maurice Wilkes tại Phòng Thí nghiệm Toán học thuộc Đại học Cambridge.

Bộ phận chính trách nhiệm của NPL quyết định rằng, trong số tất cả các công việc đang được thực hiện bởi TRE thay mặt cho họ, ACE sẽ được ưu tiên hàng đầu. Quyết định của NPL dẫn đến việc một đoàn đại diện của Bộ phận Vật lý của TRE thăm NPL vào ngày 22 tháng 11 năm 1946, đi kèm theo Frederic C. Williams và A. M. Uttley, cũng là thành viên của TRE. Williams đứng đầu một nhóm phát triển của TRE làm việc trên bộ nhớ CRT cho ứng dụng radar, như một phương án thay thế cho đường trì hoãn. Williams không có thời gian để làm việc trên ACE vì ông đã chấp nhận một chức giáo sư tại Đại học Manchester, và hầu hết các kỹ thuật viên mạch của ông đang được chuyển đến Bộ Năng lượng Nguyên tử. TRE đồng ý gửi một số kỹ thuật viên ít ỏi để làm việc dưới sự chỉ đạo của Williams tại trường đại học và hỗ trợ một nhóm nhỏ khác làm việc với Uttley tại TRE.

== Ống Williams–Kilburn ==
Mặc dù một số máy tính sớm như EDSAC, lấy cảm hứng từ thiết kế của EDVAC, sau này đã sử dụng hiệu quả bộ nhớ Delay-line memory, công nghệ này có một số nhược điểm: nó nặng, đắt và không cho phép truy cập dữ liệu theo cách ngẫu nhiên. Ngoài ra, vì dữ liệu được lưu trữ dưới dạng chuỗi sóng âm lan truyền qua một cột thủy ngân, nhiệt độ của thiết bị phải được kiểm soát rất cẩn thận, vì vận tốc âm thanh qua một chất phương truyền thay đổi theo nhiệt độ của nó. Williams đã thấy một thí nghiệm tại Bell Labs chứng minh hiệu quả của ống tia cực (CRT) như một phương án thay thế cho đường trì hoãn trong việc loại bỏ các phản xạ từ mặt đất khỏi tín hiệu radar. Trong khi làm việc tại TRE, ngay trước khi ông gia nhập Đại học Manchester vào tháng 12 năm 1946, ông và Tom Kilburn đã phát triển một dạng bộ nhớ điện tử được biết đến là ống Williams hoặc ống Williams–Kilburn, dựa trên một CRT tiêu chuẩn: thiết bị lưu trữ số điện tử ngẫu nhiên đầu tiên. Baby được thiết kế để chứng minh rằng đó là một thiết bị lưu trữ thực tế bằng cách chứng minh rằng dữ liệu bên trong nó có thể được đọc và ghi một cách đáng tin cậy ở tốc độ phù hợp cho việc sử dụng trong máy tính.

Để sử dụng trong một máy tính nhị phân, ống phải có khả năng lưu trữ một trong hai trạng thái tại mỗi vị trí bộ nhớ của nó, tương ứng với các chữ số nhị phân (bit) 0 và 1. Nó tận dụng sự điện tích dương hoặc âm tạo ra bằng cách hiển thị dấu gạch ngang hoặc dấu chấm tại bất kỳ vị trí nào trên màn hình CRT, hiện tượng được biết đến là phát tỏ cực. Một dấu gạch tạo ra một điện tích dương và một dấu chấm tạo ra một điện tích âm, có thể được bắt lấy bởi một tấm cảm biến trước màn hình; một điện tích âm đại diện cho 0, và một điện tích dương đại diện cho 1. Điện tích tan rã sau khoảng 0,2 giây, nhưng nó có thể được làm mới tự động từ dữ liệu bắt được bởi cảm biến.

Ống Williams được sử dụng trong Baby dựa trên CV1131, một CRT có đường kính 12 inch (300 mm) có sẵn thương mại, nhưng ống nhỏ hơn có đường kính 6 inch (150 mm), CV1097, được sử dụng trong Mark I.

== Nguồn gốc của dự án ==
Sau khi phát triển máy tính Colossus để giải mã tại Bletchley Park trong Thế chiến thứ hai, Max Newman cam kết phát triển một máy tính kết hợp cả các khái niệm toán học của Alan Turing và khái niệm lưu trữ chương trình mà John von Neumann đã mô tả. Năm 1945, ông được bổ nhiệm làm Giáo sư toán học thuần túy tại Đại học Manchester; ông đã mang theo 2 đồng nghiệp của mình trong dự án Colossus là Jack Good và David Rees, và tại đó, họ tuyển dụng F. C. Williams để làm ""người quản lý mạch"" cho một dự án máy tính mới mà ông đã đảm bảo nguồn tài trợ từ Hội Hoàng gia Luân Đôn.

Sau khi được bổ nhiệm làm "Giáo sư Kỹ thuật Điện" tại Đại học Manchester, Williams chiêu mộ đồng nghiệp từ TRE là Tom Kilburn. Đến mùa thu năm 1947, cặp đôi này đã tăng dung lượng lưu trữ của ống Williams từ một bit lên đến 2,048, được sắp xếp trong một mảng 64 x 32 bit, và chứng minh rằng nó có thể lưu trữ những bit đó trong bốn giờ. Kỹ sư Geoff Tootill gia nhập nhóm theo hợp đồng từ TRE vào tháng 9 năm 1947 và duy trì hợp đồng đến tháng 4 năm 1949.

Kilburn gặp khó khăn khi nhớ về sự ảnh hưởng đối với thiết kế máy của mình:

Jack Copeland giải thích rằng thiết kế đầu tiên của Kilburn (trước Baby), không có bộ nhớ tích lũy (phân tán, theo cách gọi của Jack Good), được dựa trên đầu vào từ Turing, nhưng sau đó ông chuyển sang một máy có bộ nhớ tích lũy (tập trung) theo loại được tư vấn bởi von Neumann, như được Jack Good và Max Newman viết và giảng dạy.

Bộ chỉ thị bao gồm bảy hoạt động của Baby là một tập con xấp xỉ của bộ mười hai hoạt động mà Jack Good đề xuất vào năm 1947 trong tài liệu đầu tiên được biết đến sử dụng thuật ngữ "Baby" cho máy này. Good không bao gồm một chỉ thị "dừng lại" và chỉ thị nhảy có điều kiện của ông được đề xuất phức tạp hơn so với những gì Baby thực hiện.

== Phát triển và thiết kế ==
Mặc dù Newman không đóng vai trò kỹ thuật trong quá trình phát triển máy tính Baby hoặc bất kỳ máy tính Manchester nào sau đó, ông đã tỏ ra hỗ trợ và hăng hái đối với dự án, và sắp xếp việc thu thập vật liệu từ hàng tồn kho chiến tranh để xây dựng nó, bao gồm cả khung kim loại của GPO và ""...vật liệu của hai Colossi hoàn chỉnh"" từ Bletchley.

Đến tháng 6 năm 1948, Baby đã được xây dựng và hoạt động. Nó có chiều dài 17 feet (5.2 m), chiều cao 7 feet 4 inches (2.24 m) và nặng gần 1 tấn Anh (1.0 tấn). Máy chứa 550 van (ống hút chân không) - 300 đoạn và 250 pentode - và có công suất tiêu thụ điện năng là 3500 watts. Đơn vị tính toán được xây dựng bằng van pentode EF50, mà đã được sử dụng rộng rãi trong thời chiến. Baby sử dụng một ống Williams để cung cấp bộ nhớ truy cập ngẫu nhiên (RAM) 32 x 32 bit, một ống thứ hai để giữ một bộ tích lũy 32 bit trong đó kết quả trung gian của một phép tính có thể được lưu trữ tạm thời và một ống thứ ba để giữ chỉ thị chương trình hiện tại cùng với địa chỉ của nó trong bộ nhớ. Một màn hình CRT thứ tư, không có bộ điện tử lưu trữ của ba ống khác, được sử dụng làm thiết bị đầu ra, có khả năng hiển thị mẫu bit của bất kỳ ống lưu trữ được chọn nào.

Mỗi từ RAM 32 bit có thể chứa hoặc là một chỉ thị chương trình hoặc dữ liệu. Trong một chỉ thị chương trình, bit 0–12 đại diện cho địa chỉ bộ nhớ của toán hạng được sử dụng và bit 13–15 chỉ định phép tính cần thực hiện, như lưu trữ một số trong bộ nhớ; 16 bit còn lại không được sử dụng. Bộ lệnh 0 toán tử của Baby có nghĩa là toán hạng thứ hai của bất kỳ phép tính nào là ngụ ý: bộ tích lũy hoặc bộ đếm chương trình (địa chỉ chỉ thị); chỉ thị chương trình chỉ định chỉ địa của dữ liệu trong bộ nhớ.

Một từ trong bộ nhớ của máy tính có thể được đọc, ghi hoặc làm mới trong 360 microseconds. Một chỉ thị mất bốn lần nhiều thời gian để thực hiện so với việc truy cập một từ từ bộ nhớ, tạo ra một tốc độ thực hiện chỉ thị khoảng 700 lần mỗi giây. Kho lưu trữ chính được làm mới liên tục, quá trình này mất 20 Mili giây để hoàn thành, vì mỗi trong số 32 từ của Baby phải được đọc và sau đó làm mới theo trình tự.

Baby sử dụng biểu diễn số âm bằng bù hai, như phần lớn máy tính hiện nay. Trong biểu diễn đó, giá trị của bit quan trọng nhất chỉ định dấu của một số; số dương có giá trị không trong vị trí đó và số âm có giá trị một. Do đó, phạm vi của các số có thể được giữ trong mỗi từ 32 bit là −231 đến +231 − 1 (thập phân: −2.147.483.648 đến +2.147.483.647).

== Chương trình ==
Định dạng chỉ thị của Baby có một trường mã hoá thao tác ba bit, cho phép tối đa tám (23) chỉ thị khác nhau. Ngược lại với quy ước hiện đại, bộ nhớ của máy được mô tả với các chữ số ít quan trọng ở bên trái; do đó, số một được biểu diễn trong ba bit là "100", thay vì "001" phổ biến hơn.

Các phép toán âm không thuận tiện là kết quả của việc Baby thiếu phần cứng để thực hiện bất kỳ phép toán số học nào ngoại trừ trừ và phủ định. Đã được xem xét là không cần thiết để xây dựng một bộ cộng trước khi bắt đầu thử nghiệm vì phép cộng có thể dễ dàng được thực hiện thông qua phép trừ, tức là x + y có thể được tính toán như là −(−x−y). Do đó, việc cộng hai số lại, X và Y, yêu cầu bốn chỉ thị:Chương trình được nhập dưới dạng nhị phân bằng cách duyệt qua từng từ của bộ nhớ theo lượt và sử dụng một bộ 32 nút và công tắc được biết đến là thiết bị đầu vào để đặt giá trị của từng bit của từng từ là 0 hoặc 1. Baby không có đầu đọc hoặc đầu đánh dấu dạng giấy.

=== Chương trình đầu tiên ===
Ba chương trình đã được viết cho máy tính. Chương trình đầu tiên, gồm 17 hướng dẫn, được viết bởi Kilburn và, như có thể xác định, đã chạy lần đầu vào ngày 21 tháng 6 năm 1948. Nó được thiết kế để tìm ước số lớn nhất của 218 (262,144) bằng cách thử mỗi số nguyên từ 218 - 1 xuống. Các phép chia được thực hiện bằng cách lặp lại phép trừ số bị chia. Baby thực hiện 3.5 triệu phép toán và mất 52 phút để đưa ra câu trả lời (131,072). Chương trình sử dụng tám từ bộ nhớ làm việc ngoài 17 từ chỉ thị của mình, tạo ra một kích thước chương trình là 25 từ.

Geoff Tootill viết một phiên bản sửa đổi của chương trình vào tháng sau, và vào giữa tháng 7, Alan Turing - người đã được bổ nhiệm làm một giảng viên ở khoa toán học của Đại học Manchester vào tháng 9 năm 1948 - đã nộp chương trình thứ ba, để thực hiện phép chia dài. Đến lúc đó, Turing đã được bổ nhiệm vào vị trí ảo Phó Giám đốc của "Phòng thí nghiệm Máy tính" tại đại học, mặc dù phòng thí nghiệm không trở thành hiện thực vật lý cho đến năm 1951.

== Các Biến thể Sau này ==
Williams và Kilburn báo cáo về Baby trong một lá thư đến Tạp chí Nature, được xuất bản vào tháng 9 năm 1948. Sự triển khai thành công của máy nhanh chóng dẫn đến việc xây dựng một máy tính thực tế hơn, Manchester Mark 1, công việc bắt đầu vào tháng 8 năm 1948. Phiên bản đầu tiên đã hoạt động vào tháng 4 năm 1949 và nó lại trực tiếp dẫn đến sự phát triển của Ferranti Mark 1, máy tính đa năng thương mại đầu tiên trên thế giới.

== Thừa kế ==
Năm 1998, một bản sao làm việc của Baby, hiện đang trưng bày tại Bảo tàng Khoa học và Công nghiệp ở Manchester, đã được xây dựng để kỷ niệm 50 năm ngày chạy chương trình đầu tiên của nó. Các buổi trình diễn của máy đang hoạt động được tổ chức đều đặn tại bảo tàng.

Năm 2008, một bức ảnh toàn cảnh ban đầu của toàn bộ máy tính đã được phát hiện tại Đại học Manchester. Bức ảnh, chụp vào ngày 15 tháng 12 năm 1948 bởi một sinh viên nghiên cứu tên Alec Robinson, đã được tái sản xuất trong The Illustrated London News vào tháng 6 năm 1949.

== Liên kết ngoài ==
- Computer 50 – The University of Manchester Celebrates the Birth of the Modern Computer, Lưu trữ từ computer50.org, một trang web kỷ niệm 50 năm của Baby vào năm 1998.
- Digital60 – Manchester Celebrating 60 Years of the Modern Computer, Lưu trữ từ computer60.org, một trang web kỷ niệm 60 năm Manchester Baby năm 2008
- The Manchester Small Scale Experimental Machine – "The Baby", Lưu trữ từ computer50.org
- Manchester Baby Simulator software
- BabyRace – Chạy chương trình gốc trên điện thoại di động và so sánh hiệu suất với Máy thí nghiệm quy mô nhỏ
- BBC article on Baby
- Oral history interview with Geoff Tootill, một thành viên của nhóm thiết kế và chế tạo Máy thí nghiệm quy mô nhỏ Manchester,recorded for An Oral History of British Science tại Thư viện Anh.
- SSEM (Baby) Documentation @ Computer ◆ Conservation ◆ Society