处理器的情感历史:IBM / 370

第一部分描述了许多不同的处理器一直到90年代中期。 IBM大型机没有空间,因为这些系统很长时间没有使用处理器芯片了。但是,IBM大型机与其他计算机系统密切相关,长期以来一直是计算机技术的最佳范例之一,几乎每个人都以一种或另一种方式对其进行指导。顺便说一句,Habr博客的格式(如Wikipedia)允许进行编辑,从而可以在考虑到评论和其他收到的其他信息的情况下,对第一部分的内容进行大量修改。



本部分重点比较大型机机器语言与70年代至90年代流行的其他系统。这些主要是x86、68k,VAX和ARM。系统390,尤其是Z被认为是非常零碎的-主要关注点是系统370。



1965年开始向客户交付第一批360系统,从1970年开始向客户提供更先进的370系统。到目前为止,IBM一直在与这些系统保持软件兼容性!令人惊讶的是,您可能会猜到,自1990年以来,在390个系统问世之前,大型机使用的是24位地址,也就是说,它们可以寻址的内存不超过16 MB,例如与1979年发布的68000 MB相同。65816或1982年发布的32016。VAX原生支持32位寻址。 1980年代中期出现的流行的68020或80386处理器也支持32位地址。实际上,对于80年代下半叶的最佳系统而言,16 MB的内存已经不够用。但是,自1983年以来,IBM一直在生产370兼容计算机,这些计算机可以扩展使用31个地址数字,从而消除了性能更好的计算机的内存问题。这些扩展和390系统异常独特地使用的是31位地址,而不是完整的32位地址。 2000年,IBM宣布了第一个使用64位寻址和数据的Z系统。自2008年以来,Z系统一直在使用处理器芯片。自2007年以来,他们一直在尝试将Z架构与POWER架构集成在单个芯片中,但到目前为止没有成功。到目前为止,只有英特尔设法将CISC和RISC集成在一个芯片中-1995年的Pentium Pro成为同类芯片中的第一款。





IBM的System / 370-145与磁带驱动器2401和一台打印机,而不是显示,1971年它可能令人吃惊,有尽管电视机已经大量生产了超过20年在这个非常昂贵的系统中没有显示。



顺便说一句,一些权威人士认为,第一个串行个人电脑是IBM 5100,自1975年起投入生产,可通过硬件仿真器执行系统360指令,直到1980年代中期才生产改进版本。不过,Wang 2200还是第一台以价格(大约10,000美元)计,这些第一批个人计算机显然不适合家庭使用。





IBM 5100,APL变体



随着IBM PC体系结构的出现,事实证明,它确定了数十年来计算技术的主要发展方向,IBM于1983年尝试将几乎所有当时最好的计算机技术组合到一个PC XT / 370产品中:其370系统,IBM PC XT,摩托罗拉68000和Intel8087。该XT / 370可用作与大型机(如常规IBM XT)配合使用或直接运行大型机软件的智能终端。有趣的是,XT / 370增加了对使用虚拟内存的支持,这需要两个68000。1984年,随着PC AT的问世,AT / 370“个人大型机”的改进版本得以发布,其速度是大型机模式下XT的两倍。 / 370。这种系统的历史并没有到此结束,因为已经生产了90多种类似产品,对应390种系统。据我所知,这对于Z系统还没有完成。



IBM在大型机上使用一种非常不寻常的商业模式,即不出售而是出租计算机。这种模型的优点之一是,它保证了设备的不断升级,过时的设备会自动替换为相应类别中更新的设备。该模型也有缺点。例如,对于那些研究计算机技术历史的人来说,一个特别明显的缺点是使用过的计算机几乎总是被丢弃,因此几乎不可能在任何博物馆中找到它们。



