navarra 发表于 2014-9-1 21:25

【代发】PS4编程的点点心得

我的好友最近在日本某公司进行ps4的底层开发工作,感触良多,由于没有发贴权限,委托我进行代发,他会对一些其他问题进行回复,以下正文现在还是实习生,来年正式工作,不过已经开始给PS4写底层代码了
感想就一个,这“次时代”简直就是笑话
不过说坏话之前说点好话吧,这代主机内存够用是真的
可以直接支配的内存有4.5G,可以从系统借来的内存外加448MB,接近5G内存
跟PS3的120~170M(根据你调用的系统库的数量而不同)简直是天地之差
我甚至花了半天时间写了一个简易的读取缓存——还是用不完(大概是跟我还没机会编写3A大作有关吧)
嗯,这是我能想到PS4的唯一的好处了。剩下的,就是各种无语,郁闷,以及失望。
首先,这CPU没有L3缓存,而且,8核之中是两个4核胶水上的。能用的只有6核就是了。
一个4核被SCE称作“一个集群”,由于没有L3缓存,L2分别由各个集群独享,
所以线程调度时如果一旦被调度到另一个集群,等待着你的就是通过主内存同步前后文数据了——非常慢。
对,说到内存,GDDR5,172GB/s,听起来很美好……但这只是对GPU而言,CPU访问速度只有12GB/s。
更甚,GPU如果试图访问通过CPU缓存的区域,带宽只有20GB/s。
172GB/s?CPU没缓存,读取速度是MB级别的。CPU想访问?GPU带宽只有20GB。
回到CPU,我实在是不明白AMD是抽了什么风,怎么能设计出这么个奇葩玩意。
主频是1.6GHz。1.6GHz!!!我活在什么年代?感觉一夜回到解放前。
而且,不支持FMA……AMD如此推崇的FMA,居然不支持!?本来频率就够低,这样一来性能更上不去。
还有,AVX。是的,AVX是支持的。但是,ALU只有128bit。没错,你需要两个时钟周期执行一个AVX指令!
我想问AVX的意义何在?那256bit寄存器是摆样子看的?
接下来说说GPU。次时代主机里面现在完全就是矮子里拔高个的状态。PS4的GPU接近于R7 265……也就是个主流级别。
于是,GPU很不给力,咱们用GPU通用计算一个是吧?很遗憾,这玩意不支持OpenCL。
你需要编写一个“Compute Shader”,没错,你需要编写一个计算用着色器! 然后把数据预备好,
准备一些GPU渲染指令(当然不是真的来渲染的),给GPU发送指令“执行”,然后等结果。
当然,如果计算是非同步的,不需要前后文相关,相信性能还是可以很不错的,但是这世上有很多运算
你还是需要等前一个计算的结果来进行接下来的计算的。于是,GPU同步又会增加很多Overhead……
总比没有好就是了。
还有一点,这GPU它没有硬解。它没有硬解!!!我又有了一种回到了解放前的感觉!!!
SCE官方提供的解码方案是,CPU负责Demux和CABAC解码,GPU负责iDCT,运动补偿以及Deblock。
即便如此,CPU依然太贫弱。怎么办?SCE官方解决方案:请用4Slice进行压制(这样可以4线程解码,
但是牺牲压缩效率)。即便如此(又一遍),720p30的视频大致需要~20%的CPU,1080p30的视频需要30~40%
1080p60需要超过50%的CPU占用率……
剩下的东西(视频压缩)之类的还没用上,暂时就不发表评论了

里包恩 发表于 2014-9-1 21:38

gane1010 发表于 2014-9-1 21:46

本次代 xone wiiu ps4哪个开发是最坑爹的?

天气姐姐 发表于 2014-9-1 21:46

肯定有ff15的开发人员跳出来打脸

----发送自 HTC HTC 919d,Android 4.4.2

体制的错 发表于 2014-9-1 21:48

查理·布朗 发表于 2014-9-1 21:54

LZ的好友是哪家日本公司的?这是我唯一关心的!ps4机能低常常听到,难开发我到现在还是第一次听到。

endrollex 发表于 2014-9-1 21:57

PS3 CPU比较烂?Compute Shader比 OpenCL难用,不过前者是针对游戏的

申请过Xbox One的SDK,结果微软没给我

zikimi 发表于 2014-9-1 21:58

大致就是PS4的CPU部分实在太贫弱,发布时不都知道么,美洲豹构架可是对位atom的

Exm842 发表于 2014-9-1 21:59

我觉得这就是程序员水平了

bloodalone 发表于 2014-9-1 22:06

咦,各方关于ps4开放的主论调不是都说好么

nekomimimisuzu 发表于 2014-9-1 22:07

实习生……

lovehinalove 发表于 2014-9-1 22:09

这是程序员水平问题吧······

正直的黄瓜 发表于 2014-9-1 22:12

体制的错 发表于 2014-9-1 21:48
肯定是Wii U啦,连宫本茂都嫌弃

宫本茂又不编程,瞎说。

liva 发表于 2014-9-1 22:12

拉屎不出赖地硬

风行骓 发表于 2014-9-1 22:13

这帖发硬件区会比较容易讨论起来。游戏区这边给我感觉没什么人真关心硬件

zhaoyanggolden 发表于 2014-9-1 22:17

程序员水平问题,这是做产品又不是搞研发,什么都给你最好的,你来负责多出来的成本吗?

chenke 发表于 2014-9-1 22:40

顽皮狗费了九牛二虎之力才将The Last of Us Remastered搞上1080p60f,阴影效果缩水

程序员在微博上也承认了PS4不那么powerful

