硬件软件架构设计乱侃

简介: 这篇文是我在今天工作休息之余写下来的,乱侃侃,偷懒一下,呵呵。 首先,我的原本专业是电子信息科学与技术,所以对一些芯片级硬件和软件比较感兴趣,但我现在的工作是软件设计师,又对计算机软件有较深入的理解。

      这篇文是我在今天工作休息之余写下来的,乱侃侃,偷懒一下,呵呵。

首先,我的原本专业是电子信息科学与技术,所以对一些芯片级硬件和软件比较感兴趣,但我现在的工作是软件设计师,又对计算机软件有较深入的理解。闲暇之余,我喜欢看硬件相关的书籍,特别对计算机硬件比较痴迷。其实早在06年学习软件架构设计的时候,我就常乱想设计软件架构。这里说说,一部分中国人的特点,就是从模仿开始。火车不会造,先买别国的火车,然后研究,接着自己造,比买的便宜,搞得人家都不敢卖先进的东西给国人了。软件也一样,架构方面,先学习前人的经验,学习开源的架构特点,然后根据自己实际环境设计架构。(我这里完全没有贬低国人的意思,就是说说,自己有技术有一套做法,自己没技术有另一套学习和实践的做法)

先说说硬件,著名的IntelAMD,还有IBM,都是计算机硬件的领跑者了。有时候他们会发布自己的硬件架构设计图,以及产品发布路线图等等。我就不自然的会多关注(老专业职业病吧),在看这些硬件架构图的时候,我会去分析,哪个是核心,哪个是缓存,哪个芯片组处理显示,哪个芯片组处理外存等,自己痴迷(没办法,我是硬件发烧友)。

再说说软件,且不说微软,也没办法,谁让咱也是靠他们的系统平台吃饭呢,怪不得盖茨在欧洲演讲时曾经叫嚣如果没有微软那有多少人失业,呵呵。还有就是开源社区的蓬勃发展。软件业的发展也算很迅猛了。目前基本上形成很多理论,包括软件工程(我没看过硬件工程的书籍,呵呵。),设计模式,架构设计等等,可谓是百花齐放了。

对比硬件和软件的架构设计,我就常想,其实所有的设计,无论是硬件,或者建筑学,还有制造业,还是软件,室内设计等等,它们的架构设计原理应该是一样的,应该是可以相互借鉴的,就象道理是相通的一样。

但是,软件业内一直没有形成一套统一的架构。而硬件却实现了统一架构,然后使用统一的外接独立的硬件设备来运行,即定义好了接口,所有外设都往上面靠拢。软件只形成了一套设计的理论,设计的模式,没有形成一套统一的系统。然则,实际情况中,往往很多系统都是在做重复的工作,即不同的企业,不同的业务领域,一再的重复着相同的应用系统设计开发。为什么软件业不能形成一套固定的架构呢?对比起来,一个原因估计是软件的需求是以业务为对象的,正是因为不同的业务产生了不同的各种各样的软件应用系统。

硬件有硬件的特点,软件有软件的好处。硬件离开软件是没有意义的,没有存在的价值。不过,我还是想设计一套统一的软件架构系统,虽然不少软件都提供了插件的功能,但我还是不满足,这个只是统一架构的冰山一角罢了。

从硬件的角度出发,硬件的架构设计,其更多的是考虑元器件的特性,依赖于元器件的更新换代来发展,而且同样依赖于组织定义的硬件接口规范。硬件的基础是元器件工艺,焊接工艺。然后是接口间的连接,通信,接口的规范。再有运行速度的提高,通讯速度的提高,存储容量的提高。硬件架构的设计,还要考虑热功耗,成本,复杂度等等。还有重要的一点,硬件的架构掌握在少数企业中,比如Intel这些领跑者了,而接口的规范,却掌握在一些临时联合起来的企业,比如惠普,索尼之流。

