通过光纤通道传送的存储接口命令分组的制作方法

文档序号:29914273发布日期:2022-05-06 03:14阅读:102来源:国知局
通过光纤通道传送的存储接口命令分组的制作方法
通过光纤通道传送的存储接口命令分组


背景技术:

1.可以使用存储区域网络(san)来将计算设备(例如服务器计算机、客户端计算机等)连接到数据存储系统。计算设备可以向数据存储系统下发请求以访问(读或写)数据存储系统的数据。另外,可以通过san提供其他类型的数据服务,如存储备份服务(在该服务中,数据被从第一数据存储系统复制到一个或多个第二数据存储系统)、数据备份服务(在该服务中,数据被备份到一个或多个数据存储系统)等。
附图说明
2.关于以下附图描述了本公开的一些实施方式。
3.图1是根据一些示例的包括系统的布置的框图。
4.图2是根据一些示例的根据存储接口协议的命令分组的框图。
5.图3是根据一些示例的在内核空间中实施光纤通道(fc)网络垫片模块的系统的一部分的框图。
6.图4a和图4b各自是根据进一步示例的在用户空间中实施fc网络垫片模块的系统的一部分的框图。
7.图5是根据一些示例的系统的框图。
8.图6是根据一些示例的存储有机器可读指令的存储介质的框图。
9.图7是根据一些示例的过程的流程图。
10.在所有附图中,相同的附图标记指代相似但不一定相同的元件。附图不一定成比例,并且可以放大一些零件的尺寸以更清楚地图示所示出的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
11.在本公开中,除非上下文另外明确指示,否则使用术语“一个(a)”、“一种(an)”或“所述(the)”旨在同样包括复数形式。同样地,当在本公开中使用时,术语“包括(includes/including/comprises/comprising)”、“具有(have/having)”指明存在所述元件,但不排除存在或添加其他元件。
12.可以使用数据传输协议通过san来传输数据。可以使用的高速数据传输协议包括光纤通道(fc)协议,该fc协议可以提供相对较高速度(例如,每秒高达120吉比特(gb))的跨san数据传输。采用fc协议的数据服务(如存储备份服务)可以以相对较高的速度执行。
13.fc包括多个层,包括fc-0层(物理层)、fc-1层(用于编码信号以携带数据的传输协议层)、fc-2层(信令协议层)、fc-3层(用于实施如加密或冗余算法等各种服务的公共服务层)和fc-4层(协议映射层,在该层中,上层协议被封装到信息单元中,以传递到fc-2层)。
14.上层协议可以包括用于传输层(开放系统互连(osi)模型的第4层)和网络层(osi模型的第3层)的协议。在一些示例系统中,通过fc提供的数据服务采用专有上层协议,如专有第4层协议和第3层协议。为支持通过fc提供的数据服务制定专有上层协议可能是耗时且
昂贵的过程。
15.可以通过san提供的数据服务的示例包括以下各项中的任一项或某种组合:用于在数据存储系统中读写数据的数据访问操作;将数据从第一数据存储系统复制到一个或多个第二数据存储系统的存储备份服务;用于将数据备份到一个或多个数据存储系统的数据备份服务;用于删除或减少数据存储系统中的重复数据的重复数据删除服务;或通过san进行数据通信的任何其他服务。
16.根据本公开的一些实施方式,可以采用标准化的传输层和网络层协议来支持通过fc提供的数据服务。“标准化”协议可以指标准机构或其他实体在标准、规范或其他信息中阐明的协议。更一般地,“标准化”协议可以指由不同企业(例如,不同公司、组织等)采用的用于网络通信的协议。网络可以指有线网络、无线网络、或有线网络和无线网络的组合。网络的示例包括san、局域网(lan)、广域网(wan)、公共网络(例如,因特网)等。
17.传输层协议的示例是传输控制协议(tcp),该协议是用于在网络上的端点之间提供可靠、有序和纠错的数据传输的协议。标准化网络层协议的示例是因特网协议(ip),该协议控制着网络上的分组传送。根据ip的分组是指包括ip头部和有效载荷的ip分组。ip分组中的有效载荷用于携带用于通过网络进行传送的数据,并且ip头部包含用于ip通信的协议信息,包括ip地址(用于标识分组的发送方的源ip地址和用于标识分组的接收方的目的地ip地址)以及其他控制信息。“ip”可以指ipv4(ip的第4版)、ipv6(ip的第6版)或任何其他ip版本。
18.tcp是第4层协议,而ip是第3层协议。tcp可以通过ip网络提供可靠和有序的数据传输,该ip网络是使用ip分组进行通信的网络。在采用tcp和ip两者的网络通信中,分组可以包括tcp头部、ip头部和有效载荷。这种分组还可以被称为“tcp/ip分组”。tcp头部包含tcp定义的控制信息。
19.更一般地,传输层协议管理端点之间的数据传输,而网络层协议用于定义用于携带通过网络传送的数据的分组。
20.osi模型的另一层是第2层,也称为数据链路层。数据链路层的示例是以太网驱动,该以太网驱动支持电气与电子工程师协会(ieee)802标准定义的以太网通信。数据链路层管理到系统的物理层(其为第1层)的数据传输。
21.如此处所使用的,“系统”可以指计算机(例如,台式计算机、笔记本计算机、平板计算机、服务器计算机等)、手持设备(例如,智能手机、游戏设备等)、物联网(iot)设备、车辆(或车辆中的控制器)、数据存储系统、通信节点等。
22.根据本公开的一些实施方式,如图1所示,系统100包括fc接口102(例如,fc卡或控制器),该fc接口用于通过fc网络104与远程系统106(或多个远程系统)进行通信。fc接口102还可以被称为fc主机总线适配器(hba)。fc网络是根据fc协议进行数据传输的网络。fc接口102包括通过fc网络104根据fc协议发送和接收信号的物理层(包括收发器)。
23.系统100进一步包括网络堆栈108,该网络堆栈包括ip层110(网络层的示例)和tcp层112(传输层的示例)。包括ip层110和tcp层112的网络堆栈108被称为tcp/ip堆栈。更一般地,“网络堆栈”是指根据相应的不同协议(如在osi模型的不同级别)提供通信的层的集合。可以使用机器可读指令和/或硬件处理电路(例如,处理器、微控制器、可编程门阵列、可编程集成电路等)来实施网络堆栈108的层。
24.尽管图1示出了具有两层的网络堆栈108,但是在其他示例中,网络堆栈可以包括多于两层。
25.系统100包括内核空间116和用户空间118。内核是系统100的操作系统(os)的核心。内核在特权空间(被称为内核空间116)中运行。用户空间118被认为是非特权空间。
26.在用户空间118中执行包括程序119在内的各种程序(例如,应用程序或其他类型的程序)。程序119可以提供数据服务,如以上进一步指出的任何数据服务。在内核空间116中执行网络堆栈108。
27.在用户空间118中执行的程序不具有在内核空间116中执行的代码(如网络堆栈108)所具有的某些特权。这样的特权可以包括对某些系统资源(例如,存储器140的特定部分、特定代码、特定硬件设备等)的访问。
28.系统100进一步包括套接字层114。套接字层114提供内核空间116中的网络堆栈108与用户空间118中的程序109之间的通信通道。
29.在图1的示例中,套接字层114还被描绘为内核空间116的一部分。在其他示例中,套接字层114可以是用户空间118的一部分。
30.在一些示例中,以太网驱动120(数据链路层的示例)也是内核空间116的一部分。以太网驱动120管理通过系统100的以太网接口122进行的通信。以太网接口122可以包括以太网卡或控制器,并且包括通过以太网网络124发送和接收信号的物理层(收发器)。
31.以太网网络124是根据以太网协议进行数据传送的网络。根据以太网协议,数据以数据帧的形式进行传送,其中,每个数据帧都包括以太网头部和有效载荷。以太网头部包括源媒体访问控制(mac)地址和目的地mac地址,其中,该源mac地址标识发送方,并且该目的地mac地址标识目的地。以太网头部还包括其他控制信息。以太网数据帧的有效载荷包含要传送的数据,如tcp/ip分组。
32.总体上,在系统100的内核是linux内核的示例中,套接字层114、tcp层112、ip层110和以太网驱动120是用于使用以太网进行通信的linux以太网堆栈的一部分。
33.在其他示例中,系统100的内核可以是不同类型的os的一部分。
34.尽管在一些示例中系统100包括以太网驱动120和以太网接口122,但是在其他示例中可以省略以太网驱动120和以太网接口122。
35.根据本公开的一些实施方式,系统100进一步包括fc网络垫片代码(内核空间fc网络垫片驱动126-1或用户空间fc网络垫片模块126-2),其将基于fc的连接作为虚拟以太网链路呈现给网络堆栈108。“基于fc的连接”是指用于允许通过fc网络104进行端点之间的通信的连接。更具体地,基于fc的连接在端点中的fc端口(如系统100中的fc接口102的fc端口150和远程系统106中的fc端口152)与fc网络104中的fc交换机中的fc端口之间建立。fc交换机是指将来自发送端点(例如,系统100和106之一)的fc帧沿着fc网络104转发以由接收端点(例如,系统100和106中的另一个)接收的网络设备。
36.将基于fc的连接作为虚拟以太网链路呈现给网络堆栈108意味着内核(并且更具体地是网络堆栈108)将允许通过fc网络104进行通信的系统100的各层(包括134、136和102)感知为以太网通信的层。
37.根据fc,fc端口150和152(它们是端点的一部分)被称为n_port或节点端口。尽管在系统100中仅示出了一个fc端口150,但在其他示例中,fc接口102可以提供多个fc端口
150。类似地,远程系统106可以包括多个fc端口152。
38.fc网络垫片代码(被称为“fc网络垫片代码126”,其可以是内核空间fc网络垫片驱动126-1或用户空间fc网络垫片模块126-2)是指要将来自网络堆栈108的传出数据重定向到通向fc接口102的路径、并且处理来自fc接口102的传入数据并将处理后的传入数据提供给网络堆栈108的程序代码。传出数据可以是要由程序119发送的数据,并且传入数据可以是发往程序119的数据。
39.例如,fc网络垫片代码126可以将传出的以太网数据重定向到通向fc接口102的路径。在没有fc网络垫片代码126的情况下,传出的以太网数据将通过以太网驱动120和以太网接口122被传送到以太网网络124。
40.为了允许fc网络垫片代码126将传出的以太网数据重定向到通向fc接口102的路径,fc网络垫片代码126向网络堆栈108注册了虚拟以太网设备。虚拟以太网设备是允许在网络堆栈108与fc网络垫片代码126之间进行数据传输的模拟以太网设备,因此可以在不使用任何实际以太网驱动(例如120)的情况下通过fc网络104传送以太网数据。向网络堆栈108注册虚拟以太网设备包括fc网络垫片代码126向网络堆栈108提供指示(以信息、消息、命令、文件等形式),其中,该指示导致网络堆栈108将以太网数据传输到fc网络垫片代码126而不是以太网驱动120。
41.在一些示例中,fc网络垫片代码126在内核空间116中被实施为fc网络垫片驱动126-1。fc网络垫片驱动126-1是内核以太网设备驱动。在其他示例中,fc网络垫片代码126在用户空间118(在图1中以虚线轮廓表示)被实施为fc网络垫片模块126-2。
42.fc网络垫片代码126被实施为可由系统100的处理资源128执行的机器可读指令。处理资源128可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、或另一硬件处理电路中的任一项或组合。
43.在fc网络垫片代码126向网络堆栈108注册了虚拟以太网设备的示例中,程序119(或用户空间118中的另一个程序)的传出数据通过套接字层114和网络堆栈108传递到fc网络垫片代码126,如进程间路径130所示。系统100的不同模块/层之间的“进程间路径”可以指允许系统100的不同进程或线程彼此通信的任何进程间链路。
44.网络堆栈通过进程间路径130将(程序119的)传出数据以及tcp层112和ip层110的头部(tcp头部和ip头部)传递到fc网络垫片代码126。fc网络垫片代码126通过进程间路径132将传出数据、ip头部、tcp头部和以太网头部传递到层134。应注意,以太网头部在fc网络垫片代码126被实施为内核空间fc网络垫片驱动126-1的示例中是由fc网络垫片代码126生成的,或者在fc网络垫片代码126被实施为用户空间fc网络垫片模块126-2的示例中是由另一个模块(稍后讨论)生成的。
45.在一些示例中,层134是小型计算机系统接口(scsi)层。scsi协议是管理根据scsi协议进行的数据传送的存储接口协议的示例。在其他示例中,可以采用其他存储接口协议。“存储接口协议”是指管理存储设备的访问控制的协议。
46.scsi提供了在scsi命令信息单元中传送命令以及在scsi数据信息单元中传送数据。scsi命令信息单元也被称为命令描述符块(cdb),该cdb包括指定在cdb中传送的命令的操作码(opcode)以及与该命令有关的其他参数。
47.scsi层134将来自fc网络垫片代码126的传出数据、ip头部、tcp头部和以太网头部
包装在根据存储接口协议的命令分组(如scsi cdb)的有效载荷中。
48.系统100进一步包括管理与fc接口102的数据传送的fc驱动136。
49.在一些示例中,scsi层134和fc驱动136是内核空间116的一部分。在其他示例中,scsi层134和fc驱动136是用户空间118的一部分。
50.由fc驱动136通过fc接口102将包括有效载荷的命令分组传送到fc网络104,该有效载荷具有以太网头部、tcp头部、ip头部和传出数据。
51.在一些示例中,命令分组可以由fc接口102分割成指定大小(或多个指定大小)的多个fc帧,以通过fc网络104发送并由接收端点(例如,远程系统106)接收。在其他示例中,fc接口102不将命令分组分割为多个fc帧,而是在单个fc帧中携带命令分组。
52.fc接口102可以接收呈fc帧(或多个fc帧)的形式的(例如,来自远程系统106的)传入数据。(多个)传入fc帧可以包括命令分组(例如,scsi cdb),该命令分组包括包含传入数据、以太网头部、ip头部和tcp头部的有效载荷。fc驱动136将接收到的scsi cdb传递到scsi层134,该scsi层提取有效载荷(包括传入数据、以太网头部、ip头部和tcp头部)。所提取的有效载荷通过进程间路径132发送到fc网络垫片代码126,然后,该fc网络垫片代码通过进程间路径130将传入数据、ip头部和tcp头部发送到网络堆栈108。网络堆栈108进而通过套接字层114将传入数据发送到程序119。
53.图2示出了scsi命令分组200(也被称为scsi cdb)的示例。scsi命令分组200包含有效载荷202和scsi命令控制信息204。
54.scsi命令分组200的有效载荷202包含以太网头部206、ip头部208、tcp头部210和程序数据212,如要由程序119发送或接收的数据。
55.在一些示例中,fc网络垫片头部214也可以被添加到scsi命令分组200,如为了将有效载荷202与目标边界(如由发送方系统或目的地系统的(例如,fc接口的)硬件指定的边界)对齐。而且,fc网络垫片头部214可以用于允许scsi命令分组200中的ip头部是4字节或8字节对齐的。如果ip头部的大小是4字节的倍数,则ip头部是4字节对齐的,并且如果ip头部的大小是8字节的倍数,则ip头部是8字节对齐的。添加到fc网络垫片头部214的信息允许有效载荷202和/或ip头部与目标边界对齐。另外,fc网络垫片头部214可以包括要在发送方系统中的fc网络垫片代码与目的地系统中的fc网络垫片代码之间传送的附加信息。fc网络垫片头部214可以由发送方系统的fc网络垫片代码添加,并且由目的地系统的fc网络垫片代码删除。
56.在其他示例中,fc网络垫片头部214被省略。
57.scsi命令控制信息204可以包括操作码和命令特定的参数。操作码可以指定要执行的scsi操作。
58.在一些示例中,为要用于如上文所讨论的在命令分组(例如,scsi cdb)中携带(例如,程序119的)程序数据的每个fc端口(例如,150)创建唯一mac地址和唯一ip地址。例如,唯一的mac地址和ip地址的创建可以由fc网络垫片代码126作为如上文进一步讨论的fc网络垫片代码126向网络堆栈108注册虚拟以太网设备的一部分或在其之前执行。可替代地,唯一mac地址和唯一ip地址由系统100中的不同实体创建,如由内核、程序119、用户或另一实体创建。在后一种情况的示例中,可以将唯一mac地址和唯一ip地址提供给fc网络垫片代码126,以供fc网络垫片代码126使用。
59.在一些示例中,唯一mac地址可以从与fc端口150相关联的信息中得到。例如,唯一mac地址可以由以下函数来产生:该函数接收与fc端口150相关联的信息作为输入,并且产生唯一mac地址(例如,48位mac地址或不同长度的地址)作为输出。与fc端口150相关联的信息可以包括fc端口150的全球通用名称(wwn)、fc端口150的端口配置、系统100的序列号等中的任一项或某种组合。产生唯一mac地址的函数可以将任何前述信息的各部分级联起来以产生唯一mac地址,或者可以对前述的信息应用任何其他算法(例如,比特移位、哈希等)。
60.在一些示例中,唯一ip地址可以采用ipv6链路本地ip地址的形式,其格式如下:
61.前缀中间值接口id11111111100接口id值
62.在ipv6链路本地地址中,将前缀设置为指定值,中间值均为(具有特定长度的)二进制0,并且将接口id值设置为基于与fc端口150相关联的信息的值。例如,可以将接口id值设置为等于fc端口150的wwn,或设置为从fc端口150的wwn得到的值,或者可以设置为等于基于与fc端口150相关联的信息的任何其他值。在其他示例中,前缀和中间值可以具有其他值。
63.尽管提供了有关如何创建唯一mac地址和唯一ip地址的特定示例,但是应注意,可以以不同的方式创建唯一mac地址和唯一ip地址,以用于通过fc网络104传送以太网数据。
64.图3示出了其中图1的fc网络垫片代码126被实施为内核空间116中的fc网络垫片驱动126-1的示例。fc网络垫片驱动126-1使用上文讨论的唯一mac地址和唯一ip地址。fc网络垫片驱动126-1将唯一mac地址作为源mac地址插入到以太网头部中,并且将唯一ip地址作为源ip地址插入到ip头部中,其中,该以太网头部和该ip头部将与tcp头部和传出数据一起被包括作为要由系统100发送的scsi cdb的有效载荷的一部分。
65.对于传入的scsi cdb,将fc网络垫片驱动126-1所使用的唯一mac地址作为目的地mac地址包括在以太网头部中,并且将fc网络垫片驱动126-1所使用的唯一ip地址作为目的地ip地址包括在ip头部中。
66.在图3的示例中,scsi层134和fc驱动136是内核空间116的一部分。
67.图4a示出了其中图1的fc网络垫片代码126被实施为用户空间118中的fc网络垫片模块126-2的另一示例。
68.用户空间fc网络垫片模块126-2向网络堆栈108注册内核虚拟网络设备(统称为tun/tap设备404)。tun是“tunnel”的缩写,并且模拟网络层设备。例如,tun在第3层中运行并携带ip分组。tap是“网络tap”的缩写,并且模拟数据链路层的设备。tap在第2层中运行,并且携带以太网帧。用于tun/tap设备404的tun/tap驱动可以是os内核(如linux内核或另一os的内核)的一部分。
69.用户空间fc网络垫片模块126-2能够从tun/tap设备404进行读写。响应于tun/tap设备404的用户空间fc网络垫片模块126-2的读取,tun/tap驱动将数据从网络堆栈108发送到用户空间fc网络垫片模块126-2。响应于tun/tap设备404的用户空间fc网络垫片模块126-2的写入,tun/tap驱动从用户空间fc网络垫片模块126-2接收数据并将该数据转发到网络堆栈108。
70.tun驱动使用如上文所讨论创建的唯一ip地址,并且tap驱动使用如上文所讨论创建的唯一mac地址。更具体地,对于传出数据,tun驱动向用户空间fc网络垫片模块126-2提
供ip头部(包括唯一ip地址)、tcp头部和数据。tap驱动向用户空间fc网络垫片模块126-2提供以太网头部(包括唯一mac地址)、ip头部(包括唯一ip地址)、tcp头部和数据。用户空间fc网络垫片模块126-2接收以太网头部、ip头部、tcp头部和数据,并将接收到的信息提供给scsi层134以包括在scsi cdb的有效载荷中。
71.在图4a的示例中,scsi层134和fc驱动136是用户空间118的一部分。
72.图4b示出了其中图1的fc网络垫片代码126被实施为用户空间118中的fc网络垫片模块126-2的进一步示例,类似于图4a的布置。然而,在图4b中,scsi层134和fc驱动136是内核空间116的一部分。
73.图5是根据一些示例的第一系统500的框图。第一系统500包括硬件处理器502(或多个硬件处理器)。硬件处理器可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、或另一硬件处理电路。
74.第一系统500包括fc接口504,该fc接口用于通过fc网络506进行通信。
75.第一系统500包括网络堆栈508,该网络堆栈具有网络层510(例如,ip层)和传输层512(例如,tcp层)。
76.第一系统500包括存储有机器可读指令516(例如,图1的fc网络垫片代码126)的非暂态机器可读或计算机可读存储介质514,这些机器可读指令可在硬件处理器502上执行以执行各种任务。可在硬件处理器上执行的机器可读指令可以指可在单个硬件处理器上执行的指令或可在多个硬件处理器上执行的指令。
77.机器可读指令516包括用于产生包括有效载荷的命令分组的命令分组产生指令518,该有效载荷包含用于传输到第二系统520的数据,其中,该有效载荷进一步包含用于网络层510和传输层512的头部,并且该命令分组是根据存储接口协议(例如,scsi协议)。
78.fc接口504用于通过fc网络506传送命令分组。
79.在一些示例中,机器可读指令516处于第一系统500中的内核空间中。在其他示例中,机器可读指令516处于第一系统500中的用户空间中。在机器可读指令516处于用户空间中的后一种情况的示例中,第一系统500还包括机器可读指令516可以与之交互以在网络堆栈508与fc接口504之间进行通信的内核虚拟网络设备(例如,上面讨论的tun/tap设备)。
80.在一些示例中,由命令分组产生指令518产生的命令分组的有效载荷进一步包括数据链路层头部(例如,以太网头部),该数据链路层头部用作由机器可读指令516提供的虚拟以太网抽象的一部分。虚拟以太网抽象涉及将基于fc的连接作为虚拟以太网链路呈现给网络堆栈508。
81.图6是存储有机器可读指令的非暂态机器可读或计算机可读存储介质600的框图,这些机器可读指令可由系统(例如,图1中的100或图5中的500)执行以执行各种任务。
82.机器可读指令包括命令分组提供指令602,该命令分组提供指令用于将有效载荷包括在根据存储接口协议(例如,scsi协议)的命令分组中,该有效载荷包括传输层头部、网络层头部以及从具有传输层和网络层的网络堆栈接收的传出数据。
83.机器可读指令包括命令分组发送指令604,该命令分组发送指令用于通过fc接口向fc网络发送命令分组。
84.图7是根据一些示例的过程700的流程图,该过程可以由系统(例如,图1中的100或图5中的500)执行。
85.过程700包括内核空间网络堆栈(例如,图1中的108或图1中的508)从用户空间程序(例如,图1中的119)接收(在702处)传出数据。
86.过程700包括内核空间网络堆栈向垫片指令(例如,图1、图3或图4中的126-1或126-2)发送(在704处)传出数据以及传输层头部和网络层头部。
87.过程700包括:通过垫片指令向存储接口层(图1、图3或图4的scsi层134)提供(在706处)传出数据、数据链路层头部、网络层头部和传输层头部,该存储接口层将传出数据、数据链路层头部、网络层头部和传输层头部封装在根据存储接口协议(例如,scsi协议)的命令分组的有效载荷中。
88.过程700包括通过fc接口使用fc帧来向fc网络发送(在708处)命令分组。
89.在进一步示例中,过程700可以进一步包括:通过fc接口接收传入fc帧;以及基于传入fc帧来提取所接收的包括有效载荷的命令分组,该有效载荷包括传入数据、传入数据链路层头部、网络层头部和传输层头部。传入数据、网络层头部和传输层头部被提供给网络堆栈,并且网络堆栈向用户空间程序提供传入数据。
90.存储介质(例如,图5中的514或图6中的600)可以包括以下各项的任一项或某种组合:半导体存储器设备,如动态或静态随机存取存储器(dram或sram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和闪速存储器或其他类型的非易失性存储器设备;磁盘,如固定的软盘和可移动盘;另一种磁介质,包括磁带;光学介质,诸如光盘(cd)或数字视频盘(dvd);或另一类型的存储设备。应注意,上文讨论的指令可以在一个计算机可读或机器可读存储介质上提供,或者可替代地,可以在分布在具有可能多个节点的大型系统中的多个计算机可读或机器可读存储介质上提供。这种一个或多个计算机可读或机器可读存储介质被认为是物品(或制品)的一部分。物品或制品可以指任何制造的单个部件或多个部件。一个或多个存储介质可以位于运行机器可读指令的机器中、或者位于远程站点处,可以通过网络从所述远程站点下载机器可读指令以供执行。
91.在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1