惊讶地发现在LCM中有活动的IBM 4361系统!但是有理由相信这可能不是真正的铁。由于某些原因,博物馆参观者无法使用此计算机。目前还不清楚应该在那展示哪种模型,尽管博物馆中的其他计算机都可以非常准确地识别出来,但这仍然不清楚。在4361系统中,三个模型3、4和5是已知的,模型3出现在模型4和5之后。但是博物馆中的系统自称为模型1。这可能是原型。然而,博物馆工作人员没有回答有关身份识别协助的直接问题,尽管事实上他们很快就回答了其他通常很困难的问题。尽管不是绝对可靠,但执行代码时机的某些特征为仿真器最有可能连接到网络奠定了基础。夏天在博物馆里,与科维德有关,显然已切换到仿真器...仍有机会通过网络访问铁主机HNET,但我还没有成功。



但是,不管是什么,任何人都可以连接并尝试以与70年代中期以来高薪专家工作相同的方式工作。价格是如此令人难以置信。例如,在80年代中期,一个小时的计算机时间花费超过20美元,而您仍然必须为磁盘空间支付额外的费用!没错,我们谈论的是大型机的运行时间,而不是工作的终点。因此,例如,在一个小时的实际工作中编辑文本时,很少需要花费5分钟的时间。大型机本身的价格也很棒。例如,英特尔员工回忆说,在80年代初,他们只有一个大型机可以使用。它的性能为10 MIPS,当时的价格约为2000万美元,是今天的三倍!有趣,与更便宜的VAX系统相比,英特尔更喜欢这种计算机。现在甚至Raspberry Pi相当于一粒药丸大小,售价几美元,可以轻松提供1000 MIPS以上的速度。顺便说一句,在Raspberry Pi或几乎任何现代计算机上,您都可以运行IBM / 370仿真器,其运行速度比80甚至90年代的任何IBM系统都快得多。但是,必须配置模拟器,并且并非免费提供IBM / 370的所有有用程序,因此,自由访问经过良好调整的系统通常是解决大型机的最佳方法。令人惊讶的是,甚至在手机上也可以使用这种访​​问程序,即终端仿真器3270!顺便说一句,我设法在Hercules模拟器上设置了我的VM / CMS系统,并弄清了文件传输,但是至少花了一周的时间。



Hercules仿真器可以在以后的IBM / 390和IBM / Z系统中进行仿真,但是由于软件许可问题,这很难完成。为了说明这些问题,我将举一个著名的案例,即IBM坚持从已出版的书中删除“仿真”部分!在本书的现代电子版本中,此部分不存在;只能在印刷版中找到它,也可以在专用于自由软件的站点上以单独文件的形式找到它。事实是,自2000年代初以来,在常规PC上进行仿真可能比在价格昂贵得多的大型机上执行仿真要快得多。因此,IBM必须更改其软件许可证,以便只能在从IBM购买的硬件上合法使用它。当然,我们并不是说仿真器比最好的大型机要快,它们仅显示出明显更高的性能成本比。



使用Z或390系统的一种方法是在这些系统的仿真器上安装Linux。对于390和Z,至少可以使用Ubuntu和Debian发行版。值得注意的是,Linux的快速发展很大程度上归功于IBM的大力支持。特别是,IBM在2001年投资了10亿美元用于Linux开发。



现在让我们考虑与360兼容的系统的机器语言的功能。此类系统的基本汇编程序称为BAL-基本汇编语言。令人惊讶的是,如果可以相信关于IBM的谣言,那么汇编器仍然是其中一种主要的可运行编程语言。