根据硬件的理论,只要提高了依赖基础对象,那么就能提高、促进更快的发展。软件的基础,按照以前的说法,就是算法+数据结构,面向过程,面向数据的开发方法。现今已逐步转变为面向对象,面向方法,面向服务的编程模式了。从这点出发分析,限制软件发展的不是编程语言,而是设计方法。不同的设计者,不同的水平,设计出来的系统就不同,架构也就不同。软件架构的设计,也要考虑成本,复杂度,稳定性,可靠性,重用性等等。软件的架构掌握在少数大型的软件企业,比如微软等,还有开源社区的辛勤的架构设计劳动者们。软件的接口规范,往往依赖于实际应用中的系统业务。

硬件已经实现了统一架构。那么,怎么样才能设计统一架构的软件系统呢?这里再说下,软件之所以是软件,因为它具有非常大的灵活性,如果象硬件那样统一了架构,那么可能就限制了它的发展。本文只从软件统一架构系统出发乱侃,暂且撇开这点限制。受限于目前的编程语言,设计模式,领域业务,这个想法能实现么?软件系统的根本,数据这个对象本身就是不一样的了。不过,有一点可喜的成果是,内容管理系统(CMS)的出现是一大进步。但是它也仅能适应那些单一、相对简单些的应用。比如建站系统,论坛等等,还是没有实现软件统一架构的思想。引擎这个概念的实现也是非常好的突破。根据理论相同的道理(我是这么认为的),以硬件设计的思想出发,统一架构的软件系统应该是一个浑身都是接口的产物。它需要一个运行引擎对象,需要数据总线接口对象,需要指令运行接口对象,需要一个存储对象,需要一个显示对象,需要多个数据交互接口对象,再有,就是这些对象之间通讯的处理对象等等了。这么个系统能造出来么?至少我目前的尝试有一定的困难(有进度,但进展相对缓慢),呵呵。

限于时间问题,本文只开个头,投石问路,后续想到什么再侃。大家对软件的统一架构思想有什么意见或建议,欢迎留言赐教,本人洗耳恭听。

 

 

Austin Liu 刘朝辉

Software Designer and Project Consultant

2009827星期四【牛】壬申月甲辰日己丑年七月初八

目录
相关文章
|
8月前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
6月前
|
机器学习/深度学习 人工智能 并行计算
N卡和A卡的硬件架构比较与选择指南
N卡和A卡的硬件架构比较与选择指南
|
3天前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
6月前
|
机器学习/深度学习 算法 网络架构
【YOLOv8改进 - Backbone主干】EfficientRep:一种旨在提高硬件效率的RepVGG风格卷积神经网络架构
【YOLOv8改进 - Backbone主干】EfficientRep:一种旨在提高硬件效率的RepVGG风格卷积神经网络架构
|
5月前
|
机器学习/深度学习 Linux PyTorch
跨平台 DataLoader 实现:支持多种操作系统和硬件架构
【8月更文第29天】在深度学习项目中,数据加载和预处理是非常重要的步骤之一。一个良好的数据加载器(DataLoader)能够显著提升模型训练的速度和效率。随着深度学习应用的不断扩展,对于能够在不同操作系统和硬件架构上无缝运行的数据加载器的需求也日益增长。本文将探讨如何设计和实现一个跨平台的 DataLoader,确保其兼容性和可移植性。
81 0
|
5月前
|
存储 缓存 监控
X86架构服务器硬件设计
8月更文挑战第16天
147 0
|
6月前
|
机器学习/深度学习 人工智能 并行计算
N卡和A卡的硬件架构比较与选择指南
N卡和A卡的硬件架构比较与选择指南
|
7月前
|
监控 安全 自动驾驶
基于java+单体服务 + 硬件(UWB定位基站、卡牌)技术架构开发的UWB室内定位系统源码 UWB定位技术 超宽带定位 高精度定位系统源码
基于java+单体服务 + 硬件(UWB定位基站、卡牌)技术架构开发的UWB室内定位系统源码 UWB定位技术 超宽带定位 高精度定位系统源码
76 3
|
8月前
|
安全 前端开发 Linux
DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件
DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件
99 0
|
8月前
|
机器学习/深度学习 存储 算法
【GPU】深入理解GPU硬件架构及运行机制
【GPU】深入理解GPU硬件架构及运行机制
965 0

热门文章

最新文章