|||
什么是计算与存储分离?
姜咏江
“‘透明计算’的基本思路,是通过网络将存储、计算与管理分离,不仅能像云计算那样把数据和应用软件放在云端,而且把‘计算机的大脑’——操作系统也放到了云端。”
上面这段话是透明计算的发明人作出的解释,其中“计算”、“透明”的来源,“存储、计算与管理分离”还有什么是“计算机的大脑”需要理解清楚。
1. 什么是计算与机器计算?字面理解中文的“计算”一词有计划运算之意,运算一词本来来自数学,但现在人们很少区别计算与运算了。计算多用于求解数学问题,自从计算机出现之后,许多问题都用计算机来解决了,因而计算一词在计算机科学中频现并不陌生。
计算机是一种机器,原本用人计算的问题,现在用计算机这种机器去完成,自然就产生了机器计算的概念。所谓机器计算就可以定义为:用机器处理问题寻求结果的过程。
2. 计算机中透明一词的使用计算机使用透明的意思是某些问题处理过程机器自动进行,不用人知道。这和日常生活中所说的“问题透明”恰是相反的概念。日常所说透明,意指“问题公布于众”让所有参与的人都清楚。而计算机科学当中近些年使用的“透明”,是指“问题解决的过程不用参与者知道,而只要知道问题的结果就行”。计算机科学中不用知道的人是有范围的。例如,所有的应用程序的具体处理过程对用户是透明的。在计算机领域典型用到“透明”一词是在流水线程序设计中,由于编译器能够自动处理相关问题(一些冲突),所以程序员不必在程序设计时考虑。这叫流水线程序设计对程序员透明。
“透明计算”是计算机科学当中的问题,因而“透明计算”的含义自然是程序运行和数据存储用户不用知道,或者叫“不知不觉”。按照透明计算发明人的说法,“透明计算”应该是一种网络环境下的机器计算形式。这种机器计算的基本特征是通过网络将存储、计算与管理分离,不仅能像云计算那样把数据和应用软件放在云端,而且把‘计算机的大脑’——操作系统也放到了云端。
3. 计算与存储能分开吗?说了什么是机器计算之后,我们来谈谈数据存储和计算有着怎样的关系。
3.1 计算机如何实现计算计算机是机器,机器怎么能够象人一样进行计算呢?这先要说到人是如何进行计算的。第一,人要用文字符号表示信息(信息是是事物的表现或描述)。人的计算表现为对信息的处理过程。例如进行数值运算、写文章、照相、拍电影等都是信息处理的过程。这些信息处理的过程都有一个重要的基础依托,那就是信息存储。也就是事物各种各样表现或描述都要有一定是物质形态加以记录。计算机可以用电或磁的形式记录二进制信息,而所有其它存储形式的信息又都可以转化为二进制信息,故而计算机可以记录任何信息。此外,计算机可以在用电磁信号记录信息的同时,还能进行对信息的传输、转换、综合分析,进行算术运算等,这些就是信息处理,是所说机器计算的具体工作。
3.2 计算离不开存储任何机器计算对象都会分为计算前和计算后两种状态。计算之前的信息一般称为数据,计算之后的信息一般称为结果。在计算机中计算的过程就是通过计算机程序的运行,将之前存在的数据转换成人们需要的结果。在计算机之中,计算又可以理解为程序执行的过程,而计算的对象或者说内容,一般称为数据。在程序运行过程中送入机器的那些数据称为输入,程序运算产生的结果脱离计算过程存储或显示起来又被称为输出。
在机器计算的过程中,计算和存储是不可分开的两个部分。从图灵开始,能够实现计算的机器结构就被确定下来了,其中包括存储器、运算器和控制器,它们是任何机器计算中都是缺一不可的组合。在这种组合之下,机器计算被控制分成了一些基本功能动作。一、从存储器中取出指令;二、对指令进行判定分析;三、根据指令语义执行,这其中包括对寄存器中存储的数据进行运算,对存储器或寄存器的读写,或者转移到存储器的某个位置去取下一条指令等。在机器计算的过程中存储是计算的基础和保证,如何可以说“计算与存储分离”?如果将控制器理解为“管理”部件,将管理也分离出去,那就更成问题了。
不在机器计算的过程中,如果说程序和数据(包括程序文件)分离,那是正确的。但那是有计算机出现的时候就有的事情。由于不论程序数据还是计算对象数据都是可以存储的,因而它们在不参加计算的时候可以随便放到自由的存储设备中保存,而不需要放到计算机的内存当中。程序和数据不仅能分开存储,还可以复制,依靠网络在广泛的地域之间进行传输。在这种不进行计算的状态下,毫无疑问存储和计算是处在一种分离状态。
4. 什么是计算机的大脑存储器、运算器和控制器组成的整体是计算机的大脑,它是能够运行程序的基本单位,是所有机器计算过程所不能够缺少的部件。现在将这种能够运行程序的基本单位叫做“核”,意思就是“计算机的核心”。计算机核是一种硬件结构,也是机器最基本的智能结构,在任何能够进行计算的机器设备中,存储器、运算器和控制器都是缺一不可的整体,是构成所有智能设备的大脑。
操作系统OS是什么?是计算机管理软硬件分配使用的大管家,但绝不应该称之为计算机的大脑。众所周知,人无大脑不可活,计算机应该没有大脑也不能够进行计算吧?OS这个管家是没有了,计算机就不能进行计算了吗?现代操作系统的功能最重要的有程序调度的处理机管理、存储管理、设备管理、文件管理和用户管理等,其根本作用无外乎使计算机易用,不产生混乱,从而能够提高多任务情况下的效率。尽管操作系统由单处理机延伸到多处理机乃至网络,但OS是大管家的地位未变,怎么能够将其说成是“大脑”呢?
近些年的“软件时间消耗”研究已经非常明确地指出了计算机系统软件管理方式的弊端,指出OS抢占的机时占了有效程序执行的绝大部分时间,加之OS采用自发进程线程的理念设计,使病毒一类程序有了滋生的土壤,为计算机系统的安全运行带来了极大的隐患和破坏。这是操作系统的负面作用。一种取消OS,让程序自主运行的机制正在逐步取代计算机的这个大管家,一种全新的计算机管理模式正在逐步发展。OS只能说是计算机运行的一个充分条件,而不是必要条件。怎么能张冠李戴地将操作系统说成是计算机的大脑呢?
计算机没有操作系统还是可以进行计算的,因为那还是计算机,如果没有了运算器、控制器和存储器,计算机还能够计算吗?
5. 机器服务模式计算机能够完成人重复性的脑力劳动,因而就出现了机器服务。计算机的服务体表现在计算机输入输出设备上。计算机设计者将各种输入输出设备与计算机核心设备相连,通过内存与外设输入输出数据交换,让人们得到所需要的结果。为了让使用者能够同机器交流,见到任务的结果等,计算机设计上专门设置了人机交互界面,通过人机交互界面的设备,完成提交任务给计算机,也通过这个界面了解机器工作情况和获得需要的计算结果。
在计算机服务模式中,用户会使用特殊的设备提供信息给计算机,其中包括处理的对象数据和程序数据。早期这种设备叫“工作站”。工作站的作用主要是传递信息,能够完成人机交流。这种工作站只是需要一些临时存储信息的设备,这种存储信息的设备叫缓存。通过缓存,人将信息传递给计算机核心部件,核心部件会根据需求,选择用户程序执行,或者根据用户提供的任务,选择在大型存储器的某些特殊位置放置的程序来执行,以此种方式来对计算机的使用者服务。
早期的机器服务模式一般出现在单个计算机的环境,用户可以是一个,也可以设计成分时服务的多用户形式。计算机和用户交流的设备称为终端。终端不进行计算,计算的工作都由计算机主机(核)的部分承担。对于输入输出人工较慢的问题,人们又设计了专门解决输入输出工作的计算机,那时称之为“通道”,把进行计算的计算机叫主机。通道计算机的任务相对简单,但它可以与主机独立并行工作,为主机打下手,从而大大提高了计算机整体的效率。有一个时期还提到了所谓的部件计算机,即是将计算机的某个部件做成一个功能相对简单的计算机,这种计算机最典型的解决数据快速输入输出的DMA、通道和替代控制矩阵运行微指令的内部计算机等。
6. 网络与客户服务器模式多个计算机加上通讯设备就形成了网络。网络的优势就是可以进行多台计算机互联,形成联合计算和资源共享。小范围的网络称为局域网,大范围的网络就形成了广域网。由于网络可以形成资源互通和计算共享,所以就出现了客户服务器模式。一些网络公司组织了资源丰富的计算机系统,形成所谓的服务器,内中安装了许多人们经常需要的计算程序,当客户有需求的时候,就能够替代客户进行任务完成等一系列工作。用户通过网络将需求信息传输给服务器,服务器代客户组织资源,进行计算,完成任务后,再通过网络将结果传递给用户。客户服务器模式与多用户计算机系统的不同有两点:第一,客户端也是计算机,有些计算可以在客户端完成;第二,客户端和服务器的信息传递一般是在远距离的异地。基于这两个特点,实际计算机的计算工作可以分别在服务器端和客户端进行。这就是说没有将计算的工作完全放到服务器一方。
回头说说早期的IBM360、370一类的大型机,这类计算机系统的组织基本上是多用户系统。这种计算机将用户人机交互界面做成用户终端机,这种终端机基本上是一种叫做“无盘工作站”的设备,有显示器和键盘等操作界面设备用以人机交流信息,所有的计算工作都是由主机来完成的。多个用户提交的作业,主机要进行排队处理。主机处理的结果要放到独立的硬盘机、磁带机等设备中保存。传递到用户终端的只是用户想要知道的信息而已。如果需要用户保留的信息,会通过集中的行式打印机或激光打印机,以及工作站联合使用的打印机打印出来。
多用户计算机系统实质上是一个最简单的局域网,因为不仅用户终端可以同主机通信,而且用户终端之间也可以通信交流。只是所有的计算工作都是有主机承担而已。可想而知,多用户计算机系统主机的工作十分繁忙,分配任务、调度程序、管理内存、管理作业文件、管理用户等都得由主机完成。这样在单一处理器多任务的情况下,为了均衡服务,不得不引进了“进程”的概念和方法,这是现代操作系统产生的原因。现代操作系统应该是用软件的方法扩展和延伸计算机功能的典范。尽管操作系统成了计算机系统的大管家,但由于操作系统也是程序,也要占用处理器来实现它的工作,故而有操作系统参与的计算机系统许多机时都被它占用了,对于那些极其需要快速完成任务的程序运行来说是一种累赘。
网络是多台计算机互联,因而如何分配任务和如何分配资源就成了网络研究的重要课题。这中间还有一个信息传输的速度和线路拥塞问题需要解决。网络不仅要求能够广泛地解决问题,同时还要求能够快速有效地解决问题。于是各种各样的网络结构、设备、方法的一系列问题研究成为了重点。网格、云、物联网等都是这方面的研究表现。
7. 网络计算与存储的关系从单处理器计算机到多处理器计算机,从单用户计算机到多用户计算机,从单一计算机到众多计算机的互联,从局域网到广域网,这中间计算机系统基本结构和最本质的理论和方法发生了哪些变化?
有人试图用网络的概念替代计算机的概念,这是一种不负责任的提法。因为网络是计算机的互联,是众多的计算机通过通信线路连接在一起的一种关联结构,这与在很小的地域内将各种功能部件组织在一起,形成一个整体的计算机有着本质地区别。计算机与网络实质上是个体与群体的关系,就像我们不能够将人群称为人一样。
计算机网络相对于计算机,最重要的变化是在功能分配和群体结构上,而不是在计算机核心结构上产生了多么巨大的变化。网络既然是独立的计算机互联,那么就毫无疑问地确立了计算机本身的独立地位。网络是一个庞大的程序数据和对象数据存储的庞大体系,因而将程序和数据存储、复制、传输等是每时每刻都会发生的事情。虽然程序和数据可以分开存放,但一旦开始计算(程序执行),那么就必须要有与运算器、控制器直接连接的存储器提供来同步提供指令和数据,如果这些指令数据和程序数据在其它网络节点上存储着,那就要先将它们通过网络传递到计算设备所连接的存储器上,然后才能进行计算。网络数据传输是一个异步传输的过程,无法满足高速同步运行的处理器需要,这一点目前是无法改变的(除非将网络全体放到一个芯片当中,这又不叫计算和存储分离了),所以目前在网络结构下妄说“计算与存储分离”不过是笑谈之举而已。
最后说一句,如果将网络的某一部分的任务定为存储信息为主,而将另外的某部分确定为运行程序,进行计算为主,那么叫“计算与存储分离”还是能够说得过去的。透明计算做为一种网络工程,可能解决了许多问题,创造中国特色的网络系统着实不易,但要说到理论上创新的问题,确实还需要讨论,完善,最终才能达到我们的目的。
2015-01-29
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 05:38
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社