所考虑的大型机的组装者具有许多古老的特征,这些特征在后来出现的其他知名体系结构中已经不存在。例如,它说BAL助记符确定参数的类型。以x86汇编程序指令为例,MOV EAX,EBX并且MOV EAX,address-都使用MOV助记符。对于BAL,在这种情况下,命令中分别使用了不同的助记符LR和L,LR 0,1并且L 0,address...但是,类似的不同助记符允许使用数字命名寄存器,尽管通常宏R0,R1,...而不是数字0、1 ...是宏程序包中为编程方便而定义的第一件事。另一个过时的做法是在条件编译结构中使用标签跳转,尽管在我看来,这有时比块结构更方便。但是最著名的古迹是使用EBCDIC编码来处理符号信息。在这种编码方式中,即使对于昨天也很奇怪,英语字母的字母也不是连续编码的,例如,字母I的编码为201,下一个J为209!这种编码来自在计算机时代之前出现的用于打孔卡的技术。 System 360在硬件上也支持ASCII,但是在其古老而又被人们遗忘的版本中,其中数字0的字符具有代码80,而不是现在的48。据我所知,ASCII大型机最好甚至不要尝试使用。 ASCII支持在370个系统中已被删除,但在390个系统中引入了新的水平,一些BAL助记符的超短性甚至是非负性引人注目,例如N表示AND,O-OR,X-XOR,A-ADD,S-SUBTRACT,M-乘...



BAL汇编程序允许您使用三种基本数据类型:二进制,十进制和实数。 390系统使用另一种特殊类型来处理实数。一些Z系统还可以使用完全唯一的数据,例如十进制实数。与每种类型一起使用的说明构成了一种特殊且相当孤立的说明类。通常,除了极少数例外,所有与360兼容的系统都支持十进制和实数算术指令。如您所知,对于x86或68k架构,对立即数的支持并没有立即出现,并且很长一段时间是可选的,而对十进制数的支持与二进制算术并不是完全分开的,而是一种扩展。



对于实数和二进制数,使用不同的寄存器集,对于十进制数,根本不使用寄存器。系统370为二进制整数提供16个通用32位寄存器,程序计数器是处理器状态字的一部分。没有单独的堆栈,可以使用任何寄存器进行组织-这是随后在ARM中实现堆栈工作的方式。子例程调用也可以像ARM中那样通过链接寄存器来完成。所有寄存器几乎总是可互换的,例外非常罕见。如果将二进制寄存器系统BAL与竞争性的VAX体系结构进行比较,您会发现VAX少了一个寄存器。 ARM也是如此。



熟悉x86汇编程序的人似乎对指令中的操作数的结构相当熟悉。对于二进制数,操作数具有寄存器-寄存器或寄存器存储器结构,对于后一种情况,可以从内存中加载32位和16位有符号可扩展值。例如,x86指令的类似物ADD EAX,EBX将是AR 0,1ADD EAX,address- A 0,addressADD EAX,address[EBX]- A 0,address(1)ADD EAX,address[EBX][EDX]- A 0,address(1,3)但是,360系统及其以后的开发都不知道如何进行缩放,例如,您ADD EAX,address[8*EBX]不能使用一个命令写入BAL。另一方面,x86不知道如何使用16位带符号扩展名,例如BAL命令AH 0,address,这意味着在x86上从内存中获取一个16位带符号的数字并将其添加到寄存器0,将需要两条指令来实现。



BAL的一个罕见功能是,对于有符号和无符号数字,有单独的加减乘除指令,而BAL中的无符号运算称为布尔值。这种怪异是由于大多数其他架构所熟悉的360架构中缺少标志造成的。而是只使用两个位,它们由不同的指令设置不同!有符号和无符号操作之间的唯一区别是,它们将设置的两个属性位设置为不同。对于对其执行的已签名操作,您可以找出结果是否为零,是正数还是负数,是否发生溢出,以及对于未签名的操作,其结果是否为零以及是否发生转帐或贷款。条件分支指令允许2位可能的情况的所有16个子集。由于今天这种带有操作标志的不寻常工作,很难快速理解条件分支指令。尽管BAL扩展通常会为条件跳转添加易于阅读的宏,但您无需解析4位中的每一个。在这里,为了公平起见,您可以看到有单独的命令用于带符号和无符号的加减运算,例如,在MIPS体系结构中,根本没有标记!例如,在MIPS架构中,根本没有标志!例如,在MIPS体系结构中,根本没有标志!



另一个罕见的功能是在单独的命令中进行有符号和无符号的比较。我不仅在MIPS,而且在MicroBlaze也遇到了类似的人。顺便说一下,在后者中,传输是操作标志中唯一受支持的标志。



