系统设计:实现设计目标
1. 引言:冗余示例
在复杂计算机系统的设计中,架构决策至关重要。以航天飞机的计算机系统为例,其设计充分体现了设计目标和非功能需求对架构决策的驱动作用。
航天飞机与以往航天器不同,它被设计为自主运行,飞行任务时间更长,机组人员更多,且可能多个任务同时在太空执行。因此,航天飞机在中止任务前需要能够容忍多次故障,其设计包含了许多冗余特性,特别是用于制导、导航和高度控制的容错计算机系统。
航天器计算机系统使用冗余并非新鲜事。发射阿波罗航天器的土星火箭在制导系统中采用了三重模块化冗余,即计算机中的每个组件都有三个副本。当单个组件产生与其他两个不同的输出时,就能检测到故障,通过投票组件比较输出并屏蔽单个故障。但这种计算机制造成本高,只能处理局部单个故障,无法应对像阿波罗13号那样的重大故障。
天空实验室空间站则采用了不同方法,其计算机系统完全复制并位于空间站两端。当一台计算机出现故障时,另一台会接管工作。不过,对于航天飞机来说,这种缓慢的切换是不可接受的,因为其计算机系统负责起飞和着陆等高频率任务。
因此,航天飞机需要一个在系统层面复制的计算机系统,既能像天空实验室那样,又能像土星火箭一样同时运行,以便在短时间内完成切换。美国国家航空航天局(NASA)最初要求航天飞机在中止任务前能承受两次连续故障,这导致系统设计采用了五台相同的计算机运行相同软件。若两台计算机故障,剩下三台可构成用于着陆的三重冗余系统;若在下降过程中第三台计算机故障,剩下两台也足以确保安全着陆。
后来,由于成本考虑,NASA将要求降低为在中止任务前允许一次故障。但由于五台计算机的采购已经完成且已纳入设计,第五台计算机演变成了备用系统。四重冗
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



