软硬件开发行业是怎么开发的?

扫一扫,随时随地挑选人才和公司
无线工作台,管理更高效更自由
微信公众号
随时掌握一手资讯
需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金网站抢先做,开年省心用好站
质量:0.00
速度:0.00
态度:0.00
近三月收入:0元 0 笔
单片机相关软硬件开发
手机扫码下单,便捷优惠
数量件
业务范围:单片机STC89系列,STM32系列,8051核系列等等;&&&以微处理器为核心的软硬件开发。&&流程&&&&&:先确定商榷需求,然后制定项目计划,一般小型项目&1~2周可以完成。&&&承诺&&&&&:我们团队承诺以最好的技术服务于您。
服务宝,全程保障交易安全
验收合格后,再付款给服务商
所有服务商,100%实名认证
交易出问题,可获保证金赔付
承诺不向雇主收取任何费用
担保交易,交易全程护航
交易遇到以上问题&&雇主可获保证金赔付
内容声明:
猪八戒网为第三方交易平台及互联网信息服务提供者,猪八戒网(含网站、客户端等)所展示的商品/服务的标题、价格、详情等信息内容系由店铺经营者发布,其真实性、准确性和合法性均由店铺经营者负责。猪八戒网提醒用户购买商品/服务前注意谨慎核实。如用户对商品/服务的标题、价格、详情等任何信息有任何疑问的,请在购买前店铺经营者沟通确认;猪八戒存在海量店铺,如用户发现店铺内有任何违法/侵权信息,请立即向猪八戒网举报并提供有效线索。
&&诚信度:
本店其他官方套餐
正在加载类似服务...
本店其它服务
正在加载类似服务...软件是怎样控制硬件的? 软件是怎样控制硬件的? 说创业百家号是不是软件想要的功能,硬件都能实现?回答关注(166)|查看更多问答13个回答烧鹧鸪06-09 19:013赞踩这里的硬件应该是指以数字电路组成的计算设备,而数字电路是由逻辑门电路组成的,逻辑门的一种实现具体可以参见高教版的数字电路,这些逻辑(与、或、非、异或等)门是实现各种逻辑操作的基石,也就是计算设备中的指令,这些指令由计算设备的外部或内部引脚提供输入,然后依然通过类似引脚提供输出。而处理器一般都是由晶振来驱动。软件就是一系列指令和数据的集合。很多人说一条汇编对应一条机器指令,这是不对的,因为汇编中有伪指令。如果想了解软件执行流程,学习汇编是绝佳的手段。我尽量通俗的解释软件的执行流程。我们以过去的的操作系统为例,软件启动时,将软件的执行体映射到固定的内存地址(出于安全原因,现在该地址是动态的),将指令指针寄存器(CPU总是从该寄存器读取下一条指令执行)入栈(即保存),并将其跳转到该软件的代码段开始执行(以前是靠段地址+偏移地址进行寻址的),段就相当于一个大窗口上的小窗口,段地址就是小窗口的起始地址,CPU不允许同时操作整块物理内存(现代操作系统不允许操作段寄存器,软件看到的始终是虚拟内存),至此,我们的程序就愉快的开始执行了,直到执行完毕,指令指针出栈(即恢复),相当于又将操作流程归还给了操作系统,因为以前的软件是独占整个计算机资源,软件执行时,操作系统此时就被挂起了,应用软件很容易就造成操作系统崩溃,比如将指令指针悄悄的改上一改。这就是软件执行的全过程了。请多多点赞评论东渡科技05-12 10:3636赞踩关于这个问题,已经写成一篇文章,内容如下,要想深入了解计算机,先学一下操作系统和微机原理吧!软件怎么控制硬件的,不是一言半语就能说的清楚的,其过程是很复杂的,这里就简单说一下原理吧,没有看过微机原理和操作系统相关的介绍听起来应该会比较吃力。我们所说的软件,其实就是一套操作计算机运行的机制,里面的所有功能,不论大小,都是需要硬件配合才会展示出来的。在软件中,需要编程语言,这些编程语言都是高级语言,这些高级语言是为了我们更容易编译操作而编写的,硬件是看不懂的,是需要经过翻译,翻译成为机器语言,然后计算机才看的懂,进而执行简单的操作。无数简单的操作就成了软件所需要的功能,然后通过机器展示出来。机器语言是非常简单的,因为机器的每个部件的功能都是固定的,所以要完成一个复杂的动作,需要把相关的部件按一定的规律有序完成才行,这其中有多复杂想想也应该知道。机器能接受的指令就只有有2个,固定一个动作,做或不做,在计算机中是以2进制标记的,也就是1和0,指令为1,就做该动作一次,指令为0,就不做该动作。大量固定的动作根据一定的规律有序的成功做完,就组成软件中所需要完成的一个功能。这就和弹钢琴是一样的,每一个音符需要你按一个键,每按一次就是一次动作,大量有序的按键就展示出了一首曲子,计算机的动作和钢琴的琴键是一样的道理。最早的时候,软件编程就是大量的机器指令堆砌,工作量非常庞大,且内容复杂无比,维护起来非常麻烦,所以才有机器语言的诞生,就是计算机出厂前计术人员已经把固定的指令操作打包了组成了一个又一个的相对复杂功能,只要计算机软件调用触发这些功能就可以展示相应的功能了,这一层的语言就是计算机语言了,汇编语言就是这一层面的,汇编编程是非常麻烦的,代码量大,工作量也吓人,但是,功能和运行速度也强悍的吓人,任何高级语言都无法比拟,算是软件开发真正的核心技术所在。我们现在所说的软件编程,用的就是比计算机语言高一层的语言,也就是高级语言,像如今流行的语言C/C++、Java、PHP、js等都是高级语言。用这些高级语言几行代码展示的功能,在计算机执行的时候仍然是非常复杂的行为,所以不要认为会编程就认识了计算机,真正深究,核心技术的复杂程度绝对超乎你的想象。看到这里,心理是不是已经有了答案,硬件是不可能完成你所有想要的功能的,软件可以展示的功能都是计算机固有的功能,功能有多强大主要取决于计算机的硬件。简单来说,软件就像是人的思想,硬件就是人的身体,身体的所有动作都是思想赋予的。但不合实际的想法身体是不可能完成的。文章原文:http://www.toutiao.com/i2427649/更多软件学习相关知识,请搜索东渡科技。13评论铨Chen05-11 15:3315赞踩硬件就是电路,软件和硬件所存储的信息的本质其实就是电路上一些开关的状态,只不过现代计算机的集成电路规模之大使其产生质的转变。就最简单的举例,家里走廊一盏灯有两个开关,按其中任何一个,无论另一个开关的状态如何,都会改变灯的状态(开的就关,关的就开)。或者说必须两个都是关的,灯才会关,否则就是开的。这就是一个简单的逻辑电路,电脑就是上亿个这种电路的结合体。软件和任何存储的信息就是这些开关的状态,开还是关。以廊灯的例子来说,硬件的功能是受到物理法则约束的,它的可能性只有开合关。无论你怎么按动开关都不可能造成开灯和关灯以外的状态。电脑也是一个道理,任何被物理法则允许的硬件行为理论上都有可能用软件实现。比如说手机的显示屏理论上可以显示任何画面,闪光灯可以用来发光(到一定的亮度),扬声器可以用来说话等。但是没有软件可以让手机飞起来变成无人机。软件和信息本身也是没有明确分界线的,现代操作系统因为内存很大所以可以人为划分哪些信息是用来定义逻辑关系,哪些是要用来运算的。几十年前电脑刚发明的时候内存受限制,软件和信息都是混合在一起录入的以节省内存和带宽。现代的划分只是方便人类程序员去理解程序的工作方式。本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。说创业百家号最近更新:简介:软硬件,手机数字,行业趋势,技术探索作者最新文章相关文章他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)股票/基金&
深度分析:高频交易软硬件是怎么架构的?
  首先,高频交易不一定是套利算法。事实上HFT做的最多的业务是做市(market making),可以是把商品从一个交易所倒卖到另一个交易所,也可以是在同一个交易所内部提供某种商品的流动性。这两种方式的共同点都是让人们可以特定地点买到本来买不到的商品,所以本身就是有价值的,收服务费就可以盈利。
  二,延迟和流量是不同的概念。低延迟不等于高数据量,事实上大部分时间交易数据流量并不大,一个market一天最多也就几个GB。但HFT系统需要在流量时也能快速响应,所以更看重延迟。这也是HFT系统和互联网系统最大的区别所在,HFT系统的精髓在于把单机的软硬件系统的性能发挥到极致,而不是像互联网那样强调高负载和延展性,动辄用几千台机器搭集群的做法在这里是不适用的。用互联网系统的性能指标来认知HFT系统也是没有意义的,像淘宝这样的应用需要保证交易的正确和一致性,包括从终端用户的浏览器到淘宝后台到银行接口之间一系列复杂的事务性数据操作,这个场景和HFT直接对接交易所走高速线路收发交易指令有天壤之别,不能用同样的思维去理解。
  三,一个HFT业务包括从主机到交易所的整条通信线路,在这条线路上有很多段不同的延迟,是需要分开讨论的。如果是做跨交易所的交易,首先需要考虑的是两个交易所之间的网络延迟。当数据通过网络到达主机的时候,有一个最基本的tick-to-trade延迟,是指主机接收到数据到做出响应所需的时间。但这个东西的测量很有技术含量,根据不同的测量方式,它可能包括或不包括网卡及网络栈的处理时间。所以拿到一个HFT系统的延迟数据时,首先要搞清楚它指的是什么,然后再来讨论。
  题主提到从一个直连计算节点的router的角度来观测,这是一个理论上看起来可行但实际仍然很模糊的概念,因为一般router本身是不做存储和处理的,一个router会收发大量不同的数据,要理解一个接收到的包是对之前发出去的某个包的“回应”,是需要相当的处理逻辑的,一般很难这样测。比较合理的测试仍然是在主机端做记录,测试从收到市场数据(tick)的TCP/UDP包到发送交易指令(trade)包的时差。目前(2014)的情况是,这个延迟如果平均控制在个位数字微秒级就是顶级了。因为网络传输才是延迟的大头,如果网络上的平均延迟是1毫秒(1000微秒)以上,你的单机延迟是2微秒还是20微秒其实是没有区别的。一般单机比网络低一个数量级就可以了,比如网络上需要100微秒(很现实的数字),单机控制在10微秒足以保证速度上没有劣势。至于公众报道,有时是为搏人眼球,难免有夸大的成分,不必太当真。
  接下来说说做为一名从业者,我对各个层面的理解。
  首先网络架设上光纤肯定是最差的方案。国外几个主要的交易所(同一洲内)之间基本上都有微波(microwave/milliwave)线路,比光纤的延迟要低很多,延迟敏感的应用一定要选择这种线路。这个差距首先受制于光在光纤中的传播速度只有在空气中的2/3左右,另外在大城市建筑密集地区(也正是一般交易所的所在地),光纤的复杂布线会进一步增大延迟,差距可能增至2到3倍。要想对此有一个具象的概念,只要看Quincy Data的这张线路图:
  但微波技术有两个主要的缺点,第一是微波在空气里传播受天气影响很大,刮风下雨都会导致通信受损,有时直接故障,所以需要备用的光纤线路,以及监控天气…… 这方面进一步的发展可能是激光技术;第二是带宽太小,如果是跨交易所的业务,不可能通过微波来转移大流量的市场数据,只能用来收发下单指令,这方面有一些潜在发展空间,比如可以做一点有损压缩,传一个缩减版的市场数据,也能起到加快信息传递作用。这块网络服务本身就是一个独立的业务了,一般所说的colocation也是由服务商负责的,HFT主要需要的是选择适合自己的服务商。
  网络线路确定以后,数据就送到了HFT主机。这时候需要决定网卡的方案,专用的网卡除了自身硬件的设计外,一定需要的是切换掉系统自带的kernel space TCP/IP stack,避免昂贵的context switching。网络栈上的I/O延迟,收包发包加起来做到2~3微秒是可以的。这个层面上FPGA是很有应用价值的,因为可以做一些额外的逻辑处理,进一步解放CPU。
  对于FPGA,业务逻辑烧到硬件里的开发,调试成本和周期都是很难承受的,不看好做为长期发展的路线,这个东西其实和套利,数学模型一样是赚外行眼球的东西。但做专用的网络I/O设备却是比较有优势的。(这里可以另举一个例子以供思考FPGA的特点和适用性,目前很多主流交易所的技术架构上,为了适应高速交易的需要,市场数据是采取UDP双通道的方式发放的,即同一份数据发到两个UDP broadcast channel上。客户端需要自行收发排序,大家可以思考一下这种数据要如何编程才能高效稳定的处理,开发过程需要如何调试测试,如果数据协议发生变化要如何处理?FPGA在这种场景中又该如何应用?这当然是开放问题,但是应该有助于理解真实的需求。)
  网络部分的问题解决以后,最后就是核心的业务逻辑的处理。这部分也许会用到一些数学建模,但是没有什么神话,不是什么菲尔兹奖得主才能搞的东西(那些人的用武之地更多是去投行那边做衍生品,那才是真正需要高等数学的东西)。很多时候核心的还是延迟,这个在计算机内部分两个部分,一是core的使用率,比如irq balance,cpuisol,affinity等,主要是要尽可能的独占core;另一个是cache invalidation,从L1/L2/L3 cache到TLB,page fault,memory locality之类都要仔细考虑,这个更多考验的是对体系结构的理解和程序设计的功力,跟语言的关系不大。
  具体选择那种语言,首先是取决于公司的技术积累和市场上的技术人员供给。函数式语言(erlang/ocaml等)的好处是语言表达能力强,开发速度快,逻辑不容易出错,但相对的对机器底层的控制差一些,有时候他们的编译器或运行时干了什么不太容易搞清楚,所以在性能上的调优会比在C++之类投入更多一点,这里面有一个取舍问题,要根据公司情况来具体分析。
  业务逻辑部分其实相当简单。做这种高速交易肯定不会有什么凸优化,解微分方程之类复杂的运算。核心的部分一般就是加加减减,比比大小什么的。业务逻辑本身的处理完全可以做到纳秒级,如果看到有人宣称他们的延迟是纳秒级,一般是指这种。
  操作系统同样是一个不需要神话的东西,普通的linux已经有足够的空间用来做性能优化。简单说,一个企业级的linux(如redhat)加上通用的架构(intel主流处理器)足以做到市面上已知的最低延迟,不必幻想有什么奇妙的软硬件可以做到超出想像的事情。
  另外需要提醒大家注意的是,其实做一个低延迟系统,首先需要考虑的不一定是延迟能降到多低,而是怎么测量系统的延迟?对一个HFT系统来说,所谓的tick-to-trade延迟,一定要有既精确又不影响系统性能的测试方法才有意义。可以想像一下,最理想的测试场景一定是你的系统真正运行在直连交易所,有真实的市场数据传入的情况下,并且测试的代码就是真正的交易算法时,得到的数据才有意义。如何得到这个苛刻的测试环境,以及如何测量系统的各个部分的延迟,是一个非常有技术含量的工程,难度往往并不亚于系统设计本身。
  最后说点题外话,技术发展是非常快的,在这个时代没有什么秘密能永久保鲜,HFT/low latency trading也不例外。现在欧美在这方面的市场已经逐渐趋近饱和,毕竟软硬件的性能都是有上限的,当大家都能达到微秒甚至纳秒级时,仅仅靠拼速度就没那么大优势了。目前虽然拼速度仍然有盈利空间,但是长远来看一定需要在保证速度的基础上增加算法智能性和系统稳定性,从这个角度上说像把全部算法都烧进FPGA的做法是很难维持的,开发周期和成本都太高了。接下来真正有挑战的应该是高速系统和大数据的结合,这应该是一个很有想像力的空间。
  【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