在与IBM 360兼容的系统中,没有带有进位标志的算术运算,因此如果我们需要使用二进制数(例如以128位数字),则必须在执行前32位运算以组织它们的加法或减法后检查进位符号。并在必要时进行过渡。与x86,ARM,68k或什至6502相比,这当然很麻烦,但是在以后的MIPS上却更加麻烦。转移的常规工作仅在Z系统中完成。



BAL中没有循环移位,但是非循环移位(如x86中一样)可以是单个或两倍。但是,BAL对于无符号和有符号的数字有单独的移位指令,只有后一种设置标志标志。显然,两种情况左移的结果仅在标志方面有所不同。自旋仅添加到390个系统。



在BAL中用于加载寄存器的命令中,最有可能是唯一的。您可以加载整数模块,该模块的取反或带有改变符号的数字的模块-远程相似的东西我仅在ARM体系结构中遇到过。这里应该注意的是360的整个体系结构倾向于符号运算,而该体系结构中的无符号算法则是次要的。最初,BAL没有无符号除法和乘法,它们仅被添加到系统390。加载寄存器时,标志以及x86中的标志都不会改变,但是有一个特殊的引导命令来设置标志-这再次提醒ARM,在这里可以设置标志执政。



所有带符号的算术运算(包括移位)都可能引发溢出异常。是否引发异常取决于状态寄存器中的特殊掩码标志。有趣的是,BAL中的二进制除法和乘法根本不影响标志-在这里您可以回忆起x86,其中除法仅破坏标志。



BAL中的按位逻辑运算由通常的AND,OR,异或表示,即没有单独的取反运算。逻辑运算不仅可以具有寄存器-寄存器或寄存器-存储器结构,还可以具有“存储器常数”或“存储器-存储器”-后一种寻址方法类似于十进制数。 “内存常数”类型的寻址仅适用于字节。显然,对于逻辑运算,与算术不同,不可能使用16位数字。对于存储器到存储器的寻址,您可以处理最大256个字节的数据!事实证明,我们有三种类型的数据用于逻辑运算:字节,32位字,字节序列-以及每种类型的特殊指令,这在某种程度上是非通用的。



BAL中的逻辑操作与用于传输字节的操作相邻。除了通常使用一个命令最多传输256个字节外,还有一条独特的指令可用于传输四字节字节。您只能发送字节的上半部分或下半部分,而其他半部分在复制期间保留其值!当使用字符和十进制信息时,需要这种奇怪的操作来支持BAL功能。对于370个系统,还有一次转发和比较指令,一次最多可超过1600万字节,并且可以被中断。令人惊讶的是,用于处理多达256个字节的块的慢速命令也不会被中断,这会在响应中断请求时产生令人不快的延迟。传输命令也可用于用指定的字节填充内存。除了在内存之间传输外,还可以将各个字节设置为给定值。显然,除x和390的新指令外,用于传输字节的指令也更先进。



在寄存器中,您不仅可以加载给定地址的值,还可以加载地址本身,如x86或68k的LEA命令一样。此功能还允许您将所需的常数直接加载到寄存器中,尽管其最大值不能大于4095。它还允许您将寄存器递增不超过4095。但是寄存器的减量只能执行1。增量和减量-这些是地址命令,因此它们不会更改标志。您可以将内存中一个字中的单个字节甚至字节组加载到寄存器中,例如,仅将第一个和第三个字节加载-这对于仅通过一系列4条命令为我所知的所有其他32位体系结构都是可能的。同样,BAL只允许将寄存器的一部分转储到内存中。



BAL系列指令非常专业-在其他体系结构中,这些指令是通过一系列更简单的指令实现的。例如,TR指令允许您转换字符串-一个参数指定要转换的字符串,另一个参数指定转换表的地址。该指令的一个特殊变体TRT可用于扫描给定的字符串并跳过空字符-这是标准C strpos调用的功能ED和EDMK指令是完全唯一的-它们具有原始sprintf的功能!但是,几乎所有的字符串操作都被限制为最大字符串长度,不超过255个字节,这大大降低了其功耗。



