采用标志符数据表示方法主要优点有如下几个方面:
1、简化了指令系统。指令中的操作码只需指出操作种类,不必指出数据类型,指令的条数必然减少很多,如本节一开始提到的在IBM
370系列机中仅加法指令就有8条以上,而在采用标志符数据表示法的机器中只需要一条加法指令。另外,如数据的进位制、字长、寻址方式、陷井标志等都在数据中描述清楚了,不必再通过指令系统来进行描述,因而可简化指令的地址码,简化访问主存的指令、输入输出指令和程序控制指令。
2、由硬件自动实现一致性检查和数据类型的转换。通过硬件能快速检测出参加运算的数据是否定义错误(如一个浮点数与一个字符相乘),是否不相容(如一个浮点数与一个定点数相加,两个字长不相等的定点数相加等)等,如果发现数据类型定义有错误,则进入出错中断处理程序,如果发现数据类型不相容,则由硬件自动进行数据类型和数据长度的变换。
3、简化程序设计。数据带有标志符与人们的使用习惯更接近了,即缩小了人与机器之间的语义差距,从而使程序设计变得更加容易。通过硬件实现数据类型的一致性检查并自动进行数据类型的转换,减轻了程序设计人员的负担。
4、简化编译器。每个操作数都通过自带的标志符来定义其数据类型、进位制、字长、寻址方式等,而指令中的操作码仅指出操作种类,这一做法与一般高级语言中先定义数据类型,然后才能使用的方法完全相同,从而使高级语言与机器语言之间的语义差距大大缩短了。另外,由于通过硬件自动实现数据的一致性检查和数据类型的转换,也简化了编译器的设计。
5、支持数据库系统。一般的数据库系统都要求与数据类型无关,即一个软件不加修改就可适用于多种数据类型,标志符数据表示方式正好支持这种要求。在一般计算机系统中要实现软件与数据类型无关是非常困难的。
6、方便软件调试。由于在每个数据中都有陷井位,这些陷井位可以通过软件来设置,也可以在调试程序时手工设置,这一功能为软件的跟踪和调试提供了极大的方便,必然会缩短软件开发的周期。
采用标志符数据表示方法的主要缺点是:
1、数据和指令的长度可能不一致。从图2.7中可以看出,采用标志符数据表示方法后,数据字长加长了,指令字长缩短了,因此,有可能造成数据字长与指令字长不相等。解决的办法通常有两个:一种解决办法是把数据和指令分别存放在两个存储器中。由于目前的计算机系统普遍存在主存储器的速度远远低于CPU速度的问题,采用多体存储方案是必然的趋势。然而,指令存储器与数据存储器的字长不同会给输入输出控制等造成麻烦,因为无论是指令还是数据,最终都要存放在外部的永久存储器(如磁盘存储器、磁带存储器等)。另外,由于各种程序中数据和指令的比例可能差异很大,因而造成两种主存储器使用不平衡的问题。另一种比较好的解决办法是合理设计数据字长和指令字长,一般的设计原则是指令字长向数据字长靠拢。具体方法将在本章的"指令格式的优化设计"一节中作比较详细分析。
2、指令的执行速度降低。由于每个数据都带有一个或几个标志符,在指令执行过程中要对每个标志符逐个进行解释,并判断数据是否相容。如果一条指令要用到几个数据,还要判断数据类型是否一致,如果不一致,还要进行数据类型的转换,因此,指令的执行时间必然会加长。然而,从前面的分析中我们已经注意到,采用标志符数据表示法会使程序的设计时间、编译时间和调试时间缩短。而一个程序的总开销通常是由设计时间、编译时间、调试时间和执行时间的总和决定的。前三项称为的宏观速度,执行时间称为微观速度。采用标志符数据表示法提高了宏观速度,而降低了微观速度。将来,对计算机系统宏观速度的要求必然越来越高。从另一个角度看,在许多系统软件和应用软件中,数据的相容性、一致性,数据类型的转换等是软件来实现的,这种做法与用硬件自动实现相比,其执行速度可能更低。
3、硬件复杂度增加。由于要用硬件实现数据相容性、一致性测试,实现数据类型的自动转换,并解释所有标志符,因此采用标志符数据表示法的计算机系统,其硬件复杂度很大,过去仅在少数大型机和巨型机中采用。然而,随着VLSI技术的迅速发展,硬件复杂度将不成为一个大问题。美国Intel公司生产的8087微处理机,日本为研制第五代计算机而生产的个人计算机中都采用了标志符数据表示方法。
综上所述,采用标志符数据表示法虽然硬件复杂度高,机器的微观速度可能降低,但是,由于它能缩短人与机器之间的语义差距,能减少高级语言与机器语言之间的语义差距,能提高机器的宏观性能,因此这是一种很有前途的数据表示方法。目前有待研究的关键问题是如何定义好标志符,如何进一步扩大标志符的用途等。