w酱 发表于 2014-9-1 23:00

价格这么低的主机,性能达不到主流PC太正常不过了,索尼不是作高端硬件玩具的
低价游戏设备不就是取舍个性能和价格的平衡么

体制改革 发表于 2014-9-1 23:22

winger 发表于 2014-9-1 23:38

我来说一句吧。

这是典型的做惯了PC开发,第一次搞主机开发,完全带着PC开发的眼光看主机开发。

oz01 发表于 2014-9-1 23:41

本帖最后由 oz01 于 2014-9-1 23:54 编辑

还有,AVX。是的,AVX是支持的。但是,ALU只有128bit。没错,你需要两个时钟周期执行一个AVX指令!
我想问AVX的意义何在?那256bit寄存器是摆样子看的?
这位同学还真打算在游戏里用avx么

对,说到内存,GDDR5,172GB/s,听起来很美好……但这只是对GPU而言,CPU访问速度只有12GB/s。
更甚,GPU如果试图访问通过CPU缓存的区域,带宽只有20GB/s。
172GB/s?CPU没缓存,读取速度是MB级别的。CPU想访问?GPU带宽只有20GB。
20G/s都不够用
同学你到底想干啥?
想拿cpu算柔体mesh么

于是,GPU很不给力,咱们用GPU通用计算一个是吧?很遗憾,这玩意不支持OpenCL。
你需要编写一个“Compute Shader”,没错,你需要编写一个计算用着色器! 然后把数据预备好,
准备一些GPU渲染指令(当然不是真的来渲染的),给GPU发送指令“执行”,然后等结果。
当然,如果计算是非同步的,不需要前后文相关,相信性能还是可以很不错的,但是这世上有很多运算
你还是需要等前一个计算的结果来进行接下来的计算的。于是,GPU同步又会增加很多Overhead……
总比没有好就是了。
这位同学似乎对opencl存在不切实际的幻想
通用计算着色器确实麻烦点,可你要真去用opencl那也是把自己往火坑里推
非要用gpu玩串行计算这也是够新颖的了

说到底没事乱搞通用计算你到底要做啥

还有一点,这GPU它没有硬解。它没有硬解!!!我又有了一种回到了解放前的感觉!!!
SCE官方提供的解码方案是,CPU负责Demux和CABAC解码,GPU负责iDCT,运动补偿以及Deblock。
即便如此,CPU依然太贫弱。怎么办?SCE官方解决方案:请用4Slice进行压制(这样可以4线程解码,
但是牺牲压缩效率)。即便如此(又一遍),720p30的视频大致需要~20%的CPU,1080p30的视频需要30~40%
1080p60需要超过50%的CPU占用率……
你真是来开发游戏的?
你难道还要拿1080P的视频当模型贴图不成

pencilnoo 发表于 2014-9-1 23:42

我的理解是文章本身没啥问题,但要只想想历代主机的游戏开发,其实都能挑出各种各样令程序员不满的地方,这毕竟是游戏机,是市场,价格,商业合作和恶性竞争互相调和牵制之后的产物,你不能一股脑拿机能几乎无上限不计成本和优化的高端pc配置比

oz01 发表于 2014-9-1 23:45

w酱 发表于 2014-9-1 23:00
价格这么低的主机,性能达不到主流PC太正常不过了,索尼不是作高端硬件玩具的
低价游戏设备不就是取舍个性 ...

这些问题除了opencl和l3缓存之外
pc都有,部分问题更严重
而且pc上要是游戏用opencl可是个大坑,除非放弃显卡兼容性或者干脆就软加速

asdfg 发表于 2014-9-1 23:49

跟PC比你不是找死么,得纵向跟前几代比啊。97年前后PC是166/200MHz的时候PS主机是33MHz主频,2003年左右PC是2GHz的时候PS2是300MHz,等等…………比起那些时代已经很好了好吗。

darkfall 发表于 2014-9-2 01:06

看上去像是只做过PC完全按照PC看的w

maxine23 发表于 2014-9-2 01:46

狗屁心得,技术的日厂+实习生光这两条就可以知道这文章没啥参考价值了,整篇就是一个不懂主机游戏开发的程序员在那瞎抱怨。

体制的错 发表于 2014-9-2 03:51

franklee28 发表于 2014-9-2 05:07

我倒是觉得就是拿着看高端PC的眼光看主机开发,觉得架构各种坑,机能各种翔而已。。。

eyeego 发表于 2014-9-2 06:57

oz01 发表于 2014-9-2 08:31

darkfall 发表于 2014-9-2 01:06
看上去像是只做过PC完全按照PC看的w

也可能是做过pc,不知道听了什么奇怪的消息,以为ps4就是神仙pc解决不了的东西ps4全能搞定就是速度慢点

lolozp 发表于 2014-9-2 08:58

其实就是中二吐槽,实习生的年纪是频发期,啥事都要发出来让别人关注下

牙鸟 发表于 2014-9-2 09:10

不明觉厉

ReiFukai 发表于 2014-9-2 10:34

长见识

oyss1225 发表于 2014-9-2 11:01

barca 发表于 2014-9-2 12:46

怨妇贴。和pc比有啥意义,主机各平台之间对比才有价值

sourpotato 发表于 2014-9-2 13:40

啥意思?为什么游戏机需要 opencl 。相对于游戏开发opencl 对于compute shader 有什么优势? 有什么事情是opencl能做而compute shader 做不到了。
ps3/ps4 libnm 这个跟opengl/opencl 完全不是一个体系吧。

既然是实习生的意见。真的需要费口水理论么?
页: [1]
查看完整版本: 【代发】PS4编程的点点心得