在BAL中,由于缺乏旋转或SWAP类型的命令,很难使用16位无符号值。使用390个系统,此问题已得到改善。某些BAL指令已被弃用,例如MVO半字节移位指令已被更方便的SRP取代。对于块传输和比较,最好使用新指令,尽管由于它们使用了不同的寻址方式,在某些罕见情况下,这可能不是最佳选择。



已有四种基本BAL寻址模式的示例。对于三地址命令,还有第五个。 BAL中不提供诸如VAX,68k,PDP-11甚至6809自动递增或递减模式之类的模式。也没有像VAX,68020或PDP-11这样的DIMM模式。而且,当然,与VAX或PDP-11汇编程序不同,BAL是完全非正交的。 BAL最接近最成功的现代体系结构x86和ARM汇编器。 BAL中操作数的顺序从右到左与x86的Intel汇编器或ARM汇编器中的操作数相同,因此与VAX,PDP-11或68k不同。尽管BAL中数据的字节顺序是从大到小(MSB),与x86,ARM或VAX不同,但它对应于68k或MIPS可接受的格式。



只有通过内存到内存寻址才能在BAL中实现带十进制数字的运算。十进制数最多可以指定16个字节的块,从而允许使用最多31个小数位的数字。这对应于107位二进制数的精度。因此,只有最先进的使用二进制整数的编程系统才能处理比60年前的360系统更大的值!当然可以通过二进制算术实现任意大的数字,但是由于某种原因直到最近,还没有流行的编程语言支持比古代系统360大的数字。即使到现在,对x86的128位整数的支持通常也只是非官方的扩展,例如对于GCC。



BAL上的十进制数字是唯一表示的,它们必须存储符号-VAX,x86、68k等都没有这种东西。此外,符号存储在数字表示的最后一个字节中!对于十进制数字,BAL直接支持所有基本运算:加,减,乘甚至除-在我所知道的任何其他体系结构中也找不到。此外,BAL还具有复制,比较和移位十进制数字的说明。前面提到的MVO和SRP指令仅用于此类移位。只能对压缩的十进制数字执行运算,但是要打印它们,必须将其解压缩,并且要表示BAL中的解压缩数字,还需要一个符号,在这种情况下,该符号不会占用空间,因为它位于上四边形中,因此需要特殊操作笔记本在打印之前。奇怪的是,装箱和拆箱操作只能在不超过16个字节的十进制数字解压缩的情况下进行,这仅允许它们使用15位数字。可以通过使用ED或EDMK进行拆包指令来解决此不愉快的问题,但是打包大量未拆包的产品将必须通过一个非常简单的指令序列来完成。新说明已添加到390系统中,以解决此问题。奇怪的是,打包和拆包指令可用于任何二进制数据,而不仅仅是十进制。可以通过使用ED或EDMK进行拆包指令来解决此不愉快的问题,但是打包大量未拆包的产品将必须通过一个非常简单的指令序列来完成。新指令已添加到390系统中,以解决此问题。奇怪的是,打包和拆包指令可用于任何二进制数据,而不仅仅是十进制。可以通过使用ED或EDMK进行拆包指令来解决此不愉快的问题,但是打包大量未拆包的产品将必须通过一个不是很简单的指令序列来完成。新指令已添加到390系统中,以解决此问题。奇怪的是,打包和拆包指令可用于任何二进制数据,而不仅仅是十进制。



BAL具有特殊的特殊指令,使您可以一次将二进制数转换为压缩的十进制,反之亦然。对于这些指令中的十进制数字,始终分配8个字节,即15位数字和一个符号。但是,该32位寄存器仅足以表示一个与9位十进制数字相对应的有符号数字,因此,并非正确BAL格式的每个十进制数字都可以在一个命令中转换为二进制。对于Z系统,存在有关此类转换的扩展说明。



