Quá trình phát triển được sử dụng cho mã trên các nhiệm vụ của Apollo 11?


57

Các nhiệm vụ Apollo có công nghệ không phức tạp hơn một máy tính bỏ túi.

Từ liên kết ở đây , có một thông tin về Máy tính hướng dẫn Apollo (AGC)

Máy tính hướng dẫn Apollo trên bo mạch (AGC) có dung tích khoảng 1 feet khối với 2K RAM 16 bit và 36K bộ nhớ dây lõi cứng có dây đồng được luồn hoặc không luồn qua lõi từ nhỏ. Các từ 16 bit thường là 14 bit dữ liệu (hoặc hai mã op), 1 bit dấu và 1 bit chẵn lẻ. Thời gian chu kỳ là 11,7 micro giây. Lập trình được thực hiện bằng ngôn ngữ lắp ráp và bằng ngôn ngữ diễn giải, bằng tiếng Ba Lan ngược.

Vì vậy, tôi đã tình cờ tìm thấy một số mã nguồn khi tôi nghiên cứu những gì ở đó và tôi đã nhận thấy những bình luận tuyệt vời (ví dụ: TẠM THỜI, TÔI HY VỌNG HY VỌNG)

VRTSTART    TS  WCHVERT
# Page 801
        CAF TWO     # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
        TS  WCHPHOLD
        TS  WCHPHASE
        TC  BANKCALL    # TEMPORARY, I HOPE HOPE HOPE
        CADR    STOPRATE    # TEMPORARY, I HOPE HOPE HOPE
        TC  DOWNFLAG    # PERMIT X-AXIS OVERRIDE
        ADRES   XOVINFLG
        TC  DOWNFLAG
        ADRES   REDFLAG
        TCF VERTGUID

Các chương trình thực tế trong tàu vũ trụ được lưu trữ trong bộ nhớ dây lõi , một công nghệ bộ nhớ cổ được tạo ra bằng cách (theo nghĩa đen) dệt vải / dây, trong đó các bit là các vòng vật lý của vật liệu ferrite. Bộ nhớ "lõi" có khả năng chống lại các tia vũ trụ. Trạng thái của một bit lõi sẽ không thay đổi khi bị bắn phá bởi bức xạ ngoài vũ trụ.

Phần mềm máy tính hướng dẫn ảo Apollo (AGC) cũng có trên GITHUB!

Một số tài liệu ở đây.

Một mẫu mã nguồn khác với ý kiến ​​tuyệt vời.

033911,000064: 32,3017    06037        FLAGORGY        TC       INTPRET      #  DIONYSIAN FLAG WAVING

    034090,000243: 32,3241    13247        BZF      P63SPOT4               #  BRANCH IF ANTENNA ALREADY IN POSITION 1
    034091,000244: 
    034092,000245: 32,3242    33254        CAF      CODE500                #  ASTRONAUT:     PLEASE CRANK THE
    034093,000246: 32,3243    04616        TC       BANKCALL               #                 SILLY THING AROUND
    034094,000247: 32,3244    20623        CADR     GOPERF1                               
    034095,000248: 32,3245    16001        TCF      GOTOP00H               #  TERMINATE
    034096,000249: 32,3246    13235        TCF      P63SPOT3               #  PROCEED        SEE IF HE'S LYING


    034101,000254: 32,3251    04635        TC       POSTJUMP               #  OFF TO SEE THE WIZARD ...
    034102,000255: 32,3252    74126        CADR     BURNBABY

Câu hỏi của tôi ở đây là:

  • Làm thế nào các đội viết nhiều mã này có thể làm cho nó hoạt động được cung cấp các công cụ tại thời điểm đó?

Bởi vì nếu bạn biên dịch quá nhiều mã được sử dụng trên Apollo 11 ... sẽ mất vài ngày, thậm chí vài tuần. Tôi thực sự nghi ngờ rằng các lập trình viên sau đó đã để lại mọi thứ xảy ra tình cờ.