10/04 08:2509/29 11:3509/29 00:2509/18 18:5909/17 17:0009/04 10:1709/02 01:0709/01 00:31
期货精品推荐
每日要闻推荐
社区精华推荐
精彩策划推荐
  【独家稿件声明】凡注明“和讯”来源之作品(文字、图片、图表),未经和讯网授权,任何媒体和个人不得全部或者部分转载。如需转载,请与010-联系;经许可后转载务必请注明出处,并添加源链接,违者本网将依法追究责任。软硬件指的是什么?_百度知道
软硬件指的是什么?
软硬件指的是什么?
我有更好的答案
软件是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。另也泛指社会结构中的管理系统、思想意识形态、思想政治觉悟、法律法规等等。计算机的硬件有很多组件构成,它们组装在一起,完成输入、处理、储存、和输出4个功能。因此,可根据它们各自完成的功能,将其分为5类。1. 输出设备(显示器、打印机、音箱等)2.输入设备(鼠标、键盘、摄像头等)3.中央处理器4.储存器(内存、硬盘、光盘、U盘以及储存卡等)5.主板(在各个部件之间进行协调工作、是一个重要的连接载体)
采纳率:50%
件一般指看得见的比如:显示器、主机、键盘之类的东西。软件是指安装到电脑里使用的一些程序,如你使用word、听歌的,看电影之类的
为您推荐:
其他类似问题
您可能关注的内容
软硬件的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 嵌入式软硬件开发 的文章

 

随机推荐