BAL中的跳转指令不同之处在于,通常它们是成对的-跳转地址可以显式设置,也可以通过寄存器的内容设置-在许多其他体系结构中,沿着寄存器内容的跳转仅用于无条件跳转。顺便说一下,BAL中没有无条件的跳转,它们是通过设置始终为true的条件来实现的,这与ARM体系结构相似。如上所述,BAL中的条件分支具有唯一的语法。考虑例如指令BT 9,address,这意味着在满足条件0和3的情况下进行跳转,但是不同命令后的条件意味着不同的事情。例如,在带符号加法之后,这些条件表示“结果为0或发生溢出”,而在无符号加法之后,则为“结果为0且没有进位,或者结果不为0且有进位”。尽管繁琐和有些冗余,但必须承认,这种用于转换条件的系统可能是已知的最灵活的系统。该示例命令中的9个用于二进制表示1001,即,它设置了位数-系统本身使用4位对条件的所有组合进行编码,也用于ARM。除了BAL中的条件跳转之外,还有一些递减的计数器跳转,与汇编程序Z80,x86、68k,PDP-11等大致相同。但是BAL也有两个完全独特的跳转指令,取决于寄存器操作数之一的数量,可以是三个或四个地址!在这些独特的指令中,将两个寄存器加在一起,并将所得的总和与另一个寄存器的内容进行比较,比较结果确定是否跳转。这些异常的指令被认为对于使用跳转表很有用。



如前所述,通过简单地将返回地址存储在寄存器中,无需使用堆栈即可实现BAL中的子例程调用。但是,用于此类调用的BAL指令(其中之一也称为BAL)不仅保留返回地址,而且还保留状态寄存器的一部分,特别是条件标志,当前指令的长度,甚至是可选异常(例如整数或十进制)的掩码溢出-上面已经提到过。这种不寻常的扩展信息存储是由于以下事实造成的:大型机体系结构中的指令计数器是机器状态字的上部,而用于调用子例程的指令则机械地保留了其上部。从子例程返回没有特殊的命令,您需要使用通常的跳转到寄存器中的地址。在390系统中,与向31位体系结构的转换有关,出现了用于调用甚至从子例程返回的新指令。新指令允许在一个程序中灵活使用以不同模式执行的代码。



为了快速调用单命令子例程,BAL具有唯一的EX指令,该指令在给定地址执行该指令,然后继续执行下一条指令。 EX指令可以修改被调用的指令,这使您可以在被调用的指令中使用任何所需的寄存器,也可以设置用于批量传输字节的参数。 TMS9900命令系统中也有类似但更简单的指令。



最初,BAL没有相对可重定位的过渡,例如Z80或x86。它们仅添加到390个系统中。



命令SPM,TM,TS,STCK和STPT也有些不寻常。它们中的第一个允许一个命令设置所有操作标志和可选的异常掩码。 TM命令允许您检查一组位并识别三种情况:全零,全一,零和一的混合。在其他体系结构中,不能通过一个命令来执行此检查。但是,TM仅适用于内存中的单个字节。与多个处理器一起使用时使用TS-类似的命令用于68k。 STCK指令读取外部(!)定时器的值,STPT指令读取内置在处理器电路中的内部定时器的值。奇怪,但STPT具有特权,但STCK没有。



还值得一提的是CS和CDS指令,它们旨在支持多处理工作。它们已经针对370个系统实现,也就是说,自70年代初以来就已经可用。在x86中,CS的类似物CMPXCHG的指令不早于1987年实现,而CDS的类似物CMPXCHG8B的指令仅在1994年实现!



系统370输入STIDP系统自识别命令,它是特权的并且不是很有用。对于x86,此命令已变得更加强大。您在这里还可以注意到,LCM中的IBM 4361允许任何用户执行STIDP。这显然是异常触发的仿真。



四种可寻址的BAL模式为指令指定两个操作数,第五种模式指定三地址指令。但是,忽略某些信息将使您拥有单播命令,而使用隐式信息将使您拥有四地址命令。当用于寻址时,寄存器0扮演着特殊的角色:在该寄存器中被简单地忽略-这使您可以在计算地址时忽略基数和索引。所有BAL指令严格为2、4或6个字节。它看起来像是68000或PDP-11,但不是x86,VAX或ARM。