4
Tôi đã có một chỉnh sửa khá quan trọng để làm cho điều này hy vọng nhiều hơn về chủ đề. Tôi nghĩ đó là một câu hỏi hấp dẫn và tôi hy vọng mọi người có thể trả lời một cách hiệu quả!
enderland

3
Đọc tin tặctháng người đàn ông huyền thoại . Có khá nhiều tài liệu trong đó - tôi không chắc nó sẽ phù hợp với câu trả lời ở đây.

2
Tiêu đề câu hỏi kiểu "Thẻ - Câu hỏi" không được khuyến khích trên Stack Exchange. Hãy để lại tiêu đề như nó là.

4
Không có chu trình biên dịch / sửa lỗi như câu hỏi của bạn cho thấy. Bạn đã không tạo bộ nhớ dây, kiểm tra nó và sau đó làm lại nếu nó không hoạt động; bạn đã nhận nó ngay lần đầu tiên
Robert Harvey

7
@RobertHarvey bạn HOPE HOPE HOPElần đầu tiên bạn hiểu đúng.

Câu trả lời:


13

Có một bộ phim tài liệu đáng yêu mà tôi đang cố gắng tìm hiểu về John 'Jack' Garman đã phải "phát minh" ra một "hệ điều hành đa chương trình được lên lịch ưu tiên". Điều này có thể có liên quan đến các mô-đun hạ cánh mặc dù. Câu chuyện là khi bạn hạ cánh tàu đổ bộ, tốt nhất bạn nên ưu tiên hướng dẫn bởi vì những thứ khác, như nhiệt độ trong cabin trong 15 giây tiếp theo, không thực sự quan trọng nếu bạn gặp sự cố và bị đốt cháy. Trong lần bắn đầu tiên, chúng làm quá tải máy tính và báo động bắt đầu xảy ra do một số chương trình con không được thực thi. Có quá nhiều tải, nhưng nhờ vào khái niệm ưu tiên, mà Garman đã thấy trước và xây dựng vì ông nghĩ rằng đó là một ý tưởng tốt, các thói quen ưu tiên thấp đã không làm giảm thói quen hạ cánh ưu tiên cao hơn.

Xem phim tài liệu vào thời điểm đó, tôi rất ngạc nhiên về việc nó giống như thực hiện một phép tái cấu trúc chính cho mã mà không báo cho quản lý và gần như bị sa thải vì bạn đã trễ về những gì bạn phải làm. Tuy nhiên, trong trường hợp này, việc tái cấu trúc được đưa ra ánh sáng khi lý do báo động được điều tra. (Và quản lý vẫn còn bực mình! :-)

Một số liên kết:

Không, một lỗi trong danh sách kiểm tra của người Viking đã gần như không làm hỏng lần hạ cánh mặt trăng đầu tiên

NÓI CHUYỆN TỪ MÁY TÍNH HƯỚNG DẪN MODULE LUNAR

Cách họ xây dựng nó: Phần mềm của Apollo 11

Dự án Lịch sử bằng miệng của Trung tâm Vũ trụ NASA Johnson Đã chỉnh sửa Bảng điểm Lịch sử bằng miệng

Lịch sử tóm tắt về chương trình Apollo của NASA Trích dẫn: Năm phút sau khi đốt cháy và cách 1.800 m trên bề mặt Mặt trăng, máy tính điều hướng và điều hướng LM đã tạo ra báo động đầu tiên của một số báo động chương trình "1202" và "1201" bất ngờ. Kỹ sư máy tính tại Trung tâm điều khiển Mission ở Houston, Jack Garman, nói với nhân viên hướng dẫn Steve Bales rằng việc tiếp tục đi xuống là an toàn. Những báo động này là dấu hiệu của "tràn điều hành", có nghĩa là máy tính hướng dẫn không thể hoàn thành tất cả các nhiệm vụ của nó trong thời gian thực và phải hoãn một số trong số chúng.