390系统中增加了几种寻址模式,使寻址数量增加到18种。指令的数量也显着增加,在新指令中甚至有一些支持Unicode的指令-x86仍然没有这种功能!在390个系统的新指令中,还有其他独特的指令。 Z系统中增加了几种寻址方式,现代Z的命令总数非常大,甚至可能超过现代x86-64的命令数量!



在系统360、370和390中,与在ARM中一样,在访问内存中的数据时的偏移量是12位,即不超过4095,这不是很方便-在大代码中,可能缺少用于基址的寄存器。在x86中,此偏移量为16位,这当然更加方便。但是Z系统增加了对20位偏移量寻址的支持,这当然更好。虽然,值得注意的是,在x86-64甚至68020中,偏移量可以是32位。如前所述,像ARM这样的390之前的系统在处理寄存器时没有使用大常量的能力。 x86体系结构在这里更加灵活。因此,当将汇编器与360或370系统一起使用时,通常需要使用字面量,伪常量,这有点慢。



在性能方面,与IBM / 360兼容的系统始终具有良好的指标。我对4361-1的实验,特别是在项目中快门算法对π的计算显示出非常好的时序。 4361-1指令像ARM或其他现代处理器一样几乎没有延迟运行。但是,由于从60年代继承的某种笨拙的指令系统,特别是由于缺少16位除法器的除法,因此在处理器电子器件效率方面的结果证明是80186的水平。这比结果差了80%,如图所示,当时最好的VAX计算机是Model785。但是,LCM大型机显然不是当时可用的IBM大型机中最好的。在这里还需要注意的是,大型机使用通道,专用处理器来使I / O非常快,比大多数现代计算机快得多。



作为一名学生,我碰巧在1987年通过批处理方式在1989年通过对话与IBM / 370的国内克隆EC-1045一起工作。对于批处理模式,有必要准备打孔卡。那时我已经使用过家用计算机,因此使用过时的打孔卡并没有给人留下最好的印象。但是交互模式还不错,只有它经常中断,并且有大量用户。因此,一些学生到凌晨4点才上班!从那时起,就不可能再处理大型机了,直到最近我才决定通过仿真来处理计算机历史上的这一里程碑式技术。



克隆IBM 360非常受欢迎。克隆在英国,德国,日本和美国的其他公司生产。在苏联,这种克隆具有非常戏剧性的含义。为了进行这种克隆,IT领域的几乎所有国内发展都被折叠了,其中一些非常有希望。特别是,乌拉尔计算机的主题已经关闭,著名的计算机科学家查尔斯·西蒙尼Charles Simonyi)对此热情洋溢地讲话。尽管以前的BESM-6类机器在速度上可以与IBM 360相提并论,但BESM-10项目也已结束。另外,出于克隆的目的,与ICL几乎达成的合同受到了挫败,也许通过此合同,英国IT业将获得新的动力,并且不会下降。仅超级计算机厄尔布鲁士(Elbrus)可能由于与国防工业的关系而幸免于“克隆入侵”,迪克斯特拉称之为“冷战中美国最大的胜利”。



正如在苏联使用大型机的人回忆的那样,国产克隆产品的可靠性极低,需要服务人员不断给予关注。最初的美国IBM大型机是当时最可靠的计算机。在苏联克隆中,有时放置了十几公斤(通常超过5公斤)的贵金属,金,铂,钯和银,但这无助于可靠地纠正这种情况。由于大量的高流动性价值,很难想象一个正在运转的家用克隆能够在某个地方生存。



有趣的是,IBM 360的主要开发人员离开了IBM并创立了Amdahl,而Amdahl在二十多年的时间里一直专注于与IBM大型机兼容的系统的生产,同时它们在速度和可靠性方面都具有较低的价格。结果,由于大型机市场的巨大变化,与ICL一样,Amdahl成为了日本富士通公司的一部分。



除了IBM / 360体系结构的计算机外,还有其他大型机。在60年代,美国大型机制造商非正式地获得了白雪公主和七个小矮人的绰号。很容易猜到白雪公主是IBM。原始体系结构的大型机也在其他国家/地区生产。特别值得一提的是英国建筑ICL 1900。



正如我已经写过的,我设法为VM / CMS 6设置了一个有效的配置。但是,事实证明XEDIT编辑器不是免费提供的,简单的EDIT太过特殊和不便了,因此您必须在主机上编辑文本。还发现,没有用于将文件从终端仿真器传输到大型机(反之亦然)的标准程序,该程序需要使用虚拟打孔卡进行此类传输。与调试有关的另一个不愉快的惊喜出现了。 DEBUG命令不支持步进!尽管对于8080处理器的DDT调试器来说,甚至有这种可能性,但令人惊讶的是,尽管调试不那么重要,但DEBUG不知道如何进行反汇编,即使在最简单的70年代处理器的监视器中也常常内置这种汇编。在CMS下,低级别不支持长行换行和行尾控制字符!因此,从汇编语言程序进行打印时,您需要手动设置行格式,以使它们不会消失在屏幕的右边缘之外,并且还要注意在最后一行中填充精加工空间。同样不常见的是缺少自动垂直滚动。



那些想首次使用大型机的人应该记住,大型机是一个巨大的生态系统,在这里许多熟悉的概念可能会有不同的解释。例如,不存在文件的简单概念。文件的关键属性之一是记录大小,对于Linux或Microsoft Windows文件,没有任何类似的记录。这些文件本身在访问文件的方法上有所不同,并且已经编写了有关此文件的书籍,也可能是非书籍。在CMS中,将磁盘名写在完整文件名的末尾,并且名称,扩展名和磁盘由空格分隔,并且出于某种原因,磁盘名本身也称为文件模式,这也是不寻常的。我还想对多任务MVS进行分类,据我所知,在苏联,他们从未尝试过。



总的来说,出乎意料的是,某些非常昂贵的计算机上使用的知名操作系统不支持使用文件目录,这相当于微型计算机的第一个和原始的原始操作系统,例如CP / M或Commodore DOS。 CMS在大型机中有时被称为CP / M并非偶然。据我所知,令人惊讶的是,尽管该系统的最新版本可追溯到2018年,但从未引入过对CMS中目录的支持。出于某种原因,在80年代之前,为昂贵的计算机使用目录的支持通常很少得到支持。例如,DEC RT-11中没有这种支持,甚至是PDP-11最好的操作系统之一,RSX-11,仅支持两级目录。直到2000年代,最受欢迎的IBM OS是MVS(1974),即使在这里也只是部分编目,如Apple MFS(1984)。尽管在Unix(1973),MS-DOS(自1983年)甚至8位Apple ProDOS(1983)中,这从一开始就很好。 VAX / VMS(1977)提供了最先进的文件处理功能,其中除了目录外,甚至还内置了对文件版本控制的支持。



有趣的是,用于CMS,MVS和其他一些IBM操作系统REXX的脚本语言已成为Commodore Amiga的批处理文件语言的缩写。



大型机软件通常是两种颜色。彩色端子的使用相对较少,因此几乎没有彩色程序。也很少有带有动态图形的程序;频繁的屏幕刷新会导致明显的不愉快闪烁。



动态演示,在LCM的仿真器IBM 4381的终端3270-3上启动



。总之,我不禁对IBM技术表示钦佩。他们一直以其独特的独创性和高水平而著称。我特别要指出的是,该文档的质量非常好,即使对于现代系统也可以公开获得。尽管IBM是世界上最大的公司之一,但它仍在展示技术发展的巨大活力。就员工人数而言,几乎等于微软,谷歌和英特尔的总和!



大型机主题是巨大的。当然,我只能写一部分内容。我非常感谢您的澄清和其他信息。



该材料也有英文版本



All Articles