Nhắc lại trích đoạn 'Bước nhảy khổng lồ' : Chúng tôi biết điều đó là gì và điều đó không nên xảy ra. Nhưng chúng tôi đã thiết kế một hệ thống cố gắng hết sức để phục hồi sau mọi điều kiện quá tải. Vì vậy, tôi nhớ đã nghe [kỹ sư máy tính của NASA] Jack Garman hét lên, "Đi, đi!" Và họ đã đi. Sau đó, chúng tôi lắng nghe khi Neil bay LEM và cố gắng tìm một vị trí tốt để chạm vào. Lo lắng mới của chúng tôi là thiếu nhiên liệu còn lại. Nhưng cuối cùng chúng tôi đã nghe thông báo liên lạc và sau đó, "Đại bàng đã hạ cánh."

Phỏng vấn Jack Garman

EDIT: Có lẽ đây là phim tài liệu: Apollo 11: The Untold Story (2006)

Diễn viên: John R. Garman ...
Chính anh ta - Kỹ sư máy tính Apollo 11 (vai Jack Garman)

(Trong số những người khác).

Cập nhật: Một hacker từ Nam Phi vừa giải cứu máy tính NASA đầu tiên trong không gian


Tôi biết rằng câu chuyện nghe có vẻ quen thuộc! Phần "Apollo 11" có thêm thông tin về câu chuyện này tại en.wikipedia.org/wiki/Margaret_
Hamilton_(scientist

31

Nếu tôi hiểu chính xác, quá trình phát triển là đánh giá và thử nghiệm ngang hàng.

Nhóm nghiên cứu bao gồm những người như "Bác sĩ toán học" - những người cực kỳ tận tâm, thông minh, đam mê, có định hướng chi tiết, những người có cuộc sống cống hiến cho công việc của họ. Vì vậy, khi tôi nói đánh giá ngang hàng, tôi có nghĩa là nhiều đánh giá ngang hàng trong suốt nhiều tháng (hơn một năm).

Các nhà phát triển này đã "chạy các mô phỏng trong đầu", "gỡ lỗi phần mềm trên giấy" và làm việc trong các nhóm với nhiều nhà phát triển nhìn vào cùng một mã cho đến khi họ tin rằng nó là chính xác. Có nhiều đội - mỗi đội làm việc trên một phần của toàn bộ.

Giáo sư Phương pháp số của tôi tại Đại học bang Ohio (Mùa xuân năm 96) đã viết mã quyết định khi nào sẽ khởi động một giai đoạn của tên lửa tăng cường. Ông mô tả bản in có kích thước của danh bạ điện thoại (Vì vậy, có thể dày 2,5 đến 3,5 inch giấy 8,5 x 11 inch - ông không mô tả kích thước phông chữ) của mã Fortran.

Khi bị thuyết phục, họ đã phóng một tên lửa không người lái (tên lửa về mặt kỹ thuật không có con quay hồi chuyển) với một đài phát thanh trên tàu phát ra tiếng bíp đều đặn. Họ lắng nghe tiếng bíp cho đến khi họ mong đợi chiếc radio sẽ tác động lên mặt trăng (đâm vào nó và phá hủy chính nó) và ngừng phát ra tiếng bíp. Họ biết rằng nếu họ bỏ lỡ, đài sẽ phát ra tiếng bíp dài quá thời gian tính toán của tác động. Tác động xảy ra 15 giây sau thời gian tính toán.

Câu chuyện đáng ngưỡng mộ này là những hồi ức của tôi từ một chuyến thăm văn phòng với bác sĩ. Ông đã rất già, và đó là một thời gian dài trước đây. Đây là hồi ức tốt nhất của tôi.


2
Ông mô tả bản in có kích thước của danh bạ điện thoại (Vì vậy, có thể dày 2,5 đến 3,5 inch giấy 8,5 x 11 inch Nói chung, mã được in ở chế độ ngang với khoảng 55 - 60 dòng trên một trang. Một ram (100 tờ) giấy in dày khoảng 1,75 inch.
Gilbert Le Blanc

@GilbertLeBlanc Một ram thường là 500 tờ. (đôi khi 480)
joshp 17/2/2016

@joshp: Bạn nói đúng. 500 tờ giấy in dày khoảng 1,75 inch.
Gilbert Le Blanc

15

AGC được kiểm soát với các động từ và danh từ

Phần mềm lệnh Apollo không được viết theo bất kỳ cú pháp nào mà người dùng sẽ nhận ra ngày hôm nay. Các phi hành gia nhập lệnh bằng số, với mỗi số có hai chữ số đại diện cho một động từ hoặc danh từ. Động từ mô tả hành động được thực hiện và danh từ chỉ định dữ liệu bị ảnh hưởng bởi hành động của động từ.

Các phi hành gia ghét thiết lập động từ và danh từ

Ramón Alonso, một trong những nhà phát triển phần cứng AGC ban đầu, cho biết giao diện đã được phát minh để gây ấn tượng với khách đến phòng thí nghiệm của họ, nhưng bị mắc kẹt trong các chuyến bay khi không ai phát triển giao diện tốt hơn. Các nhà phê bình cho rằng đó không phải là "khoa học", và các phi hành gia đầu tiên là tất cả các phi công máy bay phản lực ưu tú, các mặt số và công tắc ưa thích, tương tự như bảng điều khiển máy bay.

"AGC rất chậm, nhưng rất đáng tin cậy và rất nhỏ vào thời điểm đó trong lịch sử máy tính kỹ thuật số. Đó là lần đầu tiên sử dụng các mạch tích hợp."

Phần mềm như được thiết kế về cơ bản được xây dựng từ đầu bởi MIT.

Bạn có thể tải xuống và cài đặt chương trình giả lập Máy tính hướng dẫn Apollo trên máy tính cá nhân của mình, không vấn đề gì. Đây là những gì nó trông giống như trên Mac OS X.

nhập mô tả hình ảnh ở đây


8

Giống như hầu hết các dự án phần mềm khác, nó được thực hiện dưới áp lực chất lượng và thời hạn. May mắn thay, một kho lưu trữ lớn các tài liệu từ người quản lý dự án phần mềm Howard W. Thay Bill Dir Tindall, Jr. có sẵn ở đây .

Nếu bạn lấy mẫu các bản ghi nhớ, bạn có thể hiểu rất rõ về xung đột thông thường giữa thời gian, tính năng và khiếm khuyết. Điều đáng chú ý là sự phát triển đã tiến hành trong một số năm như phần còn lại của dự án.

Thiết kế hệ thống bắt đầu vào quý 2 năm 1961 và NASA đã cài đặt phiên bản Block I trong tàu vũ trụ vào ngày 22 tháng 9 năm 1965. Phát hành phần mềm gốc (có tên CORONA) là vào tháng 1 năm 1966, với chuyến bay đầu tiên vào ngày 25 tháng 8 năm 1966. 1966. Chưa đầy 3 năm sau đó, các nhà thiết kế đã đạt được mục tiêu chương trình cuối cùng ( http://history.nasa.gov/computers/Ch2-5.html )

Tôi không thể tìm thấy tài liệu tham khảo cụ thể về cách phần mềm được tạo ra, nhưng cho đến ngày tôi chỉ có thể giả định rằng phần lớn được thực hiện trên bút và giấy, với "mô phỏng" được thực hiện thủ công. Dường như có một hệ thống để tải các chương trình vào AGC bằng thẻ đục lỗ, có lẽ là để thử nghiệm "nhanh" trên mặt đất mà không cần phải chế tạo bộ nhớ dây.

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.